Commit c1d9764c authored by unknown's avatar unknown
Browse files

Merge orca.ndb.mysql.com:/space_old/pekka/ndb/version/my50-1.2167.1.2

into  orca.ndb.mysql.com:/space_old/pekka/ndb/version/my51-bug18781


storage/ndb/src/kernel/blocks/dbdict/DictLock.txt:
  SCCS merged
storage/ndb/src/kernel/blocks/dbdih/Dbdih.hpp:
  manual
storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp:
  SCCS merged
storage/ndb/src/kernel/vm/SimulatedBlock.cpp:
  manual
storage/ndb/src/kernel/vm/SimulatedBlock.hpp:
  manual
storage/ndb/test/run-test/daily-basic-tests.txt:
  SCCS merged
parents 3a12a1a9 001c7f5f
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -85,8 +85,12 @@ DIH/s
    START_MECONF
DIH/s

* sp7 - release DICT lock
* (copy data, omitted)

* SL_STARTED - release DICT lock

CNTR/s
    NODE_START_REP
        DIH/s
            DICT_UNLOCK_ORD
                DICT/m
+3 −0
Original line number Diff line number Diff line
@@ -1609,6 +1609,9 @@ private:

  void dump_replica_info();

  // DIH specifics for execNODE_START_REP (sendDictUnlockOrd)
  void exec_node_start_rep(Signal* signal);

  /*
   * Lock master DICT.  Only current use is by starting node
   * during NR.  A pool of slave records is convenient anyway.
+22 −18
Original line number Diff line number Diff line
@@ -1387,24 +1387,6 @@ void Dbdih::execNDB_STTOR(Signal* signal)
    }
    ndbrequire(false);
    break;
  case ZNDB_SPH7:
    jam();
    switch (typestart) {
    case NodeState::ST_INITIAL_START:
    case NodeState::ST_SYSTEM_RESTART:
      jam();
      ndbsttorry10Lab(signal, __LINE__);
      return;
    case NodeState::ST_NODE_RESTART:
    case NodeState::ST_INITIAL_NODE_RESTART:
      jam();
      sendDictUnlockOrd(signal, c_dictLockSlavePtrI_nodeRestart);
      c_dictLockSlavePtrI_nodeRestart = RNIL;
      ndbsttorry10Lab(signal, __LINE__);
      return;
    }
    ndbrequire(false);
    break;
  default:
    jam();
    ndbsttorry10Lab(signal, __LINE__);
@@ -1412,6 +1394,27 @@ void Dbdih::execNDB_STTOR(Signal* signal)
  }//switch
}//Dbdih::execNDB_STTOR()
void
Dbdih::exec_node_start_rep(Signal* signal)
{
  /*
   * Send DICT_UNLOCK_ORD when this node is SL_STARTED.
   *
   * Sending it before (sp 7) conflicts with code which assumes
   * SL_STARTING means we are in copy phase of NR.
   *
   * NodeState::starting.restartType is not supposed to be used
   * when SL_STARTED.  Also it seems NODE_START_REP can arrive twice.
   *
   * For these reasons there are no consistency checks and
   * we rely on c_dictLockSlavePtrI_nodeRestart alone.
   */
  if (c_dictLockSlavePtrI_nodeRestart != RNIL) {
    sendDictUnlockOrd(signal, c_dictLockSlavePtrI_nodeRestart);
    c_dictLockSlavePtrI_nodeRestart = RNIL;
  }
}
void
Dbdih::createMutexes(Signal * signal, Uint32 count){
  Callback c = { safe_cast(&Dbdih::createMutex_done), count };
@@ -1636,6 +1639,7 @@ void Dbdih::nodeRestartPh2Lab(Signal* signal)
void Dbdih::recvDictLockConf_nodeRestart(Signal* signal, Uint32 data, Uint32 ret)
{
  ndbrequire(c_dictLockSlavePtrI_nodeRestart == RNIL);
  ndbrequire(data != RNIL);
  c_dictLockSlavePtrI_nodeRestart = data;
  nodeRestartPh2Lab2(signal);
+9 −0
Original line number Diff line number Diff line
@@ -920,6 +920,15 @@ SimulatedBlock::execCONTINUE_FRAGMENTED(Signal * signal){

void
SimulatedBlock::execNODE_START_REP(Signal* signal)
{
  // common stuff for all blocks

  // block specific stuff by virtual method override (default empty)
  exec_node_start_rep(signal);
}

void
SimulatedBlock::exec_node_start_rep(Signal* signal)
{
}

+2 −1
Original line number Diff line number Diff line
@@ -446,6 +446,7 @@ private:
  void execCONTINUE_FRAGMENTED(Signal* signal);
  void execAPI_START_REP(Signal* signal);
  void execNODE_START_REP(Signal* signal);
  virtual void exec_node_start_rep(Signal* signal);

  Uint32 c_fragmentIdCounter;
  ArrayPool<FragmentInfo> c_fragmentInfoPool;
Loading