Problem: Product Name: VisiBroker Product Version:6.x and later Product Component: SynScope QoS Platform: All VisiBroker standalone Client invokes oneway operation on persistent object hosted by standalone VisiBroker server and Server is restarted, listens on same host:port. Client invokes another operation op1 this message is never received by server, nor is any exception thrown. Client invokes again op1 now succesfully. Resolution: This behavior is expected because by default, the ORB does not guarantee the delivery of oneway requests. The default SynScope policy used to send oneway request is SYNC_WITH_TRANSPORT . The behavior of SYNC_WITH_TRANSPORT quoted form OMG Corba specification is as follows: SYNC_WITH_TRANSPORT - equivalent to one allowable interpretation of CORBA oneway operations. The ORB returns control to the client only after the transport has accepted the request message. This in itself gives no guarantee that the request will be delivered, but in conjunction with knowledge of the characteristics of the transport may provide the client with a useful degree of assurance. In the above problem description, the client side ORB has successfully written the request to the socket. The system write API based on TCP/IP protocol does not indicate any error during the write operation. So as far as the client is concern, the transport has accepted the request message without any error, so the ORB returns control back to the client. To make sure the server process has at least received the oneway request but before invoking the target implementation, we recommend that, set SYNC_WITH_SERVER SynScope policy at the client side ORB.
↧