diff options
author | unknown <jonas@perch.ndb.mysql.com> | 2006-06-26 12:16:39 +0200 |
---|---|---|
committer | unknown <jonas@perch.ndb.mysql.com> | 2006-06-26 12:16:39 +0200 |
commit | 7072a63acd51b0b2870b9c14937ff03bd47f8e4a (patch) | |
tree | c256ffde0d578f38de0690ef95301c50e2379985 | |
parent | 505c2b3d5f0178aa9bdb9f97da707104489250a5 (diff) | |
download | mariadb-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.hpp | 4 | ||||
-rw-r--r-- | ndb/src/kernel/vm/SafeCounter.hpp | 22 |
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 |