Commit 16556f61 authored by unknown's avatar unknown
Browse files

Merge joreland@bk-internal.mysql.com:/home/bk/mysql-4.1

into  perch.ndb.mysql.com:/home/jonas/src/mysql-4.1

parents 854d7c4d 4354d940
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -232,6 +232,7 @@
#define ZSCAN_MARKERS 18
#define ZOPERATION_EVENT_REP 19
#define ZPREP_DROP_TABLE 20
#define ZENABLE_EXPAND_CHECK 21

/* ------------------------------------------------------------------------- */
/*        NODE STATE DURING SYSTEM RESTART, VARIABLES CNODES_SR_STATE        */
+41 −13
Original line number Diff line number Diff line
@@ -434,6 +434,33 @@ void Dblqh::execCONTINUEB(Signal* signal)
    checkDropTab(signal);
    return;
    break;
  case ZENABLE_EXPAND_CHECK:
  {
    jam();
    fragptr.i = signal->theData[1];
    if (fragptr.i != RNIL)
    {
      jam();
      ptrCheckGuard(fragptr, cfragrecFileSize, fragrecord);
      signal->theData[0] = fragptr.p->tabRef;
      signal->theData[1] = fragptr.p->fragId;
      sendSignal(DBACC_REF, GSN_EXPANDCHECK2, signal, 2, JBB);
      
      signal->theData[0] = ZENABLE_EXPAND_CHECK;
      signal->theData[1] = fragptr.p->nextFrag;
      sendSignal(DBLQH_REF, GSN_CONTINUEB, signal, 2, JBB);	
      return;
    }
    else
    {
      jam();
      StartRecConf * conf = (StartRecConf*)signal->getDataPtrSend();
      conf->startingNodeId = getOwnNodeId();
      sendSignal(cmasterDihBlockref, GSN_START_RECCONF, signal, 
		 StartRecConf::SignalLength, JBB);
      return;
    }
  }
  default:
    ndbrequire(false);
    break;
@@ -15503,20 +15530,21 @@ void Dblqh::srFourthComp(Signal* signal)
  } else if ((cstartType == NodeState::ST_NODE_RESTART) ||
             (cstartType == NodeState::ST_SYSTEM_RESTART)) {
    jam();
    if(cstartType == NodeState::ST_SYSTEM_RESTART)
    {
      jam();
      signal->theData[0] = ZENABLE_EXPAND_CHECK;
      signal->theData[1] = c_redo_log_complete_frags;
      sendSignal(DBLQH_REF, GSN_CONTINUEB, signal, 2, JBB);
    }
    else
    {
      jam();
      StartRecConf * conf = (StartRecConf*)signal->getDataPtrSend();
      conf->startingNodeId = getOwnNodeId();
      sendSignal(cmasterDihBlockref, GSN_START_RECCONF, signal, 
		 StartRecConf::SignalLength, JBB);
    if(cstartType == NodeState::ST_SYSTEM_RESTART){
      fragptr.i = c_redo_log_complete_frags;
      while(fragptr.i != RNIL){
	ptrCheckGuard(fragptr, cfragrecFileSize, fragrecord);
	signal->theData[0] = fragptr.p->tabRef;
	signal->theData[1] = fragptr.p->fragId;
	sendSignal(DBACC_REF, GSN_EXPANDCHECK2, signal, 2, JBB);
	fragptr.i = fragptr.p->nextFrag;
      }
    }
  } else {
    ndbrequire(false);
+12 −0
Original line number Diff line number Diff line
@@ -6978,6 +6978,18 @@ void Dbtc::checkScanActiveInFailedLqh(Signal* signal,
	  found = true;
	}
      }

      ScanFragList deliv(c_scan_frag_pool, scanptr.p->m_delivered_scan_frags);
      for(deliv.first(ptr); !ptr.isNull(); deliv.next(ptr))
      {
	jam();
	if (refToNode(ptr.p->lqhBlockref) == failedNodeId)
	{
	  jam();
	  found = true;
	  break;
	}
      }
    }
    if(found){
      jam();
+2 −2
Original line number Diff line number Diff line
@@ -26,12 +26,12 @@ public:
  void init() { m_confs.clear(); m_nRefs = 0; }

  template<typename SignalClass>
  void init(SafeCounterManager& mgr,
  bool init(SafeCounterManager& mgr,
	    NodeReceiverGroup rg, Uint16 GSN, Uint32 senderData)
  {
    init();
    SafeCounter tmp(mgr, m_sc);
    tmp.init<SignalClass>(rg, GSN, senderData);
    return tmp.init<SignalClass>(rg, GSN, senderData);
  }

  bool ignoreRef(SafeCounterManager& mgr, Uint32 nodeId)
+14 −8
Original line number Diff line number Diff line
@@ -230,10 +230,13 @@ inline
bool
SafeCounter::init(NodeReceiverGroup rg, Uint16 GSN, Uint32 senderData){
  
  bool b = init<Ref>(rg.m_block, GSN, senderData);
  if (init<Ref>(rg.m_block, GSN, senderData))
  {
    m_nodes = rg.m_nodes;
    m_count = m_nodes.count();
  return b;
    return true;
  }
  return false;
}

template<typename Ref>
@@ -241,10 +244,13 @@ inline
bool
SafeCounter::init(NodeReceiverGroup rg, Uint32 senderData){
  
  bool b = init<Ref>(rg.m_block, Ref::GSN, senderData);
  if (init<Ref>(rg.m_block, Ref::GSN, senderData))
  {
    m_nodes = rg.m_nodes;
    m_count = m_nodes.count();
  return b;
    return true;
  }
  return false;
}

inline
Loading