[omniORB] COMM_FAILURE on client if outConScanPeriod timeout expire

Enver Cicak Enver.Cicak at hermes-softlab.com
Mon Mar 26 14:40:53 BST 2007


Hi all,

I've server written in c++ and python client. 
Everything worked fine until I changed following omniORB configuration
parameters: 

scanGranularity=1
inConScanPeriod=15
outConScanPeriod=10

Then client is able to communicate with server until there is more then
10 seconds between calls invoked on server. In that case COMM_FAILURE is
reported. 
I use simple retry loop as workaround. Second try always works!

Similar problem existed when server close connection with GIOP 1.2 and
client is using GIOP 1.0 or 1.1, but it was resolved since omniORB
version 4.0.2 

In my case booth client and server are on same machine (win2003) and use
GIOP 1.2.
I'm using omniORB 4.0.7 and omniORBpy 2.7 and Python 2.4

<<< Client log >>>

< Successful call >

omniORB: Creating Python ref to unknown: root<0>
................................................
omniORB: LocateRequest to remote: root<0>
omniORB: Client attempt to connect to giop:tcp:vmware3.hermes.si:1189
omniORB: Client opened connection to giop:tcp:10.81.2.105:1189
omniORB: sendChunk: to giop:tcp:10.81.2.105:1189 38 bytes
omniORB: 
4749 4f50 0102 0103 1a00 0000 0200 0000 GIOP............
0000 0000 0e00 0000 fee3 de03 4600 000a ............F...
1000 0000 0000                          ......
omniORB: inputMessage: from giop:tcp:10.81.2.105:1189 20 bytes
omniORB: 
4749 4f50 0102 0104 0800 0000 0200 0000 GIOP............
0100 0000                               ....
omniORB: Send codeset service context: (UTF-8,UTF-16)
omniORB: sendChunk: to giop:tcp:10.81.2.105:1189 80 bytes
omniORB: 
4749 4f50 0102 0100 4400 0000 0400 0000 GIOP....D.......
0300 0000 0000 0000 0e00 0000 fee3 de03 ................
4600 000a 1000 0000 0000 0000 0700 0000 F...............
4765 7446 5343 0000 0100 0000 0100 0000 GetFSC..........
0c00 0000 0100 0000 0100 0105 0901 0100 ................

< Unsuccessful call >

omniORB: Creating Python ref to unknown: root<0>
................................................
omniORB: LocateRequest to remote: root<0>
omniORB: sendChunk: to giop:tcp:10.81.2.105:1189 38 bytes
omniORB: 
4749 4f50 0102 0103 1a00 0000 0c00 0000 GIOP............
0000 0000 0e00 0000 fee3 de03 4600 000a ............F...
1000 0000 0000                          ......
omniORB: inputMessage: from giop:tcp:10.81.2.105:1189 20 bytes
omniORB: 
4749 4f50 0102 0104 0800 0000 0c00 0000 GIOP............  <-- First call
had "0200" instead of "0c00"
0100 0000                               ....
omniORB: sendChunk: to giop:tcp:10.81.2.105:1189 60 bytes <-- First call
had 80B. 
omniORB: 
4749 4f50 0102 0100 3000 0000 0e00 0000 GIOP....0.......
0300 0000 0000 0000 0e00 0000 fee3 de03 ................
4600 000a 1000 0000 0000 0000 0700 0000 F...............
4765 7446 5343 0000 0000 0000           GetFSC......

At the time when second (unsuccessful) call is invoked there is nothing
in server logs.

Server configuration:

omniORB:   abortOnInternalError = 0
omniORB:   abortOnNativeException = 0
omniORB:   acceptBiDirectionalGIOP = 0
omniORB:   acceptMisalignedTcIndirections = 0
omniORB:   bootstrapAgentHostname = 
omniORB:   bootstrapAgentPort = 900
omniORB:   clientCallTimeOutPeriod = 172800000
omniORB:   clientTransportRule = localhost tcp
omniORB:   clientTransportRule = 127.0.0.0/255.255.255.0 tcp
omniORB:   clientTransportRule = * none
omniORB:   configFile = C:\omniORB.cfg
omniORB:   connectionWatchImmediate = 0
omniORB:   connectionWatchPeriod = 50000
omniORB:   diiThrowsSysExceptions = 0
omniORB:   dumpConfiguration = 0
omniORB:   endPoint = giop:tcp:<machine name>:
omniORB:   endPointPublishAllIFs = 0
omniORB:   giopMaxMsgSize = 2097152
omniORB:   giopTargetAddressMode = KeyAddr
omniORB:   id = omniORB4
omniORB:   inConScanPeriod = 15
omniORB:   lcdMode = 0
omniORB:   maxGIOPConnectionPerServer = 64
omniORB:   maxGIOPVersion = 1.2
omniORB:   maxInterleavedCallsPerConnection = 5
omniORB:   maxServerThreadPerConnection = 100
omniORB:   maxServerThreadPoolSize = 100
omniORB:   maxSocketRecv = 131072
omniORB:   maxSocketSend = 131072
omniORB:   nativeCharCodeSet = UTF-8
omniORB:   nativeWCharCodeSet = UTF-16
omniORB:   objectTableSize = 0
omniORB:   offerBiDirectionalGIOP = 0
omniORB:   omniORB_27_CompatibleAnyExtraction = 0
omniORB:   oneCallPerConnection = 1
omniORB:   outConScanPeriod = 10
omniORB:   poaHoldRequestTimeout = 0
omniORB:   poaUniquePersistentSystemIds = 1
omniORB:   principal = [Null]
omniORB:   scanGranularity = 1
omniORB:   serverCallTimeOutPeriod = 0
omniORB:   serverTransportRule = localhost tcp
omniORB:   serverTransportRule = 127.0.0.0/255.255.255.0 tcp
omniORB:   serverTransportRule = * none
omniORB:   strictIIOP = 1
omniORB:   supportBootstrapAgent = 0
omniORB:   supportCurrent = 1
omniORB:   supportPerThreadTimeOut = 0
omniORB:   tcAliasExpand = 0
omniORB:   threadPerConnectionLowerLimit = 9000
omniORB:   threadPerConnectionPolicy = 1
omniORB:   threadPerConnectionUpperLimit = 10000
omniORB:   threadPoolWatchConnection = 1
omniORB:   traceExceptions = 0
omniORB:   traceFile = [stderr]
omniORB:   traceInvocations = 1
omniORB:   traceLevel = 30
omniORB:   traceThreadId = 0
omniORB:   unixTransportDirectory = /tmp/omni-%u
omniORB:   unixTransportPermission =  777
omniORB:   useTypeCodeIndirections = 1
omniORB:   verifyObjectExistsAndType = 1

Is this a new bug, or is it something wrong with my client/server
configuration?

Regards,

	Enver



More information about the omniORB-list mailing list