summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorharrisb <harrisb@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2013-03-07 16:57:45 +0000
committerharrisb <harrisb@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2013-03-07 16:57:45 +0000
commit4fa1c94cb3b8aa359ce22a9115effbcdfadb5349 (patch)
tree26b891eca207a53fb534f28a54f04e1aebdb1ea7
parentd9fcf35b14824f7260e893449d5488ffc646f8f1 (diff)
downloadATCD-4fa1c94cb3b8aa359ce22a9115effbcdfadb5349.tar.gz
Thu Mar 7 16:55:43 UTC 2013 Byron Harris <harrisb@ociweb.com>
-rw-r--r--TAO/ChangeLog11
-rw-r--r--TAO/NEWS16
-rw-r--r--TAO/bin/tao_other_tests.lst2
-rw-r--r--TAO/docs/Options.html73
-rw-r--r--TAO/orbsvcs/tests/ImplRepo/RestartServer/MessengerClient.cpp6
-rwxr-xr-xTAO/orbsvcs/tests/ImplRepo/RestartServer/run_test.pl8
6 files changed, 73 insertions, 43 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog
index 15069d90404..7b7e7f737dd 100644
--- a/TAO/ChangeLog
+++ b/TAO/ChangeLog
@@ -1,3 +1,14 @@
+Thu Mar 7 16:55:43 UTC 2013 Byron Harris <harrisb@ociweb.com>
+
+ * NEWS:
+ * bin/tao_other_tests.lst:
+ * docs/Options.html:
+ * orbsvcs/tests/ImplRepo/RestartServer/MessengerClient.cpp:
+ * orbsvcs/tests/ImplRepo/RestartServer/run_test.pl:
+
+ Address that -ORBForwardOnReplyClosedLimit does not work
+ under FreeBSD, OpenVMS, and Solaris.
+
Thu Mar 7 13:57:18 UTC 2013 Phil Mesnier <mesnier_p@ociweb.com>
* utils/logWalker/Invocation.cpp:
diff --git a/TAO/NEWS b/TAO/NEWS
index ab1b9d6ba7e..0542243864b 100644
--- a/TAO/NEWS
+++ b/TAO/NEWS
@@ -47,12 +47,16 @@ USER VISIBLE CHANGES BETWEEN TAO-2.1.7 and TAO-2.1.8
a pool of threads that wait to service calls coming in on a
particular queue.
-. Enhanced TAO Invocation Retry [#4096] - Extended TAO to support retry
- in the presence of COMM_FAILURE exceptions. This feature is used to
- support fault tolerant services (specifically the Fault Tolerant
- Naming and Implementation Repository services described earlier).
- The new invocation retry support allows configuration on how many
- times to try to connect to each server and the delay between tries.
+. Multiple Invocation Retry [#4096] - Extended TAO to support multiple
+ retry in the presence of COMM_FAILURE, TRANSIENT, OBJECT_NOT_EXIST,
+ and INV_OBJREF exceptions. In addition, retries can occur if it has
+ been detected that a connection has closed while waiting for a reply
+ (currently not available under FreeBSD, OpenVMS, and Solaris). This
+ feature can be used to support fault tolerant services (specifically
+ the Fault Tolerant Naming and Implementation Repository services
+ described earlier). The invocation retry support allows
+ configuration on how many times to try to connect to each server and
+ the delay between tries.
. Added MIOP configuration options -ORBSendThrottling and -ORBEagerDequeueing,
along with #define overrides for their default settings. See the descriptions
diff --git a/TAO/bin/tao_other_tests.lst b/TAO/bin/tao_other_tests.lst
index 22408ca202a..27ddfa9ecca 100644
--- a/TAO/bin/tao_other_tests.lst
+++ b/TAO/bin/tao_other_tests.lst
@@ -134,7 +134,7 @@ TAO/orbsvcs/tests/ImplRepo/Bug_2604_Regression/run_test.pl: !MINIMUM !CORBA_E_CO
TAO/orbsvcs/tests/ImplRepo/ReconnectServer/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !WCHAR !ACE_FOR_TAO !LynxOS
TAO/orbsvcs/tests/ImplRepo/ReconnectServer/run_test.pl -forwardalways: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !WCHAR !ACE_FOR_TAO !LynxOS
TAO/orbsvcs/tests/ImplRepo/ReconnectServer/run_test.pl -forwardonce: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !WCHAR !ACE_FOR_TAO !LynxOS
-TAO/orbsvcs/tests/ImplRepo/RestartServer/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !WCHAR !ACE_FOR_TAO !LynxOS
+TAO/orbsvcs/tests/ImplRepo/RestartServer/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !WCHAR !ACE_FOR_TAO !LynxOS !OpenVMS
TAO/orbsvcs/examples/ImR/Combined_Service/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !STATIC !ST !ACE_FOR_TAO !LynxOS
TAO/orbsvcs/examples/CosEC/TypedSimple/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NO_IFR !ACE_FOR_TAO !WCHAR
TAO/orbsvcs/tests/CosEvent/Timeout/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !ST !NO_MESSAGING !ACE_FOR_TAO !LynxOS
diff --git a/TAO/docs/Options.html b/TAO/docs/Options.html
index 3054a84c53f..1bd25a2fa66 100644
--- a/TAO/docs/Options.html
+++ b/TAO/docs/Options.html
@@ -23,7 +23,7 @@
<li><a href="#ORP">Optimizing Request Processing </a> </li>
<li><a href="#CMPS">Connection Management and Protocol
Selection </a> </li>
- <li><a href="#IRO">Invocation Retry Options</a></li>
+ <li><a href="#IRO">Multiple Invocation Retry Options</a></li>
<li><a href="#MO">Miscellaneous Options </a></li>
</ol>
</li>
@@ -890,7 +890,7 @@ is set. The default is true. </td>
</table>
</p>
</blockquote>
-<h4><a name="IRO">5. Invocation Retry Options</a></h4>
+<h4><a name="IRO">5. Multiple Invocation Retry Options</a></h4>
In cases such as connection timing issues or a load balancing server
is temporarily not able to handle requests, it may be desirable to have
the ORB transparently retry an invocation a maximum number of times
@@ -993,7 +993,10 @@ having them use the same configurator file.
<tr>
<td><code>-ORBForwardOnReplyClosedLimit</code> <em>limit</em></td>
<td>Use this option to cycle through profiles when it has
- been detected that a connection is closed when reading a server reply.
+ been detected that a connection is closed when reading a server reply
+ and having the server possibly process the reqest more than once
+ is acceptable. This option currently does not work under FreeBSD,
+ OpenVMS, and Solaris.
The number of retries will not exceed <em>limit</em>.
If this option is used then -ORBForwardOnTransientLimit should
also be used to avoid a TRANSIENT exception being thrown.
@@ -1797,7 +1800,7 @@ strategy.
<tr>
<td>Invocation Retry options</td>
<td>Options of the same names as the command-line options
- described in <a href="#IRO">Invocation Retry Options</a>
+ described in <a href="#IRO">Multiple Invocation Retry Options</a>
can also be applied client strategy factory service. Any
option provided on the command line will override the
corresponding option in the service configurator
@@ -1818,16 +1821,16 @@ strategy.
of the line as a space separated list; however none are required as all
options take default values if not specified.) This factory can be loaded
dynamically using service configurator directives of the form (all on one line):
- <p><code>dynamic UIPMC_Factory Service_Object *
+ <p><code>dynamic UIPMC_Factory Service_Object *
TAO_PortableGroup:_make_TAO_UIPMC_Protocol_Factory() ""</code></p>
<p>Normally however in order to set up the TAO_UIPMC_Protocol_Factory correctly,
the application will have to use other service configurator directives as well;
for example:</p>
- <code>dynamic UIPMC_Factory Service_Object *
+ <code>dynamic UIPMC_Factory Service_Object *
TAO_PortableGroup:_make_TAO_UIPMC_Protocol_Factory() ""<br>
- static Resource_Factory "&#8209;ORBProtocolFactory IIOP_Factory
+ static Resource_Factory "&#8209;ORBProtocolFactory IIOP_Factory
&#8209;ORBProtocolFactory UIPMC_Factory"<br>
- dynamic PortableGroup_Loader Service_Object *
+ dynamic PortableGroup_Loader Service_Object *
TAO_PortableGroup:_make_TAO_PortableGroup_Loader() ""</code></p>
<blockquote>
<p></p>
@@ -1857,7 +1860,7 @@ strategy.
options. The MIOP factory accepts it own options detailed below which
should be specified between the two double-quotes shown here as a space
separated list; however none are required as all options take default
- values if not specified. This factory can be loaded dynamically using a
+ values if not specified. This factory can be loaded dynamically using a
service configurator directive of the form (all on one line):
<p><code>dynamic MIOP_Resource_Factory Service_Object *
TAO_PortableGroup:_make_TAO_MIOP_Resource_Factory () ""</code></p>
@@ -2030,19 +2033,19 @@ strategy.
</tr>
<tr>
<td ALIGN="left"><code>&#8209;ORBRcvSock</code> <em>bytes</em></td>
- <td ALIGN="left">This server-side (listener) option is the size of the incoming socket's
- message buffer, i.e., how much data can be received directly off the wire by the
- server and queued for processing by the servant whilst it is busy. If specified
- in the service configuration file, this value will override (for MIOP only) the
- value specified by the corresponding ORB_init parameter. If NOT specified in
- either place, the default value for the system itself will be used. Again for a
- Linux type OS, the systems RcvSock is usually about <b>65535</b> bytes, but
- whatever value is actually specified it is normally doubled internally to take
- account of the control structures required to track the messages themselves and
- so it is not a hard limit. Specifying as large a value as possible (i.e.
+ <td ALIGN="left">This server-side (listener) option is the size of the incoming socket's
+ message buffer, i.e., how much data can be received directly off the wire by the
+ server and queued for processing by the servant whilst it is busy. If specified
+ in the service configuration file, this value will override (for MIOP only) the
+ value specified by the corresponding ORB_init parameter. If NOT specified in
+ either place, the default value for the system itself will be used. Again for a
+ Linux type OS, the systems RcvSock is usually about <b>65535</b> bytes, but
+ whatever value is actually specified it is normally doubled internally to take
+ account of the control structures required to track the messages themselves and
+ so it is not a hard limit. Specifying as large a value as possible (i.e.
whatever upper limit the OS will allow) with the MIOP <code>&#8209;ORBRcvSock</code>
- option is advisable to maximize the available socket's receive buffer space, but
- obviously this is a trade off between available memory and other OS non-paged
+ option is advisable to maximize the available socket's receive buffer space, but
+ obviously this is a trade off between available memory and other OS non-paged
memory uses.
</td>
</tr>
@@ -2051,20 +2054,20 @@ strategy.
<td ALIGN="left">This is a server-side (listener) option that is enabled by default;
although this default can be overriden when the TAO libraries are built in the <CODE>
ace/config.h</CODE>, by specifying the new default such as <CODE>#define&nbsp;TAO_DEFAULT_MIOP_EAGER_DEQUEUEING&nbsp;false</CODE>
- which in this case would turn this off by default, unless specified in the
- service file. If disabled (0) each thread servicing the MIOP listener will only
- dequeue enough MIOP message fragments from the socket receive buffer to
- complete a single full MIOP message which it will then process. This action
- reduces the amount of user memory consumed by the server process, but it also
- increases the likelihood of the OS sockets receive buffer overflowing (as
- whilst processing each message, the thread cannot dequeue other incomming
- message fragments). If enabled (1) it specifies that each server thread will
- attempt to dequeue all available MIOP messages from the receiver's socket and
- queue these up in a user memory FIFO queue, before attempting to process a
- single MIOP message from the head of this FIFO queue. This action attempts to
- speed up the dequeueing of MIOP messages from the OS socket receive buffer
- (with a corresponding increase in the amount of user memory consumed by the
- server process) so as to limit the number of MIOP messages that the server may
+ which in this case would turn this off by default, unless specified in the
+ service file. If disabled (0) each thread servicing the MIOP listener will only
+ dequeue enough MIOP message fragments from the socket receive buffer to
+ complete a single full MIOP message which it will then process. This action
+ reduces the amount of user memory consumed by the server process, but it also
+ increases the likelihood of the OS sockets receive buffer overflowing (as
+ whilst processing each message, the thread cannot dequeue other incomming
+ message fragments). If enabled (1) it specifies that each server thread will
+ attempt to dequeue all available MIOP messages from the receiver's socket and
+ queue these up in a user memory FIFO queue, before attempting to process a
+ single MIOP message from the head of this FIFO queue. This action attempts to
+ speed up the dequeueing of MIOP messages from the OS socket receive buffer
+ (with a corresponding increase in the amount of user memory consumed by the
+ server process) so as to limit the number of MIOP messages that the server may
miss due to the OS sockets receive buffer becoming full.
</td>
</tr>
diff --git a/TAO/orbsvcs/tests/ImplRepo/RestartServer/MessengerClient.cpp b/TAO/orbsvcs/tests/ImplRepo/RestartServer/MessengerClient.cpp
index 7cd8c1d5d08..18692e90149 100644
--- a/TAO/orbsvcs/tests/ImplRepo/RestartServer/MessengerClient.cpp
+++ b/TAO/orbsvcs/tests/ImplRepo/RestartServer/MessengerClient.cpp
@@ -36,6 +36,12 @@ parse_args (int argc, ACE_TCHAR *argv[])
int
ACE_TMAIN (int argc, ACE_TCHAR *argv[])
{
+
+ // Detection of closed on read currently not working certain platforms.
+#if defined (sun) || defined (__FreeBSD_version)
+ return 2;
+#endif
+
try {
// Initialize orb
CORBA::ORB_var orb = CORBA::ORB_init( argc, argv );
diff --git a/TAO/orbsvcs/tests/ImplRepo/RestartServer/run_test.pl b/TAO/orbsvcs/tests/ImplRepo/RestartServer/run_test.pl
index cc398aa4f03..8c8d2ae5cdc 100755
--- a/TAO/orbsvcs/tests/ImplRepo/RestartServer/run_test.pl
+++ b/TAO/orbsvcs/tests/ImplRepo/RestartServer/run_test.pl
@@ -200,7 +200,13 @@ if ($c1->PutFile ($messenger_ior) == -1) {
print ">>> " . $C1->CommandLine() . "\n";
$C1_status = $C1->SpawnWaitKill ($c1->ProcessStartWaitInterval() + $extra_timeout);
-if ($C1_status != 0) {
+if ($C1_status == 2) {
+ print STDERR "Warning: This test does not currently run under this operating system.\n";
+ $IR->Kill (); $IR->TimedWait (1);
+ $ACT->Kill (); $ACT->TimedWait (1);
+ exit 0;
+}
+elsif ($C1_status != 0) {
print STDERR "ERROR: Client1 returned $C1_status\n";
$IR->Kill (); $IR->TimedWait (1);
$ACT->Kill (); $ACT->TimedWait (1);