summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhil Mesnier <mesnier_p@ociweb.com>2013-05-20 16:42:50 +0000
committerPhil Mesnier <mesnier_p@ociweb.com>2013-05-20 16:42:50 +0000
commit22683126a750940b3fbc249a2ea051177625686c (patch)
tree76caaf3f641b36ba11cdc91eece7fb8a873e9fce
parent7133bb93aa34285800a21ced999f0e30ec8f8872 (diff)
downloadATCD-22683126a750940b3fbc249a2ea051177625686c.tar.gz
Mon May 20 16:41:51 UTC 2013 Phil Mesnier <mesnier_p@ociweb.com>
-rw-r--r--TAO/ChangeLog8
-rw-r--r--TAO/orbsvcs/ImplRepo_Service/AsyncListManager.cpp2
-rw-r--r--TAO/orbsvcs/ImplRepo_Service/LiveCheck.cpp56
-rw-r--r--TAO/orbsvcs/ImplRepo_Service/LiveCheck.h16
4 files changed, 70 insertions, 12 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog
index da0d6e6c3c8..a27c8f17fbc 100644
--- a/TAO/ChangeLog
+++ b/TAO/ChangeLog
@@ -1,3 +1,11 @@
+Mon May 20 16:41:51 UTC 2013 Phil Mesnier <mesnier_p@ociweb.com>
+
+ * orbsvcs/ImplRepo_Service/AsyncListManager.cpp:
+ * orbsvcs/ImplRepo_Service/LiveCheck.h:
+ * orbsvcs/ImplRepo_Service/LiveCheck.cpp:
+
+ Add and improve debugging output.
+
Mon May 20 13:52:00 UTC 2013 Simon Massey <simon dot massey at prismtech dot com>
* orbsvcs/tests/miop/McastLocal/run_test.pl:
diff --git a/TAO/orbsvcs/ImplRepo_Service/AsyncListManager.cpp b/TAO/orbsvcs/ImplRepo_Service/AsyncListManager.cpp
index f57435ea440..ad4bf4347eb 100644
--- a/TAO/orbsvcs/ImplRepo_Service/AsyncListManager.cpp
+++ b/TAO/orbsvcs/ImplRepo_Service/AsyncListManager.cpp
@@ -283,7 +283,7 @@ ListLiveListener::~ListLiveListener (void)
bool
ListLiveListener::start (void)
{
- bool rtn = this->pinger_.add_listener (this);
+ bool rtn = this->pinger_.add_poll_listener (this);
return rtn;
}
diff --git a/TAO/orbsvcs/ImplRepo_Service/LiveCheck.cpp b/TAO/orbsvcs/ImplRepo_Service/LiveCheck.cpp
index 58bd7c99ae3..99dfdd7f6f9 100644
--- a/TAO/orbsvcs/ImplRepo_Service/LiveCheck.cpp
+++ b/TAO/orbsvcs/ImplRepo_Service/LiveCheck.cpp
@@ -55,6 +55,28 @@ LiveListener::_remove_ref (void)
const int LiveEntry::reping_msec_[] = {10, 100, 500, 1000, 1000, 2000, 2000, 5000, 5000};
int LiveEntry::reping_limit_ = sizeof (LiveEntry::reping_msec_) / sizeof (int);
+const ACE_TCHAR *
+LiveEntry::status_name (LiveStatus s)
+{
+ switch (s)
+ {
+ case LS_UNKNOWN:
+ return ACE_TEXT ("UNKNOWN");
+ case LS_PING_AWAY:
+ return ACE_TEXT ("PING_AWAY");
+ case LS_DEAD:
+ return ACE_TEXT ("DEAD");
+ case LS_ALIVE:
+ return ACE_TEXT ("ALIVE");
+ case LS_TRANSIENT:
+ return ACE_TEXT ("TRANSIENT");
+ case LS_LAST_TRANSIENT:
+ return ACE_TEXT ("LAST_TRANSIENT");
+ case LS_TIMEDOUT:
+ return ACE_TEXT ("TIMEDOUT");
+ }
+}
+
void
LiveEntry::set_reping_limit (int max)
{
@@ -194,8 +216,10 @@ LiveEntry::status (LiveStatus l)
if (ImR_Locator_i::debug () > 2)
{
ORBSVCS_DEBUG ((LM_DEBUG,
- ACE_TEXT ("(%P|%t) LiveEntry::status change, server = %C status = %d\n"),
- this->server_.c_str(), this->liveliness_));
+ ACE_TEXT ("(%P|%t) LiveEntry::status change, ")
+ ACE_TEXT ("server = %C status = %s\n"),
+ this->server_.c_str(),
+ status_name (this->liveliness_)));
}
this->owner_->schedule_ping (this);
}
@@ -222,8 +246,8 @@ LiveEntry::validate_ping (bool &want_reping, ACE_Time_Value& next)
{
ORBSVCS_DEBUG ((LM_DEBUG,
ACE_TEXT ("(%P|%t) LiveEntry::validate_ping, status ")
- ACE_TEXT ("= %d, listeners = %d server %C\n"),
- this->liveliness_, this->listeners_.size (),
+ ACE_TEXT ("= %s, listeners = %d server %C\n"),
+ status_name (this->liveliness_), this->listeners_.size (),
this->server_.c_str()));
}
return false;
@@ -242,10 +266,10 @@ LiveEntry::validate_ping (bool &want_reping, ACE_Time_Value& next)
{
ORBSVCS_DEBUG ((LM_DEBUG,
ACE_TEXT ("(%P|%t) LiveEntry::validate_ping, ")
- ACE_TEXT ("status = %d, listeners = %d, ")
+ ACE_TEXT ("status = %s, listeners = %d, ")
ACE_TEXT ("diff = %d,%d, msec = %d ")
ACE_TEXT ("server %C\n"),
- this->liveliness_, this->listeners_.size (),
+ status_name (this->liveliness_), this->listeners_.size (),
diff.sec(), diff.usec(), msec,
this->server_.c_str()));
}
@@ -315,11 +339,23 @@ LiveEntry::do_ping (PortableServer::POA_ptr poa)
try
{
this->ref_->sendc_ping (cb.in());
+ if (ImR_Locator_i::debug () > 3)
+ {
+ ORBSVCS_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("(%P|%t) LiveEntry::do_ping, ")
+ ACE_TEXT ("sendc_ping returned OK\n")));
+ }
ACE_GUARD (TAO_SYNCH_MUTEX, mon, this->lock_);
this->liveliness_ = LS_PING_AWAY;
}
- catch (CORBA::Exception &)
+ catch (CORBA::Exception &ex)
{
+ if (ImR_Locator_i::debug () > 3)
+ {
+ ORBSVCS_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("(%P|%t) LiveEntry::do_ping, ")
+ ACE_TEXT ("sendc_ping threw %C\n"), ex._name()));
+ }
this->status (LS_DEAD);
}
}
@@ -469,7 +505,7 @@ LiveCheck::handle_timeout (const ACE_Time_Value &,
}
else
{
- if (ImR_Locator_i::debug () > 5)
+ if (ImR_Locator_i::debug () > 4)
{
ORBSVCS_DEBUG ((LM_DEBUG,
ACE_TEXT ("(%P|%t) LiveCheck::handle_timeout(%d)")
@@ -509,8 +545,8 @@ LiveCheck::handle_timeout (const ACE_Time_Value &,
{
ORBSVCS_DEBUG ((LM_DEBUG,
ACE_TEXT ("(%P|%t) LiveCheck::handle_timeout(%d),")
- ACE_TEXT (" want reping, delay = %d,%d\n"),
- token, delay.sec(), delay.usec()));
+ ACE_TEXT (" want reping(%d), delay = %d,%d\n"),
+ token, this->token_, delay.sec(), delay.usec()));
}
this->reactor()->schedule_timer (this, reinterpret_cast<void *>(this->token_), delay);
}
diff --git a/TAO/orbsvcs/ImplRepo_Service/LiveCheck.h b/TAO/orbsvcs/ImplRepo_Service/LiveCheck.h
index da5195b9e79..005ae3a3005 100644
--- a/TAO/orbsvcs/ImplRepo_Service/LiveCheck.h
+++ b/TAO/orbsvcs/ImplRepo_Service/LiveCheck.h
@@ -26,6 +26,7 @@
#include "tao/Intrusive_Ref_Count_Handle_T.h"
class LiveCheck;
+class LiveEntry;
//---------------------------------------------------------------------------
/*
@@ -34,9 +35,11 @@ class LiveCheck;
* @brief indication of the known condition of a target server
*
* LS_UNKNOWN - The server hasn't yet been pinged
+ * LS_PING_AWAY - A ping request has been issued, waiting for reply
* LS_DEAD - The ping failed for reasons other than POA Activation
* LS_ALIVE - The server positively acknowledged a ping
* LS_TRANSIENT - The server connected, but acively raised a transient
+ * LS_LAST_TRANSIENT - The maximum number of retries is reached
* LS_TIMEDOUT - The server connected, but never returned any result.
*/
enum LiveStatus {
@@ -71,6 +74,12 @@ class Locator_Export LiveListener
virtual ~LiveListener (void);
+ /// sets the initial status volue, set by entry during an add_listener call
+ void entry (const LiveEntry *entry);
+
+ /// Query the status of the associated entry
+ LiveStatus status (void) const;
+
/// called by the asynch ping receiver when a reply or an exception
/// is received. Returns true if finished listening
virtual bool status_changed (LiveStatus status) = 0;
@@ -81,9 +90,11 @@ class Locator_Export LiveListener
LiveListener *_add_ref (void);
void _remove_ref (void);
- private:
+ protected:
ACE_CString server_;
+ const LiveEntry *entry_;
+ private:
int refcount_;
TAO_SYNCH_MUTEX lock_;
};
@@ -115,6 +126,9 @@ class Locator_Export LiveEntry
void status (LiveStatus l);
void reset_status (void);
+ /// the current state value as text
+ static const char *status_name (LiveStatus s);
+
void update_listeners (void);
bool validate_ping (bool &want_reping, ACE_Time_Value &next);
void do_ping (PortableServer::POA_ptr poa);