Commit b6479b3b authored by unknown's avatar unknown
Browse files

Merge willster.(none):/home/stewart/Documents/MySQL/5.0/ndb

into  willster.(none):/home/stewart/Documents/MySQL/5.1/ndb


storage/ndb/src/mgmsrv/MgmtSrvr.cpp:
  Auto merged
storage/ndb/src/mgmsrv/MgmtSrvr.hpp:
  Auto merged
storage/ndb/src/mgmsrv/Services.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/backup/Backup.cpp:
  manual merge
storage/ndb/src/mgmclient/CommandInterpreter.cpp:
  manual merge
storage/ndb/src/ndbapi/ClusterMgr.cpp:
  manual merge
storage/ndb/src/ndbapi/ClusterMgr.hpp:
  manual merge
parents 94fda191 f32014a9
Loading
Loading
Loading
Loading
+40 −23
Original line number Diff line number Diff line
@@ -229,14 +229,23 @@ Backup::execCONTINUEB(Signal* signal)

    BackupRecordPtr ptr;
    c_backupPool.getPtr(ptr, ptr_I);

    if (tabPtr_I == RNIL)
    {
      closeFiles(signal, ptr);
      return;
    }
    jam();
    TablePtr tabPtr;
    ptr.p->tables.getPtr(tabPtr, tabPtr_I);
    jam();
    if(tabPtr.p->fragments.getSize())
    {
      FragmentPtr fragPtr;
      tabPtr.p->fragments.getPtr(fragPtr, fragPtr_I);

      BackupFilePtr filePtr;
      ptr.p->files.getPtr(filePtr, ptr.p->ctlFilePtr);

      const Uint32 sz = sizeof(BackupFormat::CtlFile::FragmentInfo) >> 2;
      Uint32 * dst;
      if (!filePtr.p->operation.dataBuffer.getWritePtr(&dst, sz))
@@ -259,6 +268,8 @@ Backup::execCONTINUEB(Signal* signal)
      filePtr.p->operation.dataBuffer.updateWritePtr(sz);

      fragPtr_I++;
    }

    if (fragPtr_I == tabPtr.p->fragments.getSize())
    {
      signal->theData[0] = tabPtr.p->tableId;
@@ -2040,6 +2051,12 @@ Backup::sendDropTrig(Signal* signal, BackupRecordPtr ptr)
        TablePtr tabPtr;
        ptr.p->tables.first(tabPtr);

        if(tabPtr.i == RNIL)
        {
          closeFiles(signal, ptr);
          return;
        }

        signal->theData[0] = BackupContinueB::BACKUP_FRAGMENT_INFO;
        signal->theData[1] = ptr.i;
        signal->theData[2] = tabPtr.i;
+25 −4
Original line number Diff line number Diff line
@@ -161,8 +161,15 @@ class CommandInterpreter {
  int try_reconnect;
  int m_error;
  struct NdbThread* m_event_thread;
  NdbMutex *m_print_mutex;
};

struct event_thread_param {
  NdbMgmHandle *m;
  NdbMutex **p;
};

NdbMutex* print_mutex;

/*
 * Facade object for CommandInterpreter
@@ -340,6 +347,7 @@ CommandInterpreter::CommandInterpreter(const char *_host,int verbose)
  m_connected= false;
  m_event_thread= 0;
  try_reconnect = 0;
  m_print_mutex= NdbMutex_Create();
}

/*
@@ -348,6 +356,7 @@ CommandInterpreter::CommandInterpreter(const char *_host,int verbose)
CommandInterpreter::~CommandInterpreter() 
{
  disconnect();
  NdbMutex_Destroy(m_print_mutex);
}

static bool 
@@ -384,11 +393,13 @@ CommandInterpreter::printError()

static int do_event_thread;
static void*
event_thread_run(void* m)
event_thread_run(void* p)
{
  DBUG_ENTER("event_thread_run");

  NdbMgmHandle handle= *(NdbMgmHandle*)m;
  struct event_thread_param param= *(struct event_thread_param*)p;
  NdbMgmHandle handle= *(param.m);
  NdbMutex* printmutex= *(param.p);

  int filter[] = { 15, NDB_MGM_EVENT_CATEGORY_BACKUP,
		   1, NDB_MGM_EVENT_CATEGORY_STARTUP,
@@ -406,8 +417,12 @@ event_thread_run(void* m)
      {
	const char ping_token[]= "<PING>";
	if (memcmp(ping_token,tmp,sizeof(ping_token)-1))
	  if(tmp && strlen(tmp))
          {
            Guard g(printmutex);
            ndbout << tmp;
          }
      }
    } while(do_event_thread);
    NDB_CLOSE_SOCKET(fd);
  }
@@ -459,8 +474,11 @@ CommandInterpreter::connect()
    assert(m_event_thread == 0);
    assert(do_event_thread == 0);
    do_event_thread= 0;
    struct event_thread_param p;
    p.m= &m_mgmsrv2;
    p.p= &m_print_mutex;
    m_event_thread = NdbThread_Create(event_thread_run,
                                      (void**)&m_mgmsrv2,
                                      (void**)&p,
                                      32768,
                                      "CommandInterpreted_event_thread",
                                      NDB_THREAD_PRIO_LOW);
@@ -547,6 +565,7 @@ CommandInterpreter::execute(const char *_line, int _try_reconnect,
  int result= execute_impl(_line);
  if (error)
    *error= m_error;

  return result;
}

@@ -626,6 +645,7 @@ CommandInterpreter::execute_impl(const char *_line)
    DBUG_RETURN(true);

  if (strcasecmp(firstToken, "SHOW") == 0) {
    Guard g(m_print_mutex);
    executeShow(allAfterFirstToken);
    DBUG_RETURN(true);
  }
@@ -853,6 +873,7 @@ CommandInterpreter::executeForAll(const char * cmd, ExecuteFunction fun,
    ndbout_c("Trying to start all nodes of system.");
    ndbout_c("Use ALL STATUS to see the system start-up phases.");
  } else {
    Guard g(m_print_mutex);
    struct ndb_mgm_cluster_state *cl= ndb_mgm_get_status(m_mgmsrv);
    if(cl == 0){
      ndbout_c("Unable get status from management server");
+8 −3
Original line number Diff line number Diff line
@@ -77,7 +77,6 @@
    }\
  }

extern int global_flag_send_heartbeat_now;
extern int g_no_nodeid_checks;
extern my_bool opt_core;

@@ -1450,6 +1449,12 @@ MgmtSrvr::exitSingleUser(int * stopCount, bool abort)

#include <ClusterMgr.hpp>

void
MgmtSrvr::updateStatus()
{
  theFacade->theClusterMgr->forceHB();
}

int 
MgmtSrvr::status(int nodeId, 
                 ndb_mgm_node_status * _status, 
@@ -2260,7 +2265,7 @@ MgmtSrvr::alloc_node_id(NodeId * nodeId,
  if (found_matching_type && !found_free_node) {
    // we have a temporary error which might be due to that 
    // we have got the latest connect status from db-nodes.  Force update.
    global_flag_send_heartbeat_now= 1;
    updateStatus();
  }

  BaseString type_string, type_c_string;
@@ -2603,7 +2608,7 @@ MgmtSrvr::Allocated_resources::~Allocated_resources()
  if (!m_reserved_nodes.isclear()) {
    m_mgmsrv.m_reserved_nodes.bitANDC(m_reserved_nodes); 
    // node has been reserved, force update signal to ndb nodes
    global_flag_send_heartbeat_now= 1;
    m_mgmsrv.updateStatus();

    char tmp_str[128];
    m_mgmsrv.m_reserved_nodes.getText(tmp_str);
+2 −0
Original line number Diff line number Diff line
@@ -485,6 +485,8 @@ public:
  void get_connected_nodes(NodeBitmask &connected_nodes) const;
  SocketServer *get_socket_server() { return m_socket_server; }

  void updateStatus();

  //**************************************************************************
private:
  //**************************************************************************
+1 −0
Original line number Diff line number Diff line
@@ -972,6 +972,7 @@ printNodeStatus(OutputStream *output,
		MgmtSrvr &mgmsrv,
		enum ndb_mgm_node_type type) {
  NodeId nodeId = 0;
  mgmsrv.updateStatus();
  while(mgmsrv.getNextNodeId(&nodeId, type)) {
    enum ndb_mgm_node_status status;
    Uint32 startPhase = 0, 
Loading