summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <jonas@perch.ndb.mysql.com>2006-06-26 12:16:39 +0200
committerunknown <jonas@perch.ndb.mysql.com>2006-06-26 12:16:39 +0200
commit7072a63acd51b0b2870b9c14937ff03bd47f8e4a (patch)
treec256ffde0d578f38de0690ef95301c50e2379985
parent505c2b3d5f0178aa9bdb9f97da707104489250a5 (diff)
downloadmariadb-git-7072a63acd51b0b2870b9c14937ff03bd47f8e4a.tar.gz
ndb - bug#20683
part 1 - make sure return code is propagated from request tracker ndb/src/kernel/vm/RequestTracker.hpp: propagate return value ndb/src/kernel/vm/SafeCounter.hpp: make sure object is not initialized in case of seize() failure, to make sure destructor doesnt assert
-rw-r--r--ndb/src/kernel/vm/RequestTracker.hpp4
-rw-r--r--ndb/src/kernel/vm/SafeCounter.hpp22
2 files changed, 16 insertions, 10 deletions
diff --git a/ndb/src/kernel/vm/RequestTracker.hpp b/ndb/src/kernel/vm/RequestTracker.hpp
index 5fd1ae7255a..ac9ed85ae4b 100644
--- a/ndb/src/kernel/vm/RequestTracker.hpp
+++ b/ndb/src/kernel/vm/RequestTracker.hpp
@@ -26,12 +26,12 @@ public:
void init() { m_confs.clear(); m_nRefs = 0; }
template<typename SignalClass>
- void init(SafeCounterManager& mgr,
+ bool init(SafeCounterManager& mgr,
NodeReceiverGroup rg, Uint16 GSN, Uint32 senderData)
{
init();
SafeCounter tmp(mgr, m_sc);
- tmp.init<SignalClass>(rg, GSN, senderData);
+ return tmp.init<SignalClass>(rg, GSN, senderData);
}
bool ignoreRef(SafeCounterManager& mgr, Uint32 nodeId)
diff --git a/ndb/src/kernel/vm/SafeCounter.hpp b/ndb/src/kernel/vm/SafeCounter.hpp
index 1f3cc15c2d6..869a7ef671f 100644
--- a/ndb/src/kernel/vm/SafeCounter.hpp
+++ b/ndb/src/kernel/vm/SafeCounter.hpp
@@ -230,10 +230,13 @@ inline
bool
SafeCounter::init(NodeReceiverGroup rg, Uint16 GSN, Uint32 senderData){
- bool b = init<Ref>(rg.m_block, GSN, senderData);
- m_nodes = rg.m_nodes;
- m_count = m_nodes.count();
- return b;
+ if (init<Ref>(rg.m_block, GSN, senderData))
+ {
+ m_nodes = rg.m_nodes;
+ m_count = m_nodes.count();
+ return true;
+ }
+ return false;
}
template<typename Ref>
@@ -241,10 +244,13 @@ inline
bool
SafeCounter::init(NodeReceiverGroup rg, Uint32 senderData){
- bool b = init<Ref>(rg.m_block, Ref::GSN, senderData);
- m_nodes = rg.m_nodes;
- m_count = m_nodes.count();
- return b;
+ if (init<Ref>(rg.m_block, Ref::GSN, senderData))
+ {
+ m_nodes = rg.m_nodes;
+ m_count = m_nodes.count();
+ return true;
+ }
+ return false;
}
inline