Commit 4e055f3f authored by unknown's avatar unknown
Browse files

ndb - bug#19645

  fix some more sp100 hang cases


storage/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp:
  let suma know of API_FAILREQ even if not connected, to handle startme/handover 
    problem
storage/ndb/src/kernel/blocks/suma/Suma.cpp:
  some error inserts
  + resend API_FAILREQ during handover
parent 6d7c9d86
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -2456,7 +2456,12 @@ void Qmgr::execAPI_FAILREQ(Signal* signal)

  // ignore if api not active
  if (failedNodePtr.p->phase != ZAPI_ACTIVE)
  {
    jam();
    // But send to SUMA anyway...
    sendSignal(SUMA_REF, GSN_API_FAILREQ, signal, 2, JBA);
    return;
  }

  signal->theData[0] = NDB_LE_Disconnected;
  signal->theData[1] = failedNodePtr.i;
+29 −0
Original line number Diff line number Diff line
@@ -319,6 +319,12 @@ Suma::execSTTOR(Signal* signal) {
      createSequence(signal);
      DBUG_VOID_RETURN;
    }//if
    
    if (ERROR_INSERTED(13030))
    {
      ndbout_c("Dont start handover");
      return;
    }
  }//if
  
  if(startphase == 100)
@@ -564,6 +570,15 @@ void Suma::execAPI_FAILREQ(Signal* signal)
  Uint32 failedApiNode = signal->theData[0];
  //BlockReference retRef = signal->theData[1];

  if (c_startup.m_restart_server_node_id &&
      c_startup.m_restart_server_node_id != RNIL)
  {
    jam();
    sendSignalWithDelay(reference(), GSN_API_FAILREQ, signal,
                        200, signal->getLength());
    return;
  }

  c_failedApiNodes.set(failedApiNode);
  c_connected_nodes.clear(failedApiNode);
  bool found = removeSubscribersOnNode(signal, failedApiNode);
@@ -912,6 +927,20 @@ Suma::execDUMP_STATE_ORD(Signal* signal){
  {
    CLEAR_ERROR_INSERT_VALUE;
  }

  if (tCase == 8009)
  {
    if (ERROR_INSERTED(13030))
    {
      CLEAR_ERROR_INSERT_VALUE;
      sendSTTORRY(signal);
    }
    else
    {
      SET_ERROR_INSERT_VALUE(13030);
    }
    return;
  }
}

/*************************************************************