summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/ImplRepo_Service
diff options
context:
space:
mode:
authorJohnny Willemsen <jwillemsen@remedy.nl>2018-12-03 14:22:03 +0100
committerJohnny Willemsen <jwillemsen@remedy.nl>2018-12-03 14:22:03 +0100
commit94a67e4036a94c460d7be1159833a2f88d1eb1dd (patch)
tree468d44c6bf16ca466885542c26068b945a9a63d8 /TAO/orbsvcs/ImplRepo_Service
parent9775fc2579139ee5b9acf816da12f4d63fc4197a (diff)
downloadATCD-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.cpp45
-rw-r--r--TAO/orbsvcs/ImplRepo_Service/AsyncAccessManager.h2
-rw-r--r--TAO/orbsvcs/ImplRepo_Service/ImR_Activator_i.cpp2
-rw-r--r--TAO/orbsvcs/ImplRepo_Service/ImR_Locator.idl1
-rw-r--r--TAO/orbsvcs/ImplRepo_Service/LiveCheck.cpp2
-rw-r--r--TAO/orbsvcs/ImplRepo_Service/Locator_Repository.cpp6
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;