[omniORB-dev] changing system clock

Geoffrey Hanson hanson at fabric7.com
Fri May 5 17:20:20 BST 2006


We're currently using omniORB version 4.01 and are interoperating
with Java Sun ORB.

We've encountered a problem where if you change the system clock
backwards, then all requests from a Java ORB client to a omniORB
server are serialized within a single thread.

I was wondering if anyone had encountered this before and knows
of a solution?

The Java ORB client only opens a single connection to the omniORB
server. Under normal conditions, if a second request is received
while the first is being processed, a new thread is created to
service the second request.

But in the case of changing the system clock backwards (when
server is running), new threads are no longer created in this
scenario.
 
I tracked down some code in:
orbcore/SocketCollection.cc::Select()
which seems to be the culprit.

When calculating a timeout value for the select() call,
it calls SocketSetTimeOut() to calculate the difference
between the current time and a pre-saved absolute
timestamp. It only resets the timestamp when this timeout
expires.

I understand how to patch this individual case, but there are many
other cases where the absolute time is retrieved and am wondering
what other symptoms will result when changing the system clock.

Any suggestions are appreciated.

Thanks,
Geoff

---
Geoff Hanson         Fabric7 Systems
hanson at fabric7.com   1300 Crittenden Lane,       
650-210-0116              Suite 302
                     Mountain View, CA 94043



More information about the omniORB-dev mailing list