<HTML xmlns:eXclaimer="http://www.exclaimer.co.uk">
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=UTF-16">

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-16">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.0.6618.4">
<TITLE>omniORB.installTransientExceptionHandler -&gt; python abort?</TITLE>
</HEAD>
<BODY >
<DIV>
<!-- Converted from text/rtf format -->

<P><FONT SIZE=2 FACE="Arial">Hi,</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">I am using omniORB 4.1.0 , omniORBpy 3.0, python 2.5 on rhel4.0 gcc 3.3 or solaris9.</FONT>

<BR><FONT SIZE=2 FACE="Arial">I experimented recently with the exception handler functions, with mixed results.</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">def transientRetryFunction(cookie, retries, exc):</FONT>

<BR><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp; print &quot;\nRetrying transient %s:%i\n&quot; % (repr(exc),retries)</FONT>

<BR><FONT SIZE=2 FACE="Arial">&nbsp;&nbsp;&nbsp; return False</FONT>

<BR><FONT SIZE=2 FACE="Arial">_cookie = &quot;don&#8217;t care for now&quot;</FONT>

<BR><FONT SIZE=2 FACE="Arial">omniORB.installTransientExceptionHandler(_cookie, transientRetryFunction)</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">I expected the simple return False to allow the application to carry on as would be expected with no exception handler installed at all. Indeed, this is what I see for my more general SystemExceptionHandler.</FONT></P>

<P><FONT SIZE=2 FACE="Arial">However when I encounter a LOCATION_FORWARD exception, the world ends. In the output below (with trace on 10 - 50 doesn't give much more use that I can tell), ServerObj is an (persistent) object reference pulled out of names, which I know is dead and can't be restarted.</FONT></P>

<P><FONT SIZE=2 FACE="Arial">&gt;&gt;&gt; ServerObj._narrow(ServerInterface)</FONT>

<BR><FONT SIZE=2 FACE="Arial">omniORB: AsyncInvoker: thread id = 2 has started. Total threads = 1</FONT>

<BR><FONT SIZE=2 FACE="Arial">omniORB: Creating ref to remote: key&lt;....NUP...9........RootPOA.OnDemandRisk.MultiServer.453.1H.AdminPOA.........MultiSrvAdmin&gt;</FONT></P>

<P><FONT SIZE=2 FACE="Arial">&nbsp;target id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : IDL:omg.org/CORBA/Object:1.0</FONT>

<BR><FONT SIZE=2 FACE="Arial">&nbsp;most derived id: </FONT>

<BR><FONT SIZE=2 FACE="Arial">omniORB: GIOP::LOCATION_FORWARD -- retry request.</FONT>

<BR><FONT SIZE=2 FACE="Arial">omniORB: Unable to open new connection: giop:tcp:elonxapodrp453:53305</FONT>

<BR><FONT SIZE=2 FACE="Arial">omniORB: throw giopStream::CommFailure from giopStream.cc:1148(0,NO,TRANSIENT_ConnectFailed)</FONT>

<BR><FONT SIZE=2 FACE="Arial">omniORB: Reverting object reference to original profile</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">Retrying transient CORBA.TRANSIENT(omniORB.TRANSIENT_FailedOnForwarded, CORBA.COMPLETED_NO):0</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">Abort</FONT>
</P>
<BR>

<P><FONT SIZE=2 FACE="Arial">And the python interpreter dies without a trace. The relevant section from the documentation is:</FONT>

<BR><FONT SIZE=2 FACE="Arial">When a TRANSIENT exception occurs, the function is called, passing the cookie object, a count of how many times the operation has been retried, and the TRANSIENT exception object itself. If the function returns true, the operation is retried; if it returns false, the original exception is raised in the application. In the case of a TRANSIENT exception due to a failed location forward, the exception propagated to the application is the original exception that caused the TRANSIENT (e.g. a COMM_FAILURE or OBJECT_NOT_EXIST), rather than the TRANSIENT exception.</FONT></P>

<P><FONT SIZE=2 FACE="Arial">Anyone have any ideas what I am doing wrong / if this functionality works as I am expecting / what further I can do to pin the problem down and fix it?</FONT></P>
<BR>

<P><FONT SIZE=2 FACE="Arial">Thanks,</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">Richard</FONT>
</P>

</DIV>
<DIV>
<HR COLOR="gray">
</DIV>
<DIV>If you are not an intended recipient of this e-mail, please notify the sender, delete it and do not read, act upon, print, disclose, copy, retain or redistribute it. <A HREF="http://www.ml.com/email_terms/">Click here </A>for important additional terms relating to this e-mail.&nbsp;&nbsp;&nbsp;&nbsp; <A HREF="http://www.ml.com/email_terms/">http://www.ml.com/email_terms/</A></DIV>
<DIV>
<HR COLOR="gray">
</DIV></BODY></HTML>