diff options
author | Johnny Willemsen <jwillemsen@remedy.nl> | 2018-12-03 14:22:03 +0100 |
---|---|---|
committer | Johnny Willemsen <jwillemsen@remedy.nl> | 2018-12-03 14:22:03 +0100 |
commit | 94a67e4036a94c460d7be1159833a2f88d1eb1dd (patch) | |
tree | 468d44c6bf16ca466885542c26068b945a9a63d8 /TAO/orbsvcs/ImplRepo_Service | |
parent | 9775fc2579139ee5b9acf816da12f4d63fc4197a (diff) | |
download | ATCD-94a67e4036a94c460d7be1159833a2f88d1eb1dd.tar.gz |
Removed AAM_ACTIVATION_SENT status, at the moment we do an AMI start_server we just ignore the successful AMI reply and don't update the status, when the system is very very busy it can be that the server is already running before our AMI reply from start_server gets invoked, putting the pid to 0 at that moment causes the server status to go from running back to wait_for_reply
* TAO/orbsvcs/ImplRepo_Service/AsyncAccessManager.cpp:
* TAO/orbsvcs/ImplRepo_Service/AsyncAccessManager.h:
* TAO/orbsvcs/ImplRepo_Service/ImR_Activator_i.cpp:
* TAO/orbsvcs/ImplRepo_Service/ImR_Locator.idl:
* TAO/orbsvcs/ImplRepo_Service/LiveCheck.cpp:
* TAO/orbsvcs/ImplRepo_Service/Locator_Repository.cpp:
Diffstat (limited to 'TAO/orbsvcs/ImplRepo_Service')
-rw-r--r-- | TAO/orbsvcs/ImplRepo_Service/AsyncAccessManager.cpp | 45 | ||||
-rw-r--r-- | TAO/orbsvcs/ImplRepo_Service/AsyncAccessManager.h | 2 | ||||
-rw-r--r-- | TAO/orbsvcs/ImplRepo_Service/ImR_Activator_i.cpp | 2 | ||||
-rw-r--r-- | TAO/orbsvcs/ImplRepo_Service/ImR_Locator.idl | 1 | ||||
-rw-r--r-- | TAO/orbsvcs/ImplRepo_Service/LiveCheck.cpp | 2 | ||||
-rw-r--r-- | TAO/orbsvcs/ImplRepo_Service/Locator_Repository.cpp | 6 |
6 files changed, 34 insertions, 24 deletions
diff --git a/TAO/orbsvcs/ImplRepo_Service/AsyncAccessManager.cpp b/TAO/orbsvcs/ImplRepo_Service/AsyncAccessManager.cpp index 1e363ce11e8..918440ed01f 100644 --- a/TAO/orbsvcs/ImplRepo_Service/AsyncAccessManager.cpp +++ b/TAO/orbsvcs/ImplRepo_Service/AsyncAccessManager.cpp @@ -323,8 +323,6 @@ AsyncAccessManager::status_name (ImplementationRepository::AAM_Status s) return "INIT"; case ImplementationRepository::AAM_SERVER_STARTED_RUNNING: return "SERVER_STARTED_RUNNING"; - case ImplementationRepository::AAM_ACTIVATION_SENT: - return "ACTIVATION_SENT"; case ImplementationRepository::AAM_WAIT_FOR_RUNNING: return "WAIT_FOR_RUNNING"; case ImplementationRepository::AAM_WAIT_FOR_PING: @@ -375,24 +373,25 @@ void AsyncAccessManager::update_status (ImplementationRepository::AAM_Status s) { this->status (s); + if (ImR_Locator_i::debug () > 4) + { + this->report ("update_status"); + } this->info_.notify_remote_access (s); } void -AsyncAccessManager::activator_replied (bool success, int pid) +AsyncAccessManager::activator_replied_start_running (bool success, int pid) { + if (ImR_Locator_i::debug () > 4) + { + this->report ("activator_replied_start_running"); + } + if (success) { - if (pid == 0) - { - this->update_status (ImplementationRepository::AAM_WAIT_FOR_RUNNING); - } - else + if (pid != 0) { - if (ImR_Locator_i::debug () > 4) - { - this->report ("activator_replied"); - } this->update_status (ImplementationRepository::AAM_SERVER_READY); this->info_.edit()->pid = pid; this->final_state (); @@ -665,7 +664,7 @@ AsyncAccessManager::send_start_request (void) startup->cmdline.c_str (), startup->dir.c_str (), startup->env_vars); - this->update_status (ImplementationRepository::AAM_ACTIVATION_SENT); + this->update_status (ImplementationRepository::AAM_WAIT_FOR_RUNNING); return true; } @@ -702,7 +701,6 @@ ActivatorReceiver::ActivatorReceiver (AsyncAccessManager *aam, { } - ActivatorReceiver::~ActivatorReceiver (void) { } @@ -710,7 +708,13 @@ ActivatorReceiver::~ActivatorReceiver (void) void ActivatorReceiver::start_server (void) { - this->aam_->activator_replied (true, 0); + if (ImR_Locator_i::debug () > 4) + { + ORBSVCS_DEBUG ((LM_DEBUG, + ACE_TEXT ("(%P|%t) ActivatorReceiver(%@)::start_server, received start_server reply\n"), + this)); + } + PortableServer::ObjectId_var oid = this->poa_->servant_to_id (this); poa_->deactivate_object (oid.in()); } @@ -718,6 +722,13 @@ ActivatorReceiver::start_server (void) void ActivatorReceiver::start_server_excep (Messaging::ExceptionHolder *holder) { + if (ImR_Locator_i::debug () > 4) + { + ORBSVCS_DEBUG ((LM_DEBUG, + ACE_TEXT ("(%P|%t) ActivatorReceiver(%@)::start_server_excep, received start_server_excep reply\n"), + this)); + } + try { holder->raise_exception (); @@ -727,11 +738,11 @@ ActivatorReceiver::start_server_excep (Messaging::ExceptionHolder *holder) if (ACE_OS::strstr (ca.reason.in(),"pid:") == ca.reason.in()) { int const pid = ACE_OS::atoi (ca.reason.in()+4); - this->aam_->activator_replied (true, pid); + this->aam_->activator_replied_start_running (true, pid); } else { - this->aam_->activator_replied (false, 0); + this->aam_->activator_replied_start_running (false, 0); } } PortableServer::ObjectId_var oid = this->poa_->servant_to_id (this); diff --git a/TAO/orbsvcs/ImplRepo_Service/AsyncAccessManager.h b/TAO/orbsvcs/ImplRepo_Service/AsyncAccessManager.h index 27038e826e4..1632d41e065 100644 --- a/TAO/orbsvcs/ImplRepo_Service/AsyncAccessManager.h +++ b/TAO/orbsvcs/ImplRepo_Service/AsyncAccessManager.h @@ -67,7 +67,7 @@ class Locator_Export AsyncAccessManager ImplementationRepository::AAM_Status status (void) const; bool force_remove_rh (ImR_ResponseHandler *rh); - void activator_replied (bool success, int pid); + void activator_replied_start_running (bool success, int pid); void server_is_running (const char *partial_ior, ImplementationRepository::ServerObject_ptr ref); void server_is_shutting_down (void); diff --git a/TAO/orbsvcs/ImplRepo_Service/ImR_Activator_i.cpp b/TAO/orbsvcs/ImplRepo_Service/ImR_Activator_i.cpp index 9267d47a2c3..8a278a675bd 100644 --- a/TAO/orbsvcs/ImplRepo_Service/ImR_Activator_i.cpp +++ b/TAO/orbsvcs/ImplRepo_Service/ImR_Activator_i.cpp @@ -497,7 +497,7 @@ ImR_Activator_i::start_server(const char* name, // handles. This includes stdin, stdout, logs, etc. proc_opts.handle_inheritance (0); - // We always enable the unicode environmet buffer on Windows. This works + // We always enable the unicode environment buffer on Windows. This works // around a 32kb environment buffer limitation. This must come before any of // the setenv() calls, since the first of those will copy the current // process's environment. diff --git a/TAO/orbsvcs/ImplRepo_Service/ImR_Locator.idl b/TAO/orbsvcs/ImplRepo_Service/ImR_Locator.idl index 078c935203c..fdbd0490a8e 100644 --- a/TAO/orbsvcs/ImplRepo_Service/ImR_Locator.idl +++ b/TAO/orbsvcs/ImplRepo_Service/ImR_Locator.idl @@ -49,7 +49,6 @@ module ImplementationRepository { AAM_INIT, AAM_SERVER_STARTED_RUNNING, - AAM_ACTIVATION_SENT, AAM_WAIT_FOR_RUNNING, AAM_WAIT_FOR_PING, AAM_WAIT_FOR_ALIVE, diff --git a/TAO/orbsvcs/ImplRepo_Service/LiveCheck.cpp b/TAO/orbsvcs/ImplRepo_Service/LiveCheck.cpp index 46ff2493b9f..0e067706c88 100644 --- a/TAO/orbsvcs/ImplRepo_Service/LiveCheck.cpp +++ b/TAO/orbsvcs/ImplRepo_Service/LiveCheck.cpp @@ -389,7 +389,7 @@ LiveEntry::validate_ping (bool &want_reping, ACE_Time_Value& next) case LS_TRANSIENT: case LS_LAST_TRANSIENT: { - int ms = this->next_reping (); + int const ms = this->next_reping (); if (ms != -1) { ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_, false); diff --git a/TAO/orbsvcs/ImplRepo_Service/Locator_Repository.cpp b/TAO/orbsvcs/ImplRepo_Service/Locator_Repository.cpp index 391ed6e9600..2e799b0a317 100644 --- a/TAO/orbsvcs/ImplRepo_Service/Locator_Repository.cpp +++ b/TAO/orbsvcs/ImplRepo_Service/Locator_Repository.cpp @@ -483,7 +483,7 @@ Locator_Repository::get_active_server (const ACE_CString& name, int pid) if (name.find ("JACORB:") == ACE_CString::npos) { ACE_CString jo_key ("JACORB:"); - ACE_CString::size_type pos = name.find (':'); + ACE_CString::size_type const pos = name.find (':'); if (pos == ACE_CString::npos) { jo_key += name; @@ -521,7 +521,7 @@ int Locator_Repository::remove_server (const ACE_CString& name, ImR_Locator_i* imr_locator) { - int err = sync_load (); + int const err = sync_load (); if (err != 0) { return err; @@ -557,7 +557,7 @@ Locator_Repository::remove_server (const ACE_CString& name, for (CORBA::ULong i = 0; i < si->peers.length(); i++) { ACE_CString key; - ACE_CString peer (si->peers[i]); + ACE_CString const peer (si->peers[i]); Server_Info::gen_key (si->server_id, peer, key); Server_Info_Ptr si2; |