diff options
author | elliott_c <elliott_c@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2008-07-07 12:11:54 +0000 |
---|---|---|
committer | elliott_c <elliott_c@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2008-07-07 12:11:54 +0000 |
commit | a7fd5f78ebab9373c22ab4e3be155016190605e0 (patch) | |
tree | 83725c0370adc3a6aea1eca52e56797e84a96e5b | |
parent | 4f5a0ca8fbac5cdda79aca78f9626db27ca3c7fb (diff) | |
download | ATCD-a7fd5f78ebab9373c22ab4e3be155016190605e0.tar.gz |
ChangeLogTag: Mon Jul 7 12:09:10 UTC 2008 Chad Elliott <elliott_c@ociweb.com>
-rw-r--r-- | TAO/ChangeLog | 44 | ||||
-rw-r--r-- | TAO/orbsvcs/examples/Notify/MC/TkMonitor/README | 2 | ||||
-rwxr-xr-x | TAO/orbsvcs/examples/Notify/MC/TkMonitor/external_idl.pl | 24 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/Notify/Admin.cpp | 7 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/Notify/Admin.h | 4 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/Notify/Consumer.cpp | 13 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/Notify/Consumer.h | 4 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/Notify/EventChannel.cpp | 6 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/Notify/EventChannel.h | 3 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/Notify/MonitorControlExt/MonitorEventChannel.cpp | 69 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/Notify/MonitorControlExt/MonitorEventChannel.h | 8 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/Notify/MonitorControlExt/NotifyMonitoringExt.idl | 3 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/Notify/ProxyConsumer.cpp | 2 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/Notify/ProxySupplier.cpp | 8 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/Notify/ProxySupplier.h | 4 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/Notify/Sequence/SequencePushConsumer.cpp | 6 |
16 files changed, 181 insertions, 26 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog index ae2e5367e47..7c8292435f1 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -1,3 +1,47 @@ +Mon Jul 7 12:09:10 UTC 2008 Chad Elliott <elliott_c@ociweb.com> + + * orbsvcs/examples/Notify/MC/TkMonitor/README: + + Added more info on how to run the example. + + * orbsvcs/examples/Notify/MC/TkMonitor/external_idl.pl: + + Fixed up the script for the monitor idl changes. + + * orbsvcs/orbsvcs/Notify/Admin.h: + * orbsvcs/orbsvcs/Notify/Admin.cpp: + * orbsvcs/orbsvcs/Notify/EventChannel.h: + * orbsvcs/orbsvcs/Notify/EventChannel.cpp: + + Added a parameter to cleanup_proxy that allows the caller to + indicate if a timeout was experienced. + + * orbsvcs/orbsvcs/Notify/Consumer.h: + * orbsvcs/orbsvcs/Notify/Consumer.cpp: + * orbsvcs/orbsvcs/Notify/Sequence/SequencePushConsumer.cpp: + + If a timeout occurred, indicate this by returning a status of + DISPATCH_FAIL_TIMEOUT. + + * orbsvcs/orbsvcs/Notify/ProxyConsumer.cpp: + + We're not keeping track of consumer proxies, so pass false to the + cleanup_proxy method. + + * orbsvcs/orbsvcs/Notify/ProxySupplier.h: + * orbsvcs/orbsvcs/Notify/ProxySupplier.cpp: + + Added a destroy method that takes a boolean to indicate if a + timeout had occurred. This flag is passed to cleanup_proxy called + on the consumer admin. + + * orbsvcs/orbsvcs/Notify/MonitorControlExt/MonitorEventChannel.h: + * orbsvcs/orbsvcs/Notify/MonitorControlExt/MonitorEventChannel.cpp: + * orbsvcs/orbsvcs/Notify/MonitorControlExt/NotifyMonitoringExt.idl: + + Added a text based monitor to keep track of consumers that were + removed due to a timeout. + Mon Jul 7 11:44:40 UTC 2008 Chad Elliott <elliott_c@ociweb.com> * orbsvcs/ImplRepo_Service/ImR_Activator_i.cpp: diff --git a/TAO/orbsvcs/examples/Notify/MC/TkMonitor/README b/TAO/orbsvcs/examples/Notify/MC/TkMonitor/README index 83b19f720ab..0af58a9b919 100644 --- a/TAO/orbsvcs/examples/Notify/MC/TkMonitor/README +++ b/TAO/orbsvcs/examples/Notify/MC/TkMonitor/README @@ -5,7 +5,7 @@ It will require some form of make (GNU make, nmake, Borland make, etc.) You must have the TAO_ROOT environment variable set to the full path of the TAO directory and you must also have the OPALORB_ROOT environment variable set to the full path of opalORB. Then run make. It will generate the stubs -and at that point you are ready to run monitor.pl. +and at that point you are ready to run monitor.pl -ORBInitRef NameService=... By default, the monitor interface will use the Name Service to locate the monitor service. However, an IOR can be passed as the first parameter to diff --git a/TAO/orbsvcs/examples/Notify/MC/TkMonitor/external_idl.pl b/TAO/orbsvcs/examples/Notify/MC/TkMonitor/external_idl.pl index 6f6d48762f1..c5923350f83 100755 --- a/TAO/orbsvcs/examples/Notify/MC/TkMonitor/external_idl.pl +++ b/TAO/orbsvcs/examples/Notify/MC/TkMonitor/external_idl.pl @@ -26,15 +26,15 @@ if (!defined $ENV{OPALORB_ROOT}) { exit(1); } -my($rm) = undef; -my($root) = undef; +my $rm; +my @includes; for(my $i = 0; $i <= $#ARGV; $i++) { if ($ARGV[$i] eq '-r') { $rm = $i + 1; last; } else { - $root = $ARGV[$i]; + push(@includes, $ARGV[$i]); } } @@ -45,16 +45,16 @@ if ($rm) { exit(0); } -if (!defined $root) { +if (!defined $includes[0]) { if (defined $ENV{NOTIFY_ROOT}) { - $root = $ENV{NOTIFY_ROOT}; + push(@includes, $ENV{NOTIFY_ROOT}); } elsif (defined $ENV{TAO_ROOT}) { - $root = "$ENV{TAO_ROOT}/orbsvcs/orbsvcs"; + push(@includes, $ENV{TAO_ROOT}, "$ENV{TAO_ROOT}/orbsvcs/orbsvcs"); } } -if (!defined $root) { +if (!defined $includes[0]) { print STDERR "Please provide the full path ", "to the Notify Service IDL files\n"; exit(1); @@ -62,5 +62,13 @@ if (!defined $root) { foreach my $i ('Notify/MonitorControl/NotificationServiceMC.idl', 'Notify/MonitorControlExt/NotifyMonitoringExt.idl') { - system("$ENV{OPALORB_ROOT}/idl/idl.pl --include $root --include $root/.. --client $root/$i"); + my $root; + my $cmd = "$ENV{OPALORB_ROOT}/idl/idl.pl --client"; + foreach my $include (@includes) { + $cmd .= " --include $include --include $include/.."; + if (-r "$include/$i") { + $cmd .= " $include/$i"; + } + } + system($cmd); } diff --git a/TAO/orbsvcs/orbsvcs/Notify/Admin.cpp b/TAO/orbsvcs/orbsvcs/Notify/Admin.cpp index 76a5973b439..a0969d81032 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Admin.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Admin.cpp @@ -68,13 +68,14 @@ TAO_Notify_Admin::init (TAO_Notify::Topology_Parent* parent) } void -TAO_Notify_Admin::cleanup_proxy (TAO_Notify_Proxy *proxy - , bool is_supplier) +TAO_Notify_Admin::cleanup_proxy (TAO_Notify_Proxy *proxy, + bool is_supplier, + bool experienced_timeout) { // We must clean up the proxy before calling remove. Doing it in the // opposite order causes us to use invalid memory (through the call of // id() into the proxy). - ec_->cleanup_proxy (proxy->id(), is_supplier); + ec_->cleanup_proxy (proxy->id(), is_supplier, experienced_timeout); this->remove (proxy); } diff --git a/TAO/orbsvcs/orbsvcs/Notify/Admin.h b/TAO/orbsvcs/orbsvcs/Notify/Admin.h index 62065013559..62037ff3c31 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Admin.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Admin.h @@ -57,7 +57,9 @@ public: void insert (TAO_Notify_Proxy* proxy); /// Remove type from container_ and cleanup any EC resources. - void cleanup_proxy (TAO_Notify_Proxy *proxy, bool is_supplier); + void cleanup_proxy (TAO_Notify_Proxy *proxy, + bool is_supplier, + bool experienced_timeout); /// Access Admin FilterAdmin. TAO_Notify_FilterAdmin& filter_admin (void); diff --git a/TAO/orbsvcs/orbsvcs/Notify/Consumer.cpp b/TAO/orbsvcs/orbsvcs/Notify/Consumer.cpp index f461665e9cc..a25b15f0189 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Consumer.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Consumer.cpp @@ -149,6 +149,7 @@ TAO_Notify_Consumer::deliver (TAO_Notify_Method_Request_Event * request) bool queued = enqueue_if_necessary (request); if (!queued) { + bool from_timeout = false; DispatchStatus status = this->dispatch_request (request); switch (status) { @@ -181,6 +182,9 @@ TAO_Notify_Consumer::deliver (TAO_Notify_Method_Request_Event * request) request->complete (); break; } + case DISPATCH_FAIL_TIMEOUT: + from_timeout = true; + // Fall through case DISPATCH_FAIL: { if (DEBUG_LEVEL > 0) @@ -193,7 +197,7 @@ TAO_Notify_Consumer::deliver (TAO_Notify_Method_Request_Event * request) request->complete (); try { - this->proxy_supplier ()->destroy (); + this->proxy_supplier ()->destroy (from_timeout); } catch (const CORBA::Exception&) { @@ -282,7 +286,7 @@ TAO_Notify_Consumer::dispatch_request (TAO_Notify_Method_Request_Event * request this->proxy ()->id (), ex._info().c_str () )); - result = DISPATCH_FAIL; + result = DISPATCH_FAIL_TIMEOUT; } catch (const CORBA::COMM_FAILURE& ex) { @@ -322,7 +326,8 @@ TAO_Notify_Consumer::dispatch_request (TAO_Notify_Method_Request_Event * request // for persistent events that haven't timed out // convert "FAIL" & "DISCARD" to "RETRY" // for transient events, convert RETRY to DISCARD (hey, best_effort.) - if (result == DISPATCH_FAIL || result == DISPATCH_DISCARD) + if (result == DISPATCH_FAIL || + result == DISPATCH_FAIL_TIMEOUT || result == DISPATCH_DISCARD) { if (request->should_retry ()) { @@ -408,7 +413,7 @@ TAO_Notify_Consumer::dispatch_batch (const CosNotification::EventBatch& batch) this->proxy ()->id (), ex._info().c_str () )); - result = DISPATCH_FAIL; + result = DISPATCH_FAIL_TIMEOUT; } catch (const CORBA::COMM_FAILURE& ex) { diff --git a/TAO/orbsvcs/orbsvcs/Notify/Consumer.h b/TAO/orbsvcs/orbsvcs/Notify/Consumer.h index 57d309bee27..a81c6e22b02 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Consumer.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Consumer.h @@ -52,7 +52,9 @@ public: DISPATCH_SUCCESS, DISPATCH_RETRY, // retry this message DISPATCH_DISCARD, // discard this message - DISPATCH_FAIL}; // discard all messages and disconnect consumer + DISPATCH_FAIL, // discard all messages and disconnect consumer + DISPATCH_FAIL_TIMEOUT // Same as DISPATCH_FAIL, but due to a timeout + }; public: /// Constructor diff --git a/TAO/orbsvcs/orbsvcs/Notify/EventChannel.cpp b/TAO/orbsvcs/orbsvcs/Notify/EventChannel.cpp index 2292e6ef782..7a94054fb86 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/EventChannel.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/EventChannel.cpp @@ -196,8 +196,10 @@ TAO_Notify_EventChannel::release (void) } void -TAO_Notify_EventChannel::cleanup_proxy (CosNotifyChannelAdmin::ProxyID, bool) -{ } +TAO_Notify_EventChannel::cleanup_proxy (CosNotifyChannelAdmin::ProxyID, + bool, bool) +{ +} int TAO_Notify_EventChannel::shutdown (void) diff --git a/TAO/orbsvcs/orbsvcs/Notify/EventChannel.h b/TAO/orbsvcs/orbsvcs/Notify/EventChannel.h index 4ae9d9c1f9f..f1db9a72c67 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/EventChannel.h +++ b/TAO/orbsvcs/orbsvcs/Notify/EventChannel.h @@ -95,7 +95,8 @@ public: // cleanup any proxy resources held by the EC virtual void cleanup_proxy (CosNotifyChannelAdmin::ProxyID id, - bool is_supplier); + bool is_supplier, + bool experienced_timeout); /// Shutdown virtual int shutdown (void); diff --git a/TAO/orbsvcs/orbsvcs/Notify/MonitorControlExt/MonitorEventChannel.cpp b/TAO/orbsvcs/orbsvcs/Notify/MonitorControlExt/MonitorEventChannel.cpp index a514cc2dc69..6c5d033694a 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/MonitorControlExt/MonitorEventChannel.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/MonitorControlExt/MonitorEventChannel.cpp @@ -73,6 +73,27 @@ private: bool is_supplier_; }; +class EventChannelTimedoutConsumers + : public TAO_Dynamic_Statistic<TAO_MonitorEventChannel> +{ +public: + EventChannelTimedoutConsumers (TAO_MonitorEventChannel* ec, + const ACE_CString& name, + Monitor_Base::Information_Type type) + : TAO_Dynamic_Statistic<TAO_MonitorEventChannel> (ec, + name.c_str (), + type) + { + } + + virtual void update (void) + { + Monitor_Control_Types::NameList list; + this->interf_->get_timedout_consumers (&list); + this->receive (list); + } +}; + class EventChannelConsumerSupplierAdmins : public TAO_Dynamic_Statistic<TAO_MonitorEventChannel> { @@ -438,7 +459,8 @@ TAO_MonitorEventChannel::map_consumer_proxy ( void TAO_MonitorEventChannel::cleanup_proxy (CosNotifyChannelAdmin::ProxyID id, - bool is_supplier) + bool is_supplier, + bool experienced_timeout) { ACE_CString name; @@ -454,6 +476,16 @@ TAO_MonitorEventChannel::cleanup_proxy (CosNotifyChannelAdmin::ProxyID id, // cause an unexpected exception call which will cause the program to // abort. this->supplier_map_.unbind (id, name); + + // If this supplier proxy is being cleaned up because it + // experienced a timeout, we need to add it to the timeout supplier + // map. + if (experienced_timeout && name.length () != 0) + { + ACE_WRITE_GUARD (ACE_SYNCH_RW_MUTEX, tguard, + this->timedout_supplier_mutex_); + this->timedout_supplier_map_.bind (id, name); + } } else { @@ -563,6 +595,26 @@ TAO_MonitorEventChannel::add_stats (const char* name) consumers->remove_ref (); stat_name = dir_name + + NotifyMonitoringExt::EventChannelTimedoutConsumerNames; + EventChannelTimedoutConsumers* tconsumers = 0; + ACE_NEW_THROW_EX (tconsumers, + EventChannelTimedoutConsumers ( + this, + stat_name.c_str (), + Monitor_Base::MC_LIST), + CORBA::NO_MEMORY ()); + + if (!this->register_statistic (stat_name, tconsumers)) + { + ACE_ERROR ((LM_ERROR, + "Unable to add statistic %s\n", + stat_name.c_str ())); + } + + // Registry manages refcount, so we do this regardless. + tconsumers->remove_ref (); + + stat_name = dir_name + NotifyMonitoringExt::EventChannelSupplierCount; EventChannelConsumersSuppliers* suppliers = 0; ACE_NEW_THROW_EX (suppliers, @@ -964,6 +1016,21 @@ TAO_MonitorEventChannel::get_consumers ( return count; } +void +TAO_MonitorEventChannel::get_timedout_consumers ( + Monitor_Control_Types::NameList* names) +{ + ACE_READ_GUARD (ACE_SYNCH_RW_MUTEX, guard, this->timedout_supplier_mutex_); + + Map::const_iterator itr (this->timedout_supplier_map_); + Map::value_type* entry = 0; + while (itr.next (entry)) + { + names->push_back (entry->item ()); + itr.advance (); + } +} + size_t TAO_MonitorEventChannel::get_suppliers ( Monitor_Control_Types::NameList* names) diff --git a/TAO/orbsvcs/orbsvcs/Notify/MonitorControlExt/MonitorEventChannel.h b/TAO/orbsvcs/orbsvcs/Notify/MonitorControlExt/MonitorEventChannel.h index 7a08d133b22..e4185d6a642 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/MonitorControlExt/MonitorEventChannel.h +++ b/TAO/orbsvcs/orbsvcs/Notify/MonitorControlExt/MonitorEventChannel.h @@ -69,7 +69,8 @@ public: /// Remove the supplier/consumer proxy id/name mapping. virtual void cleanup_proxy (CosNotifyChannelAdmin::ProxyID id, - bool is_supplier); + bool is_supplier, + bool experienced_timeout); /// Remove the consumer admin id/name mapping. virtual void remove_consumeradmin (CosNotifyChannelAdmin::AdminID id); @@ -105,6 +106,7 @@ public: private: size_t get_consumers (Monitor_Control_Types::NameList* names); size_t get_suppliers (Monitor_Control_Types::NameList* names); + void get_timedout_consumers (Monitor_Control_Types::NameList* names); size_t get_consumeradmins (Monitor_Control_Types::NameList* names); size_t get_supplieradmins (Monitor_Control_Types::NameList* names); TAO_Notify_ThreadPool_Task* get_threadpool_task ( @@ -118,6 +120,7 @@ private: friend class RemoveConsumerSupplierControl; friend class EventChannelConsumersSuppliers; + friend class EventChannelTimedoutConsumers; friend class EventChannelConsumerSupplierAdmins; friend class SlowestConsumers; friend class QueuedEvents; @@ -148,6 +151,9 @@ private: mutable TAO_SYNCH_RW_MUTEX consumer_mutex_; Map consumer_map_; + mutable TAO_SYNCH_RW_MUTEX timedout_supplier_mutex_; + Map timedout_supplier_map_; + mutable TAO_SYNCH_RW_MUTEX supplieradmin_mutex_; Map supplieradmin_map_; diff --git a/TAO/orbsvcs/orbsvcs/Notify/MonitorControlExt/NotifyMonitoringExt.idl b/TAO/orbsvcs/orbsvcs/Notify/MonitorControlExt/NotifyMonitoringExt.idl index cc3c37acc04..811e0a8390e 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/MonitorControlExt/NotifyMonitoringExt.idl +++ b/TAO/orbsvcs/orbsvcs/Notify/MonitorControlExt/NotifyMonitoringExt.idl @@ -44,6 +44,9 @@ module NotifyMonitoringExt /// This corresponds to the EventChannel supplier names const string EventChannelSupplierNames = "SupplierNames"; + /// This corresponds to the timed out EventChannel consumer names + const string EventChannelTimedoutConsumerNames = "TimedoutConsumerNames"; + /// This corresponds to the EventChannel consumer admin count const string EventChannelConsumerAdminCount = "ConsumerAdminCount"; diff --git a/TAO/orbsvcs/orbsvcs/Notify/ProxyConsumer.cpp b/TAO/orbsvcs/orbsvcs/Notify/ProxyConsumer.cpp index f17b804df6f..742ac748116 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/ProxyConsumer.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/ProxyConsumer.cpp @@ -177,7 +177,7 @@ void TAO_Notify_ProxyConsumer::destroy (void) { this->shutdown (); - this->supplier_admin_->cleanup_proxy (this, false); + this->supplier_admin_->cleanup_proxy (this, false, false); // Do not reset this->supplier_. // It is not safe to delete the non-refcounted supplier here. diff --git a/TAO/orbsvcs/orbsvcs/Notify/ProxySupplier.cpp b/TAO/orbsvcs/orbsvcs/Notify/ProxySupplier.cpp index c18b2bba7a6..82de35d8736 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/ProxySupplier.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/ProxySupplier.cpp @@ -132,8 +132,14 @@ TAO_Notify_ProxySupplier::shutdown (void) void TAO_Notify_ProxySupplier::destroy (void) { + this->destroy (false); +} + +void +TAO_Notify_ProxySupplier::destroy (bool from_timeout) +{ this->shutdown (); - this->consumer_admin_->cleanup_proxy (this, true); + this->consumer_admin_->cleanup_proxy (this, true, from_timeout); // Do not reset this->consumer_. // It is not safe to delete the non-refcounted consumer here. diff --git a/TAO/orbsvcs/orbsvcs/Notify/ProxySupplier.h b/TAO/orbsvcs/orbsvcs/Notify/ProxySupplier.h index 6824e357f87..8f7d1d7792f 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/ProxySupplier.h +++ b/TAO/orbsvcs/orbsvcs/Notify/ProxySupplier.h @@ -63,6 +63,10 @@ public: /// Destroy this object. virtual void destroy (void); + /// Destroy this object, but also indicate if it is due to a timeout or + /// not. + void destroy (bool from_timeout); + /// Override, TAO_Notify_Proxy::qos_changed to apply MaxEventssPerConsumer QoS. virtual void qos_changed (const TAO_Notify_QoSProperties& qos_properties); diff --git a/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequencePushConsumer.cpp b/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequencePushConsumer.cpp index 70d2a45b2d0..a63e5274eae 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequencePushConsumer.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequencePushConsumer.cpp @@ -147,6 +147,7 @@ TAO_Notify_SequencePushConsumer::dispatch_from_queue (Request_Queue& requests, A ACE_ASSERT (pos > 0); ace_mon.release (); + bool from_timeout = false; TAO_Notify_Consumer::DispatchStatus status = this->dispatch_batch (batch); ace_mon.acquire (); @@ -163,6 +164,9 @@ TAO_Notify_SequencePushConsumer::dispatch_from_queue (Request_Queue& requests, A result = true; break; } + case DISPATCH_FAIL_TIMEOUT: + from_timeout = true; + // Fall through case DISPATCH_FAIL: { TAO_Notify_Method_Request_Event_Queueable * request = 0; @@ -211,7 +215,7 @@ TAO_Notify_SequencePushConsumer::dispatch_from_queue (Request_Queue& requests, A ace_mon.release(); try { - this->proxy_supplier ()->destroy (); + this->proxy_supplier ()->destroy (from_timeout); } catch (const CORBA::Exception&) { |