Commit 0b60b1d3 authored by unknown's avatar unknown
Browse files

Merge poseidon.mysql.com:/home/tomas/mysql-5.0-telco-gca

into  poseidon.mysql.com:/home/tomas/mysql-5.1-telco-gca


sql/ha_ndbcluster.cc:
  Auto merged
storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp:
  Auto merged
storage/ndb/src/kernel/vm/WatchDog.cpp:
  Auto merged
storage/ndb/src/mgmsrv/MgmtSrvr.cpp:
  Auto merged
storage/ndb/src/ndbapi/ClusterMgr.cpp:
  Auto merged
storage/ndb/src/ndbapi/ClusterMgr.hpp:
  Auto merged
storage/ndb/src/ndbapi/SignalSender.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/DumpStateOrd.hpp:
  manual merge
storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp:
  manual merge
storage/ndb/src/ndbapi/SignalSender.cpp:
  manual merge
parents 5af0cbc7 5a25c67a
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -3817,7 +3817,7 @@ int ha_ndbcluster::info(uint flag)
  if (flag & HA_STATUS_AUTO)
  {
    DBUG_PRINT("info", ("HA_STATUS_AUTO"));
    if (m_table)
    if (m_table && table->found_next_number_field)
    {
      Ndb *ndb= get_ndb();
      Ndb_tuple_id_range_guard g(m_share);
+4 −1
Original line number Diff line number Diff line
@@ -107,7 +107,10 @@ public:
    CmvmiDumpLongSignalMemory = 2601,
    CmvmiSetRestartOnErrorInsert = 2602,
    CmvmiTestLongSigWithDelay = 2603,
    
    CmvmiDumpSubscriptions = 2604, /* note: done to respective outfile
                                      to be able to debug if events
                                      for some reason does not end up
                                      in clusterlog */
    LCPContinue = 5900,
    // 7000 DIH
    // 7001 DIH
+19 −1
Original line number Diff line number Diff line
@@ -921,7 +921,7 @@ void Cmvmi::execSET_VAR_REQ(Signal* signal)
  case TimeToWaitAlive:

    // QMGR
  case HeartbeatIntervalDbDb: // TODO ev till Ndbcnt ocks
  case HeartbeatIntervalDbDb: // TODO possibly Ndbcnt too
  case HeartbeatIntervalDbApi:
  case ArbitTimeout:
    sendSignal(QMGR_REF, GSN_SET_VAR_REQ, signal, 3, JBB);
@@ -1129,6 +1129,24 @@ Cmvmi::execDUMP_STATE_ORD(Signal* signal)
    }
  }
  
  if (arg == DumpStateOrd::CmvmiDumpSubscriptions)
  {
    SubscriberPtr ptr;
    subscribers.first(ptr);  
    g_eventLogger.info("List subscriptions:");
    while(ptr.i != RNIL)
    {
      g_eventLogger.info("Subscription: %u, nodeId: %u, ref: 0x%x",
                         ptr.i,  refToNode(ptr.p->blockRef), ptr.p->blockRef);
      for(Uint32 i = 0; i < LogLevel::LOGLEVEL_CATEGORIES; i++)
      {
        Uint32 level = ptr.p->logLevel.getLogLevel((LogLevel::EventCategory)i);
        g_eventLogger.info("Category %u Level %u", i, level);
      }
      subscribers.next(ptr);
    }
  }

  if (arg == DumpStateOrd::CmvmiDumpLongSignalMemory){
    infoEvent("Cmvmi: g_sectionSegmentPool size: %d free: %d",
	      g_sectionSegmentPool.getSize(),
+66 −64
Original line number Diff line number Diff line
@@ -1820,8 +1820,8 @@ void Dbdih::execSTART_PERMREQ(Signal* signal)
    return;
  }//if
  if (getNodeStatus(nodeId) != NodeRecord::DEAD){
    ndbout << "nodeStatus in START_PERMREQ = " 
	   << (Uint32) getNodeStatus(nodeId) << endl;
    g_eventLogger.error("nodeStatus in START_PERMREQ = %u",
                        (Uint32) getNodeStatus(nodeId));
    ndbrequire(false);
  }//if
@@ -4234,7 +4234,7 @@ void Dbdih::checkCopyTab(NodeRecordPtr failedNodePtr)
    jam();
    break;
  default:
    ndbout_c("outstanding gsn: %s(%d)", 
    g_eventLogger.error("outstanding gsn: %s(%d)", 
                        getSignalName(c_nodeStartMaster.m_outstandingGsn), 
                        c_nodeStartMaster.m_outstandingGsn);
    ndbrequire(false);
@@ -4689,9 +4689,10 @@ void Dbdih::failedNodeLcpHandling(Signal* signal, NodeRecordPtr failedNodePtr)
      failedNodePtr.p->activeStatus = Sysfile::NS_NotActive_NotTakenOver;
      break;
    default:
      ndbout << "activeStatus = " << (Uint32) failedNodePtr.p->activeStatus;
      ndbout << " at failure after NODE_FAILREP of node = ";
      ndbout << failedNodePtr.i << endl;
      g_eventLogger.error("activeStatus = %u "
                          "at failure after NODE_FAILREP of node = %u",
                          (Uint32) failedNodePtr.p->activeStatus,
                          failedNodePtr.i);
      ndbrequire(false);
      break;
    }//switch
@@ -4846,7 +4847,7 @@ Dbdih::startLcpMasterTakeOver(Signal* signal, Uint32 nodeId){
    /**
     * Node failure during master take over...
     */
    ndbout_c("Nodefail during master take over");
    g_eventLogger.info("Nodefail during master take over");
  }
  
  setLocalNodefailHandling(signal, nodeId, NF_LCP_TAKE_OVER);
@@ -5086,7 +5087,8 @@ void Dbdih::execMASTER_GCPCONF(Signal* signal)
  if (latestLcpId > SYSFILE->latestLCP_ID) {
    jam();
#if 0
    ndbout_c("Dbdih: Setting SYSFILE->latestLCP_ID to %d", latestLcpId);
    g_eventLogger.info("Dbdih: Setting SYSFILE->latestLCP_ID to %d",
                       latestLcpId);
    SYSFILE->latestLCP_ID = latestLcpId;
#endif
    SYSFILE->keepGCI = oldestKeepGci;
@@ -5745,7 +5747,7 @@ Dbdih::checkLocalNodefailComplete(Signal* signal, Uint32 failedNodeId,
  if (ERROR_INSERTED(7030))
  {
    ndbout_c("Reenable GCP_PREPARE");
    g_eventLogger.info("Reenable GCP_PREPARE");
    CLEAR_ERROR_INSERT_VALUE;
  }
  
@@ -5918,7 +5920,7 @@ Dbdih::sendMASTER_LCPCONF(Signal * signal){
    c_lcpState.setLcpStatus(LCP_STATUS_IDLE, __LINE__);
#if 0
    if(c_copyGCISlave.m_copyReason == CopyGCIReq::LOCAL_CHECKPOINT){
      ndbout_c("Dbdih: Also resetting c_copyGCISlave");
      g_eventLogger.info("Dbdih: Also resetting c_copyGCISlave");
      c_copyGCISlave.m_copyReason = CopyGCIReq::IDLE;
      c_copyGCISlave.m_expectedNextWord = 0;
    }
@@ -6003,7 +6005,7 @@ Dbdih::sendMASTER_LCPCONF(Signal * signal){
  if(c_lcpState.lcpStatus == LCP_TAB_SAVED){
#ifdef VM_TRACE
    ndbout_c("Sending extra GSN_LCP_COMPLETE_REP to new master");    
    g_eventLogger.info("Sending extra GSN_LCP_COMPLETE_REP to new master");    
#endif
    sendLCP_COMPLETE_REP(signal);
  }
@@ -6159,7 +6161,7 @@ void Dbdih::execMASTER_LCPCONF(Signal* signal)
  nodePtr.p->lcpStateAtTakeOver = lcpState;
#ifdef VM_TRACE
  ndbout_c("MASTER_LCPCONF");
  g_eventLogger.info("MASTER_LCPCONF");
  printMASTER_LCP_CONF(stdout, &signal->theData[0], 0, 0);
#endif  
@@ -6236,7 +6238,7 @@ void Dbdih::MASTER_LCPhandling(Signal* signal, Uint32 failedNodeId)
    // protocol.
    /* --------------------------------------------------------------------- */
#ifdef VM_TRACE
    ndbout_c("MASTER_LCPhandling:: LMTOS_ALL_IDLE -> checkLcpStart");
    g_eventLogger.info("MASTER_LCPhandling:: LMTOS_ALL_IDLE -> checkLcpStart");
#endif
    checkLcpStart(signal, __LINE__);
    break;
@@ -6247,7 +6249,7 @@ void Dbdih::MASTER_LCPhandling(Signal* signal, Uint32 failedNodeId)
    // protocol by calculating the keep gci and storing the new lcp id.
    /* --------------------------------------------------------------------- */
#ifdef VM_TRACE
    ndbout_c("MASTER_LCPhandling:: LMTOS_COPY_ONGOING -> storeNewLcpId");
    g_eventLogger.info("MASTER_LCPhandling:: LMTOS_COPY_ONGOING -> storeNewLcpId");
#endif
    if (c_lcpState.lcpStatus == LCP_STATUS_ACTIVE) {
      jam();
@@ -6258,7 +6260,7 @@ void Dbdih::MASTER_LCPhandling(Signal* signal, Uint32 failedNodeId)
      /*---------------------------------------------------------------------*/
      Uint32 lcpId = SYSFILE->latestLCP_ID;
#ifdef VM_TRACE
      ndbout_c("Decreasing latestLCP_ID from %d to %d", lcpId, lcpId - 1);
      g_eventLogger.info("Decreasing latestLCP_ID from %d to %d", lcpId, lcpId - 1);
#endif
      SYSFILE->latestLCP_ID--;
    }//if
@@ -6275,7 +6277,7 @@ void Dbdih::MASTER_LCPhandling(Signal* signal, Uint32 failedNodeId)
       * complete before finalising the LCP process.
       * ------------------------------------------------------------------ */
#ifdef VM_TRACE
      ndbout_c("MASTER_LCPhandling:: LMTOS_ALL_ACTIVE -> "
      g_eventLogger.info("MASTER_LCPhandling:: LMTOS_ALL_ACTIVE -> "
                         "startLcpRoundLoopLab(table=%u, fragment=%u)",
                         c_lcpMasterTakeOverState.minTableId, 
                         c_lcpMasterTakeOverState.minFragId);
@@ -7682,8 +7684,8 @@ void Dbdih::checkGcpStopLab(Signal* signal)
        if (cgcpSameCounter == 1200) {
          jam();
#ifdef VM_TRACE
          ndbout << "System crash due to GCP Stop in state = ";
          ndbout << (Uint32) cgcpStatus << endl;
          g_eventLogger.error("System crash due to GCP Stop in state = %u",
                              (Uint32) cgcpStatus);
#endif
          crashSystemAtGcpStop(signal);
          return;
@@ -7696,8 +7698,8 @@ void Dbdih::checkGcpStopLab(Signal* signal)
          if (cgcpSameCounter == 1200) {
            jam();
#ifdef VM_TRACE
            ndbout << "System crash due to GCP Stop in state = ";
            ndbout << (Uint32) cgcpStatus << endl;
            g_eventLogger.error("System crash due to GCP Stop in state = %u",
                                (Uint32) cgcpStatus);
#endif
	    crashSystemAtGcpStop(signal);
            return;
@@ -7888,7 +7890,7 @@ void Dbdih::GCP_SAVEhandling(Signal* signal, Uint32 nodeId)
     getNodeState().startLevel == NodeState::SL_STARTED){
    jam();
#if 0
    ndbout_c("Dbdih: Clearing initial start ongoing");
    g_eventLogger.info("Dbdih: Clearing initial start ongoing");
#endif
    Sysfile::clearInitialStartOngoing(SYSFILE->systemRestartBits);
  }
@@ -7907,7 +7909,7 @@ void Dbdih::execGCP_PREPARE(Signal* signal)
  if (ERROR_INSERTED(7030))
  {
    cgckptflag = true;
    ndbout_c("Delayed GCP_PREPARE 5s");
    g_eventLogger.info("Delayed GCP_PREPARE 5s");
    sendSignalWithDelay(reference(), GSN_GCP_PREPARE, signal, 5000,
			signal->getLength());
    return;
@@ -7927,7 +7929,7 @@ void Dbdih::execGCP_PREPARE(Signal* signal)
  if (ERROR_INSERTED(7031))
  {
    ndbout_c("Crashing delayed in GCP_PREPARE 3s");
    g_eventLogger.info("Crashing delayed in GCP_PREPARE 3s");
    signal->theData[0] = 9999;
    sendSignalWithDelay(CMVMI_REF, GSN_NDB_TAMPER, signal, 3000, 1);
    return;
@@ -8451,7 +8453,7 @@ void Dbdih::initLcpLab(Signal* signal, Uint32 senderRef, Uint32 tableId)
     * This is LCP master takeover
     */
#ifdef VM_TRACE
    ndbout_c("initLcpLab aborted due to LCP master takeover - 1");
    g_eventLogger.info("initLcpLab aborted due to LCP master takeover - 1");
#endif
    c_lcpState.setLcpStatus(LCP_STATUS_IDLE, __LINE__);
    sendMASTER_LCPCONF(signal);
@@ -8464,7 +8466,7 @@ void Dbdih::initLcpLab(Signal* signal, Uint32 senderRef, Uint32 tableId)
     * Master take over but has not yet received MASTER_LCPREQ
     */
#ifdef VM_TRACE
    ndbout_c("initLcpLab aborted due to LCP master takeover - 2");    
    g_eventLogger.info("initLcpLab aborted due to LCP master takeover - 2");
#endif
    return;
  }
@@ -9773,9 +9775,10 @@ void Dbdih::checkTcCounterLab(Signal* signal)
{
  CRASH_INSERTION(7009);
  if (c_lcpState.lcpStatus != LCP_STATUS_IDLE) {
    ndbout << "lcpStatus = " << (Uint32) c_lcpState.lcpStatus;
    ndbout << "lcpStatusUpdatedPlace = " << 
      c_lcpState.lcpStatusUpdatedPlace << endl;
    g_eventLogger.error("lcpStatus = %u"
                        "lcpStatusUpdatedPlace = %d",
                        (Uint32) c_lcpState.lcpStatus,
                        c_lcpState.lcpStatusUpdatedPlace);
    ndbrequire(false);
    return;
  }//if
@@ -10358,9 +10361,8 @@ void Dbdih::execLCP_FRAG_REP(Signal* signal)
    if(tabPtr.p->tabStatus == TabRecord::TS_DROPPING){
      jam();
      ndbout_c("TS_DROPPING - Neglecting to save Table: %d Frag: %d - ",
	       tableId,
	       fragId);
      g_eventLogger.info("TS_DROPPING - Neglecting to save Table: %d Frag: %d - ",
                         tableId, fragId);
    } else {
      jam();
      /**
@@ -10490,7 +10492,7 @@ void Dbdih::findReplica(ReplicaRecordPtr& replicaPtr,
  };
#ifdef VM_TRACE
  ndbout_c("Fragment Replica(node=%d) not found", nodeId);
  g_eventLogger.info("Fragment Replica(node=%d) not found", nodeId);
  replicaPtr.i = fragPtrP->oldStoredReplicas;
  while(replicaPtr.i != RNIL){
    ptrCheckGuard(replicaPtr, creplicaFileSize, replicaRecord);
@@ -10503,9 +10505,9 @@ void Dbdih::findReplica(ReplicaRecordPtr& replicaPtr,
    }//if
  };
  if(replicaPtr.i != RNIL){
    ndbout_c("...But was found in oldStoredReplicas");
    g_eventLogger.info("...But was found in oldStoredReplicas");
  } else {
    ndbout_c("...And wasn't found in oldStoredReplicas");
    g_eventLogger.info("...And wasn't found in oldStoredReplicas");
  }
#endif
  ndbrequire(false);
@@ -10572,7 +10574,7 @@ Dbdih::reportLcpCompletion(const LcpFragRep* lcpReport)
  if(lcpNo != replicaPtr.p->nextLcp){
    if (handle_invalid_lcp_no(lcpReport, replicaPtr))
    {
      ndbout_c("lcpNo = %d replicaPtr.p->nextLcp = %d", 
      g_eventLogger.error("lcpNo = %d replicaPtr.p->nextLcp = %d",
                          lcpNo, replicaPtr.p->nextLcp);
      ndbrequire(false);
    }
@@ -10609,7 +10611,7 @@ Dbdih::reportLcpCompletion(const LcpFragRep* lcpReport)
      // Not all fragments in table have been checkpointed.
      /* ----------------------------------------------------------------- */
      if(0)
	ndbout_c("reportLcpCompletion: fragment %d not ready", fid);
	g_eventLogger.info("reportLcpCompletion: fragment %d not ready", fid);
      return false;
    }//if
  }//for
@@ -10726,7 +10728,7 @@ void Dbdih::execLCP_COMPLETE_REP(Signal* signal)
  jamEntry();
#if 0
  ndbout_c("LCP_COMPLETE_REP"); 
  g_eventLogger.info("LCP_COMPLETE_REP"); 
  printLCP_COMPLETE_REP(stdout, 
			signal->getDataPtr(),
			signal->length(), number());
@@ -10812,7 +10814,7 @@ void Dbdih::allNodesLcpCompletedLab(Signal* signal)
  if(c_lcpMasterTakeOverState.state != LMTOS_IDLE){
    jam();
#ifdef VM_TRACE
    ndbout_c("Exiting from allNodesLcpCompletedLab");
    g_eventLogger.info("Exiting from allNodesLcpCompletedLab");
#endif
    return;
  }
@@ -11049,12 +11051,12 @@ void Dbdih::crashSystemAtGcpStop(Signal* signal)
    
    infoEvent("Detected GCP stop...sending kill to %s", 
	      c_GCP_SAVEREQ_Counter.getText());
    ndbout_c("Detected GCP stop...sending kill to %s", 
    g_eventLogger.error("Detected GCP stop...sending kill to %s", 
                        c_GCP_SAVEREQ_Counter.getText());
    return;
  }
  case GCP_SAVE_LQH_FINISHED:
    ndbout_c("m_copyReason: %d m_waiting: %d",
    g_eventLogger.error("m_copyReason: %d m_waiting: %d",
                        c_copyGCIMaster.m_copyReason,
                        c_copyGCIMaster.m_waiting);
    break;
@@ -11064,7 +11066,7 @@ void Dbdih::crashSystemAtGcpStop(Signal* signal)
    break;
  }
  
  ndbout_c("c_copyGCISlave: sender{Data, Ref} %d %x reason: %d nextWord: %d",
  g_eventLogger.error("c_copyGCISlave: sender{Data, Ref} %d %x reason: %d nextWord: %d",
                      c_copyGCISlave.m_senderData,
                      c_copyGCISlave.m_senderRef,
                      c_copyGCISlave.m_copyReason,
@@ -13278,9 +13280,9 @@ void Dbdih::setLcpActiveStatusEnd()
      nodePtr.i = getOwnNodeId();
      ptrAss(nodePtr, nodeRecord);
      ndbrequire(nodePtr.p->activeStatus == Sysfile::NS_Active);
      ndbout_c("NR: setLcpActiveStatusEnd - m_participatingLQH");
      g_eventLogger.info("NR: setLcpActiveStatusEnd - m_participatingLQH");
    } else {
      ndbout_c("NR: setLcpActiveStatusEnd - !m_participatingLQH");
      g_eventLogger.info("NR: setLcpActiveStatusEnd - !m_participatingLQH");
    }
  }
  
@@ -14112,8 +14114,8 @@ Dbdih::execDUMP_STATE_ORD(Signal* signal)
  }
  if(arg == DumpStateOrd::EnableUndoDelayDataWrite){
    ndbout << "Dbdih:: delay write of datapages for table = " 
	   << dumpState->args[1]<< endl;
    g_eventLogger.info("Dbdih:: delay write of datapages for table = %s", 
                       dumpState->args[1]);
    // Send this dump to ACC and TUP
    EXECUTE_DIRECT(DBACC, GSN_DUMP_STATE_ORD, signal, 2);
    EXECUTE_DIRECT(DBTUP, GSN_DUMP_STATE_ORD, signal, 2);
@@ -14130,13 +14132,13 @@ Dbdih::execDUMP_STATE_ORD(Signal* signal)
  }//if
  if (signal->theData[0] == DumpStateOrd::DihMinTimeBetweenLCP) {
    // Set time between LCP to min value
    ndbout << "Set time between LCP to min value" << endl;
    g_eventLogger.info("Set time between LCP to min value");
    c_lcpState.clcpDelay = 0; // TimeBetweenLocalCheckpoints.min
    return;
  }
  if (signal->theData[0] == DumpStateOrd::DihMaxTimeBetweenLCP) {
    // Set time between LCP to max value
    ndbout << "Set time between LCP to max value" << endl;
    g_eventLogger.info("Set time between LCP to max value");
    c_lcpState.clcpDelay = 31; // TimeBetweenLocalCheckpoints.max
    return;
  }
@@ -14172,7 +14174,7 @@ Dbdih::execDUMP_STATE_ORD(Signal* signal)
    {
      cgcpDelay = signal->theData[1];
    }
    ndbout_c("Setting time between gcp : %d", cgcpDelay);
    g_eventLogger.info("Setting time between gcp : %d", cgcpDelay);
  }
  if (arg == 7021 && signal->getLength() == 2)
@@ -14295,7 +14297,7 @@ Dbdih::execPREP_DROP_TAB_REQ(Signal* signal){
	while(index < count){
	  if(nodePtr.p->queuedChkpt[index].tableId == tabPtr.i){
	    jam();
	    //	    ndbout_c("Unqueuing %d", index);
	    //	    g_eventLogger.info("Unqueuing %d", index);
	    
	    count--;
	    for(Uint32 i = index; i<count; i++){
@@ -14335,7 +14337,7 @@ Dbdih::execPREP_DROP_TAB_REQ(Signal* signal){
      if(checkLcpAllTablesDoneInLqh()){
	jam();
	
	ndbout_c("This is the last table");
	g_eventLogger.info("This is the last table");
	
	/**
	 * Then check if saving of tab info is done for all tables
@@ -14344,7 +14346,7 @@ Dbdih::execPREP_DROP_TAB_REQ(Signal* signal){
	checkLcpCompletedLab(signal);
	
	if(a != c_lcpState.lcpStatus){
	  ndbout_c("And all tables are written to already written disk");
	  g_eventLogger.info("And all tables are written to already written disk");
	}
      }
      break;
+5 −2
Original line number Diff line number Diff line
@@ -22,6 +22,9 @@
#include <NdbOut.hpp>
#include <NdbSleep.h>
#include <ErrorHandlingMacros.hpp>
#include <EventLogger.hpp>

extern EventLogger g_eventLogger;

extern "C" 
void* 
@@ -125,7 +128,7 @@ WatchDog::run(){
        last_stuck_action = "Unknown place";
        break;
      }//switch
      ndbout << "Ndb kernel is stuck in: " << last_stuck_action << endl;
      g_eventLogger.warning("Ndb kernel is stuck in: %s", last_stuck_action);
      if(alerts == 3){
	shutdownSystem(last_stuck_action);
      }
Loading