changing system clock

"Geoffrey Hanson" <[email protected]> Fri, 5 May 2006 16:20:20 -0700
Newsgroups gmane.comp.corba.omniorb.devel
Message-ID <[email protected]>
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
[email protected]   1300 Crittenden Lane,       
650-210-0116              Suite 302
                     Mountain View, CA 94043