Commit 85f94ce9 authored by unknown's avatar unknown
Browse files

ndb - bug#8876 third and final solution


ndb/src/kernel/blocks/dbtc/DbtcMain.cpp:
  lqh to forward abort within ng
parent a455733c
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -5923,11 +5923,17 @@ int Dbtc::releaseAndAbort(Signal* signal)
  UintR TnoLoops = tcConnectptr.p->noOfNodes;
  
  apiConnectptr.p->counter++;
  bool prevAlive = false;
  for (Uint32 Ti = 0; Ti < TnoLoops ; Ti++) {
    localHostptr.i = tcConnectptr.p->tcNodedata[Ti];
    ptrCheckGuard(localHostptr, chostFilesize, hostRecord);
    if (localHostptr.p->hostStatus == HS_ALIVE) {
      jam();
      if (prevAlive) {
        // if previous is alive, its LQH forwards abort to this node
        jam();
        continue;
      }
      /* ************< */
      /*    ABORT    < */
      /* ************< */
@@ -5937,6 +5943,7 @@ int Dbtc::releaseAndAbort(Signal* signal)
      signal->theData[2] = apiConnectptr.p->transid[0];
      signal->theData[3] = apiConnectptr.p->transid[1];
      sendSignal(tblockref, GSN_ABORT, signal, 4, JBB);
      prevAlive = true;
    } else {
      jam();
      signal->theData[0] = tcConnectptr.i;
@@ -5945,6 +5952,7 @@ int Dbtc::releaseAndAbort(Signal* signal)
      signal->theData[3] = localHostptr.i;
      signal->theData[4] = ZFALSE;
      sendSignal(cownref, GSN_ABORTED, signal, 5, JBB);
      prevAlive = false;
    }//if
  }//for
  return 1;