Commit 7363712b authored by unknown's avatar unknown
Browse files

Merge perch.ndb.mysql.com:/home/jonas/src/50-work

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

parents f7b039cc ec9b46a9
Loading
Loading
Loading
Loading
+23 −6
Original line number Diff line number Diff line
@@ -30,12 +30,17 @@ class CmRegReq {
  friend class Qmgr;
  
public:
  STATIC_CONST( SignalLength = 3 );
  STATIC_CONST( SignalLength = 5 + NdbNodeBitmask::Size );
private:
  
  Uint32 blockRef;
  Uint32 nodeId;
  Uint32 version;    // See ndb_version.h

  Uint32 start_type; // As specified by cmd-line or mgm, NodeState::StartType
  Uint32 latest_gci; // 0 means no fs
  Uint32 skip_nodes[NdbNodeBitmask::Size]; // Nodes that does not _need_ 
                                           // to be part of restart
};

/**
@@ -59,7 +64,6 @@ private:
   * The dynamic id that the node reciving this signal has
   */
  Uint32 dynamicId;
  
  Uint32 allNdbNodes[NdbNodeBitmask::Size];  
};

@@ -73,7 +77,7 @@ class CmRegRef {
  friend class Qmgr;
  
public:
  STATIC_CONST( SignalLength = 4 );
  STATIC_CONST( SignalLength = 7 + NdbNodeBitmask::Size );
  
  enum ErrorCode {
    ZBUSY = 0,          /* Only the president can send this */
@@ -85,14 +89,27 @@ public:
                         * as president. */
    ZNOT_PRESIDENT = 5, /* We are not president */
    ZNOT_DEAD = 6,       /* We are not dead when we are starting  */
    ZINCOMPATIBLE_VERSION = 7
    ZINCOMPATIBLE_VERSION = 7,
    ZINCOMPATIBLE_START_TYPE = 8
  };
private:
  
  Uint32 blockRef;
  Uint32 nodeId;
  Uint32 errorCode;
  /**
   * Applicable if ZELECTION
   */
  Uint32 presidentCandidate;
  Uint32 candidate_latest_gci; // 0 means non

  /**
   * Data for sending node sending node
   */
  Uint32 latest_gci; 
  Uint32 start_type; 
  Uint32 skip_nodes[NdbNodeBitmask::Size]; // Nodes that does not _need_ 
                                           // to be part of restart
};

class CmAdd {
+1 −0
Original line number Diff line number Diff line
@@ -64,6 +64,7 @@ public:
    // 19 NDBFS Fipple with O_SYNC, O_CREATE etc.
    // 20-24 BACKUP
    NdbcntrTestStopOnError = 25,
    NdbcntrStopNodes = 70,
    // 100-105 TUP and ACC  
    // 200-240 UTIL
    // 300-305 TRIX
+13 −3
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@
#define FAIL_REP_HPP

#include "SignalData.hpp"
#include <NodeBitmask.hpp>

/**
 * 
@@ -27,6 +28,7 @@ class FailRep {
   * Sender(s) & Reciver(s)
   */
  friend class Qmgr;
  friend class Ndbcntr;
  
  /**
   * For printing
@@ -35,6 +37,7 @@ class FailRep {

public:
  STATIC_CONST( SignalLength = 2 );
  STATIC_CONST( ExtraLength = 1 + NdbNodeBitmask::Size );
  
  enum FailCause {
    ZOWN_FAILURE=0,
@@ -43,13 +46,20 @@ public:
    ZSTART_IN_REGREQ=3,
    ZHEARTBEAT_FAILURE=4,
    ZLINK_FAILURE=5,
    ZOTHERNODE_FAILED_DURING_START=6
    ZOTHERNODE_FAILED_DURING_START=6,
    ZMULTI_NODE_SHUTDOWN = 7,
    ZPARTITIONED_CLUSTER = 8
  };
  
private:
  
  Uint32 failNodeId;
  Uint32 failCause;
  /**
   * Used when failCause == ZPARTITIONED_CLUSTER
   */
  Uint32 president;
  Uint32 partition[NdbNodeBitmask::Size];
};


+22 −16
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@ class StopReq
  friend class MgmtSrvr;

