===== storage/ndb/src/kernel/blocks/suma/Suma.cpp 1.34 vs edited ===== --- 1.34/storage/ndb/src/kernel/blocks/suma/Suma.cpp 2007-03-13 15:35:07 +01:00 +++ storage/ndb/src/kernel/blocks/suma/Suma.cpp 2007-03-13 11:11:28 +01:00 @@ -545,6 +545,18 @@ Uint32 failedApiNode = signal->theData[0]; //BlockReference retRef = signal->theData[1]; + if (c_failedApiNodes.get(failedApiNode)) + { + jam(); + return; + } + + if (!c_subscriber_nodes.get(failedApiNode)) + { + jam(); + return; + } + c_failedApiNodes.set(failedApiNode); c_connected_nodes.clear(failedApiNode); bool found = removeSubscribersOnNode(signal, failedApiNode); @@ -558,9 +570,12 @@ Ptr gcp; for(c_gcp_list.first(gcp); !gcp.isNull(); c_gcp_list.next(gcp)) { + jam(); ack->rep.gci = gcp.p->m_gci; if(gcp.p->m_subscribers.get(failedApiNode)) { + jam(); + gcp.p->m_subscribers.clear(failedApiNode); ack->rep.senderRef = numberToRef(0, failedApiNode); sendSignal(SUMA_REF, GSN_SUB_GCP_COMPLETE_ACK, signal, SubGcpCompleteAck::SignalLength, JBB);