[omniORB] What exactly is the impact of connectionWatchPeriod?

Martin Ba 0xCDCDCDCD at gmx.at
Wed Apr 6 11:20:40 UTC 2022


Hi!

Context:
* omniORB 4.2.4 on Windows
* Windows Application servicing a single client application

We recently hit some communication delays with omniORB when we had a
call sequence roughly like this:

1. server invokes callback (oneway) function on client
2. client does several upcalls from within its callback, but these calls
are sequenced in a 50ms raster on the server thread servicing them.
(Even though ping is < 2ms)

In production we hit these delays correlating to the
[`connectionWatchPeriod`][1] setting and sure enough, reducing it from
its default of 50ms to 1ms resolved our problem.

We have not been able to synthesize the issue in development, but it was
reproducible in production.

Now, the [docs][1] for `connectionWatchPeriod` and especially
`connectionWatchImmediate` go into some details as to what the issue
was. This makes sense so far.

>  ... the connection is not actually watched until the next
>  connection watch period (determined by the `connectionWatchPeriod`
>  parameter) ...

My "problem" now is that we cannot reproduce the problem in an isolated
environment and we do not fully grok what the impact of lowering the
connectionWatchPeriod is.

Specifically, I found only one reference to this setting in a [message
on the list from 2010][2]:

> ...
> The default timeout is 50 milliseconds, which is a good compromise
> between responsiveness and low processing overhead for most
> applications. You can change that by setting the connectionWatchPeriod
> to a different value.
> ...

With that, all could be said, and lowering this value indeed solves our
problem while not really indicating any more CPU consumption on a normal
Windows 10 machine.

*However*, the fact that we are not able to reproduce it outside of
production -- I tried setting the watch period to 500+ms and still
couldn't reproduce any delays -- makes me think we might be missing
something here.

Can anyone offer some insights on the following points:

* Would lowering the watch period from 50ms to 1ms have any noticeable
impact given that our CORBA server deals with at most one client at the
time?
* (!) Is there a sure way to reproduce a "hanging" call caused by
connectionWatchPeriod
* The docs state that connectionWatchImmediate is meaningless on Windows
- is this still accurate?
* Are there any other settings that should be changed in this context?

Thanks!

- Martin


[1] : http://omniorb.sourceforge.net/omni42/omniORB/omniORB004.html
[2] :
https://www.omniorb-support.com/pipermail/omniorb-list/2010-November/030823.html



More information about the omniORB-list mailing list