<div dir="ltr">Dear all,<div>   we use omniORBpy for a long time now, but just recently we noticed a problem with oneway operations when both the client and the servant are on the same process. We have a container/component model on top of CORBA, so we don't impose restrictions on the deployment of the CORBA objects, which means this situation can happen depending on the developers and the people doing the deployment.</div><div><br></div><div>I made an isolated test using omniORBpy that exposes the situation:</div><div>#ifndef _ASYNC_MODULE_IDL_<br>#define _ASYNC_MODULE_IDL_<br><br>#pragma prefix "acsws"<br><br>module AsyncModule<br>{<br>    interface AsyncExample {<br>        oneway void delay(in long sleepSec);<br>    };<br>};<br>#endif</div><div><br></div><div>Then, the implementation would be:</div><div>import sys<br>import time<br>import datetime<br><br>import AsyncModule<br>import AsyncModule__POA<br><br>from omniORB import CORBA, PortableServer<br><br>class AsyncExampleImpl(AsyncModule__POA.AsyncExample):<br>    def delay(self, sleepSec):<br>        print(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f"), "Start")<br>        time.sleep(sleepSec)<br>        print(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f"), "Finish")<br><br>orb = CORBA.ORB_init(sys.argv, CORBA.ORB_ID)<br>poa = orb.resolve_initial_references("RootPOA")<br><br>servant = AsyncExampleImpl()<br>obj = servant._this()<br><br>poaManager = poa._get_the_POAManager()<br>poaManager.activate()<br><br>print(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f"), "Before")<br>result  = obj.delay(2)<br>print(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f"), "After")<br></div><div><br></div><div>The output I receive is the following:</div><div>2020-11-30 19:00:38.022027 Before<br>2020-11-30 19:00:38.022068 Start<br>2020-11-30 19:00:40.023909 Finish<br>2020-11-30 19:00:40.024071 After<br></div><div><br></div><div>Which shows that the process remained waiting for the oneway operation to finish before continuing.</div><div><br></div><div>When splitting this in two processes (client and server), the output is the following:</div><div>2020-11-30 19:02:13.797152 Before<br>2020-11-30 19:02:13.797635 After<br>2020-11-30 19:02:13.797742 Start<br>2020-11-30 19:02:15.800049 Finish<br></div><div><br></div><div>Which is what I would expect from a oneway operation.</div><div><br></div><div>Thanks a lot!</div><div><br></div><div>Best regards,</div><div>Tomas.</div></div>