diff options
author | harrisb <harrisb@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2013-03-07 16:57:45 +0000 |
---|---|---|
committer | harrisb <harrisb@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2013-03-07 16:57:45 +0000 |
commit | 4fa1c94cb3b8aa359ce22a9115effbcdfadb5349 (patch) | |
tree | 26b891eca207a53fb534f28a54f04e1aebdb1ea7 | |
parent | d9fcf35b14824f7260e893449d5488ffc646f8f1 (diff) | |
download | ATCD-4fa1c94cb3b8aa359ce22a9115effbcdfadb5349.tar.gz |
Thu Mar 7 16:55:43 UTC 2013 Byron Harris <harrisb@ociweb.com>
-rw-r--r-- | TAO/ChangeLog | 11 | ||||
-rw-r--r-- | TAO/NEWS | 16 | ||||
-rw-r--r-- | TAO/bin/tao_other_tests.lst | 2 | ||||
-rw-r--r-- | TAO/docs/Options.html | 73 | ||||
-rw-r--r-- | TAO/orbsvcs/tests/ImplRepo/RestartServer/MessengerClient.cpp | 6 | ||||
-rwxr-xr-x | TAO/orbsvcs/tests/ImplRepo/RestartServer/run_test.pl | 8 |
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: @@ -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 "‑ORBProtocolFactory IIOP_Factory + static Resource_Factory "‑ORBProtocolFactory IIOP_Factory ‑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>‑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>‑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 TAO_DEFAULT_MIOP_EAGER_DEQUEUEING 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); |