public:
  STATIC_CONST( SignalLength = 9 );
  STATIC_CONST( SignalLength = 9 + NdbNodeBitmask::Size);
  
public:
  Uint32 senderRef;
@@ -49,29 +49,34 @@ public:
  Int32 readOperationTimeout; // Timeout before read operations are aborted
  Int32 operationTimeout;     // Timeout before all operations are aborted

  Uint32 nodes[NdbNodeBitmask::Size];

  static void setSystemStop(Uint32 & requestInfo, bool value);
  static void setPerformRestart(Uint32 & requestInfo, bool value);
  static void setNoStart(Uint32 & requestInfo, bool value);
  static void setInitialStart(Uint32 & requestInfo, bool value);
  static void setEscalateOnNodeFail(Uint32 & requestInfo, bool value);
  /**
   * Don't perform "graceful" shutdown/restart...
   */
  static void setStopAbort(Uint32 & requestInfo, bool value);
  static void setStopNodes(Uint32 & requestInfo, bool value);

  static bool getSystemStop(const Uint32 & requestInfo);
  static bool getPerformRestart(const Uint32 & requestInfo);
  static bool getNoStart(const Uint32 & requestInfo);
  static bool getInitialStart(const Uint32 & requestInfo);
  static bool getEscalateOnNodeFail(const Uint32 & requestInfo);
  static bool getStopAbort(const Uint32 & requestInfo);
  static bool getStopNodes(const Uint32 & requestInfo);
};

struct StopConf
{
  STATIC_CONST( SignalLength = 2 );
  Uint32 senderData;
  union {
    Uint32 nodeState;
    Uint32 nodeId;
  };
};

class StopRef 
@@ -94,7 +99,9 @@ public:
    NodeShutdownInProgress = 1,
    SystemShutdownInProgress = 2,
    NodeShutdownWouldCauseSystemCrash = 3,
    TransactionAbortFailed = 4
    TransactionAbortFailed = 4,
    UnsupportedNodeShutdown = 5,
    MultiNodeShutdownNotMaster = 6
  };
  
public:
@@ -132,16 +139,16 @@ StopReq::getInitialStart(const Uint32 & requestInfo)

inline
bool
StopReq::getEscalateOnNodeFail(const Uint32 & requestInfo)
StopReq::getStopAbort(const Uint32 & requestInfo)
{
  return requestInfo & 16;
  return requestInfo & 32;
}

inline
bool
StopReq::getStopAbort(const Uint32 & requestInfo)
StopReq::getStopNodes(const Uint32 & requestInfo)
{
  return requestInfo & 32;
  return requestInfo & 64;
}


@@ -187,24 +194,23 @@ StopReq::setInitialStart(Uint32 & requestInfo, bool value)

inline
void
StopReq::setEscalateOnNodeFail(Uint32 & requestInfo, bool value)
StopReq::setStopAbort(Uint32 & requestInfo, bool value)
{
  if(value)
    requestInfo |= 16;
    requestInfo |= 32;
  else
    requestInfo &= ~16;
    requestInfo &= ~32;
}

inline
void
StopReq::setStopAbort(Uint32 & requestInfo, bool value)
StopReq::setStopNodes(Uint32 & requestInfo, bool value)
{
  if(value)
    requestInfo |= 32;
    requestInfo |= 64;
  else
    requestInfo &= ~32;
    requestInfo &= ~64;
}


#endif
+5 −2
Original line number Diff line number Diff line
@@ -46,7 +46,9 @@ public:
    Complete = 1,           ///< Wait for a GCP to complete
    CompleteForceStart = 2, ///< Wait for a GCP to complete start one if needed
    CompleteIfRunning = 3,  ///< Wait for ongoing GCP
    CurrentGCI        = 8   ///< Immediately return current GCI
    CurrentGCI        = 8,  ///< Immediately return current GCI
    BlockStartGcp     = 9,
    UnblockStartGcp   = 10
  };

  Uint32 senderRef;
@@ -70,11 +72,12 @@ class WaitGCPConf {
  //friend class Grep::PSCoord;

public:
  STATIC_CONST( SignalLength = 2 );
  STATIC_CONST( SignalLength = 3 );
  
public:
  Uint32 senderData;
  Uint32 gcp;
  Uint32 blockStatus;
};

class WaitGCPRef {
Loading