[omniORB] ThreadPool model and ORBmaxServerThreadPerConnection

Serguei Kolos Serguei.Kolos at cern.ch
Tue Feb 24 12:45:52 GMT 2004


Hello

I'm sorry , I was sending my previous messages to the wrong list.
Here is the problem, which I have with the omniORB 4.0.2. ( I have 
tested also
4.0.3 and the behavior is the same.)
If I use the following options for my server
 -  threadPerConnectionPolicy 0
 -  threadPoolWatchConnection 0
 -  maxServerThreadPerConnection 1
  (All the other options have their default values.)
then sometimes (not always but very often) my client hangs trying to 
communicate with the server.
Using the traceLevel=50 option I have found that a second request, which 
is sent by the client is
not received on the server. The server and client traces are attached below.
The problem can be solved by setting the maxServerThreadPerConnection to 
a value greater then 1,
but this is not what I want.
Cheers,
Sergei

The client trace is:

omniORB: Initialising incoming endpoints.
omniORB: Bind to address 0.0.0.0.
omniORB: Starting serving incoming endpoints.
Initial reference is file:/home-users/kolos/ipc.ref
Connecting to the "initial" partition server ...omniORB: Creating ref to 
remote: root/ipc/partition<initial>
 target id      : IDL:omg.org/CORBA/Object:1.0
 most derived id: IDL:ipc/partition:1.0
omniORB:  send codeset service context: (ISO-8859-1,UTF-16)
omniORB: Client opened connection to giop:tcp:137.138.90.219:45751
omniORB: sendChunk: to giop:tcp:137.138.90.219:45751 96 bytes
omniORB:
4749 4f50 0102 0100 5400 0000 0200 0000 GIOP....T.......
0300 0000 0000 0000 1600 0000 ff69 7063 .............ipc
2f70 6172 7469 7469 6f6e 0069 6e69 7469 /partition.initi
616c 0000 0e00 0000 5f6e 6f6e 5f65 7869 al......_non_exi
7374 656e 7400 0000 0100 0000 0100 0000 stent...........
0c00 0000 0100 0000 0100 0100 0901 0100 ................
omniORB: AsyncInvoker: thread id = 1 has started. Total threads = 2
omniORB: AsyncInvoker: thread id = 2 has started. Total threads = 2
omniORB: giopRendezvouser task execute for giop:tcp:137.138.90.219:45753
omniORB: Scavenger task execute.
omniORB: inputMessage: from giop:tcp:137.138.90.219:45751 25 bytes
omniORB:
4749 4f50 0102 0101 0d00 0000 0200 0000 GIOP............
0000 0000 0000 0000 00                  .........
done.
Getting information for the "initial" object...omniORB: LocateRequest to 
remote: root/ipc/partit
ion<initial>
omniORB: sendChunk: to giop:tcp:137.138.90.219:45751 46 bytes
omniORB:
4749 4f50 0102 0103 2200 0000 0400 0000 GIOP....".......
0000 0000 1600 0000 ff69 7063 2f70 6172 .........ipc/par
7469 7469 6f6e 0069 6e69 7469 616c      tition.initial
omniORB: Scan for idle connections (1077622538,737097000)
omniORB: Scan for idle connections done (1077622538,737097000).
omniORB: Scan for idle connections (1077622543,746807000)
omniORB: Scan for idle connections done (1077622543,746807000).


And the server trace is:

omniORB: Initialising incoming endpoints.
omniORB: Bind to address 0.0.0.0.
omniORB: Starting serving incoming endpoints.
omniORB: Creating ref to remote: root/ipc/partition<initial>
 target id      : IDL:omg.org/CORBA/Object:1.0
 most derived id: IDL:ipc/partition:1.0
omniORB: AsyncInvoker: thread id = 1 has started. Total threads = 1
omniORB:  send codeset service context: (ISO-8859-1,UTF-16)
omniORB: Client attempt to connect to giop:tcp:137.138.90.219:45590
omniORB: throw giopStream::CommFailure from 
giopStream.cc:1070(0,NO,TRANSIENT_ConnectFailed)
omniORB: throw TRANSIENT from omniObjRef.cc:762 (NO,TRANSIENT_ConnectFailed)
omniORB: giopRendezvouser task execute for giop:tcp:137.138.90.219:45751
omniORB: AsyncInvoker: thread id = 2 has started. Total threads = 2
omniORB: Scavenger task execute.
omniORB: Adding root/ipc/partition<initial> (activating) to object table.
omniORB: State root/ipc/partition<initial> (activating) -> active
omniORB: Creating ref to local: root/ipc/partition<initial>
 target id      : IDL:ipc/partition:1.0
 most derived id: IDL:ipc/partition:1.0
24/2/04 12:35:30 :: ipc_server for partition "initial" has been started.
omniORB: Server accepted connection from giop:tcp:137.138.90.219:45754
omniORB: AsyncInvoker: thread id = 3 has started. Total threads = 3
omniORB: giopWorker task execute.
omniORB: Accepted connection from giop:tcp:137.138.90.219:45754 because 
of this rule: "* unix,ssl,tcp"
omniORB: inputMessage: from giop:tcp:137.138.90.219:45754 96 bytes
omniORB:
4749 4f50 0102 0100 5400 0000 0200 0000 GIOP....T.......
0300 0000 0000 0000 1600 0000 ff69 7063 .............ipc
2f70 6172 7469 7469 6f6e 0069 6e69 7469 /partition.initi
616c 0000 0e00 0000 5f6e 6f6e 5f65 7869 al......_non_exi
7374 656e 7400 0000 0100 0000 0100 0000 stent...........
0c00 0000 0100 0000 0100 0100 0901 0100 ................
omniORB:  recieve codeset service context and set TCS to (ISO-8859-1,UTF-16)
omniORB: sendChunk: to giop:tcp:137.138.90.219:45754 25 bytes
omniORB:
4749 4f50 0102 0101 0d00 0000 0200 0000 GIOP............
0000 0000 0000 0000 00                  .........
omniORB: Scan for idle connections (1077622535,198922000)
omniORB: Scavenger reduce idle count for strand 0x807b8d0 to 35
omniORB: Scan for idle connections done (1077622535,198922000).
omniORB: Scan for idle connections (1077622540,206803000)
omniORB: Scavenger reduce idle count for strand 0x807b8d0 to 34
omniORB: Scan for idle connections done (1077622540,206803000).
omniORB: AsyncInvoker: thread id = 3 has exited. Total threads = 3
omniORB: Scan for idle connections (1077622545,216958000)
omniORB: Scavenger reduce idle count for strand 0x807b8d0 to 33
omniORB: Scan for idle connections done (1077622545,216958000).





More information about the omniORB-list mailing list