Commit 55d0f258 authored by unknown's avatar unknown
Browse files

making sure that the client connect loop and server accept is stopped early at ndbd shutdown

parent fe82f474
Loading
Loading
Loading
Loading
+2 −9
Original line number Diff line number Diff line
@@ -183,11 +183,9 @@ int main(int argc, char** argv)
    assert("Illegal state globalData.theRestartFlag" == 0);
  }

  SocketServer socket_server;

  globalTransporterRegistry.startSending();
  globalTransporterRegistry.startReceiving();
  if (!globalTransporterRegistry.start_service(socket_server)){
  if (!globalTransporterRegistry.start_service(*globalEmulatorData.m_socket_server)){
    ndbout_c("globalTransporterRegistry.start_service() failed");
    exit(-1);
  }
@@ -199,7 +197,7 @@ int main(int argc, char** argv)

  globalEmulatorData.theWatchDog->doStart();
  
  socket_server.startServer();
  globalEmulatorData.m_socket_server->startServer();

  //  theConfig->closeConfiguration();

@@ -207,11 +205,6 @@ int main(int argc, char** argv)
  
  NdbShutdown(NST_Normal);

  socket_server.stopServer();
  socket_server.stopSessions();

  globalTransporterRegistry.stop_clients();

  return NRT_Default;
}

+17 −1
Original line number Diff line number Diff line
@@ -68,6 +68,7 @@ EmulatorData::EmulatorData(){
  theThreadConfig  = 0;
  theSimBlockList  = 0;
  theShutdownMutex = 0;
  m_socket_server = 0;
}

void
@@ -83,6 +84,7 @@ EmulatorData::create(){
  theWatchDog      = new WatchDog();
  theThreadConfig  = new ThreadConfig();
  theSimBlockList  = new SimBlockList();
  m_socket_server  = new SocketServer();

  theShutdownMutex = NdbMutex_Create();

@@ -99,7 +101,8 @@ EmulatorData::destroy(){
    delete theThreadConfig; theThreadConfig = 0;
  if(theSimBlockList)
    delete theSimBlockList; theSimBlockList = 0;
  
  if(m_socket_server)
    delete m_socket_server; m_socket_server = 0;
  NdbMem_Destroy();
}

@@ -195,9 +198,22 @@ NdbShutdown(NdbShutdownType type,
      fclose(outputStream);
#endif
    
    /**
     * Stop all transporter connection attempts and accepts
     */
    globalEmulatorData.m_socket_server->stopServer();
    globalEmulatorData.m_socket_server->stopSessions();
    globalTransporterRegistry.stop_clients();

    /**
     * Stop transporter communication with other nodes
     */
    globalTransporterRegistry.stopSending();
    globalTransporterRegistry.stopReceiving();
    
    /**
     * Remove all transporters
     */
    globalTransporterRegistry.removeAll();
    
#ifdef VM_TRACE
+2 −1
Original line number Diff line number Diff line
@@ -55,6 +55,7 @@ struct EmulatorData {
  class WatchDog      * theWatchDog;
  class ThreadConfig  * theThreadConfig;
  class SimBlockList  * theSimBlockList;
  class SocketServer  * m_socket_server;

  /**
   * Constructor