===== 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_record> 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);