Discussion:
[omniORB] Problem connecting naming service
K.D.Welast at t-online.de ()
2006-09-29 17:50:31 UTC
Permalink
Hello,

we have Problems to connecting our failsafe naming service for the CORBA
Application build with omniORB.

The failsafe naming service is implemented with VisiBroker 5.4 (the
trace below is from the VisiBroker 7.0 test environment) in master slave
configuration and run on different Platforms.
We use an IOR with two Profiles or an URI with corbaloc like in the
example below to connect the naming service.
Both server responses a LOCATION_FORWARD reply with an IOR, where the
master server is in the first profile and the slave in the second.

If the master server is online all connects are perfect.
But if the master is down, omniORB application can?t connect to the
slave server, because the slave response is the LOCATION_FORWARD reply
to the master server.
omniORB tries to connect the master again and doesn?t switch back to the
slave server,? after receiving connect failed from the master.

The problem not occurs with Applications build with VisiBroker and
ORBACUS (version 4.0) tested with there?naming service?utility.

Is this behaviour, response an LOCATION_FORWARD reply, specific to
VisiBroker or is it?a rrequirement?of the CORBA specification?
Is this a bug in omniORB?
Is there any Solution for that problem?


Best regards
Klaus Dieter Welast


Command line:
nameclt -ORBInitRef
NameService=corbaloc::164.23.185.14:2809,:164.23.131.250:2809/NameService
-ORBtraceLevel 40 list

Trace with level 40

omniORB: Distribution date: Fri Jan 13 13:47:35 GMT 2006 dgrisby
omniORB: My addresses are:
omniORB: 164.23.185.14
omniORB: 127.0.0.1
omniORB: Maximum supported GIOP version is 1.2
omniORB: Native char code sets: UTF-8 ISO-8859-1.
omniORB: Transmission char code sets: UTF-8(1.2) UTF-8(1.1)
ISO-8859-1(1.2) ISO-8859-1(1.1) ISO-8859-1(1.0).
omniORB: Native wide char code sets: UTF-16.
omniORB: Transmission wide char code sets: UTF-16(1.2).
omniORB: Information: the omniDynamic library is not linked.
omniORB: Current configuration is as follows:
omniORB:?? DefaultInitRef (file) =
omniORB:?? DefaultInitRef (args) =
omniORB:?? InitRef =
NameService=corbaloc::164.23.185.14:2809,:164.23.131.250:2809/NameService
omniORB:?? abortOnInternalError = 0
omniORB:?? abortOnNativeException = 0
omniORB:?? acceptBiDirectionalGIOP = 0
omniORB:?? acceptMisalignedTcIndirections = 0
omniORB:?? bootstrapAgentHostname =
omniORB:?? bootstrapAgentPort = 900
omniORB:?? clientCallTimeOutPeriod = 0
omniORB:?? clientTransportRule = * unix,ssl,tcp
omniORB:?? configFile = [none]
omniORB:?? connectionWatchImmediate = 0
omniORB:?? connectionWatchPeriod = 50000
omniORB:?? diiThrowsSysExceptions = 0
omniORB:?? dumpConfiguration = 0
omniORB:?? endPoint = giop:tcp::
omniORB:?? endPointPublishAllIFs = 0
omniORB:?? giopMaxMsgSize = 2097152
omniORB:?? giopTargetAddressMode = KeyAddr
omniORB:?? id = omniORB4
omniORB:?? inConScanPeriod = 180
omniORB:?? lcdMode = 0
omniORB:?? maxGIOPConnectionPerServer = 5
omniORB:?? maxGIOPVersion = 1.2
omniORB:?? maxInterleavedCallsPerConnection = 5
omniORB:?? maxServerThreadPerConnection = 100
omniORB:?? maxServerThreadPoolSize = 100
omniORB:?? maxSocketRecv = 131072
omniORB:?? maxSocketSend = 131072
omniORB:?? nativeCharCodeSet = ISO-8859-1
omniORB:?? nativeWCharCodeSet = UTF-16
omniORB:?? objectTableSize = 0
omniORB:?? offerBiDirectionalGIOP = 0
omniORB:?? omniORB_27_CompatibleAnyExtraction = 0
omniORB:?? oneCallPerConnection = 1
omniORB:?? outConScanPeriod = 120
omniORB:?? poaHoldRequestTimeout = 0
omniORB:?? poaUniquePersistentSystemIds = 1
omniORB:?? principal = [Null]
omniORB:?? scanGranularity = 5
omniORB:?? serverCallTimeOutPeriod = 0
omniORB:?? serverTransportRule = * unix,ssl,tcp
omniORB:?? strictIIOP = 0
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 = 1
omniORB:?? traceFile = [stderr]
omniORB:?? traceInvocations = 0
omniORB:?? traceLevel = 40
omniORB:?? traceThreadId = 0
omniORB:?? unixTransportDirectory = /tmp/omni-%u
omniORB:?? unixTransportPermission =? 777
omniORB:?? useTypeCodeIndirections = 1
omniORB:?? verifyObjectExistsAndType = 1
omniORB: Creating ref to remote: key<NameService> target id????? :
IDL:omg.org/CORBA/Object:1.0 most derived id:
omniORB: Initial reference `NameService' resolved from -ORBInitRef
argument / ORB registration.
omniORB: Client attempt to connect to giop:tcp:164.23.185.14:2809
omniORB: AsyncInvoker: thread id = 1 has started. Total threads = 1
omniORB: Scavenger task execute.
omniORB: Switch rope to use address giop:tcp:164.23.131.250:2809
omniORB: throw giopStream::CommFailure from
giopStream.cc:1077(1,NO,TRANSIENT_ConnectFailed)
omniORB: Client attempt to connect to giop:tcp:164.23.131.250:2809
omniORB: Client opened connection to giop:tcp:164.23.131.250:2809
omniORB: sendChunk: to giop:tcp:164.23.131.250:2809 100 bytes
omniORB:
4749 4f50 0100 0100 5800 0000 0000 0000 GIOP....X.......
0200 0000 010a 6f6d 0b00 0000 4e61 6d65 ......om....Name
5365 7276 6963 6574 0600 0000 5f69 735f Servicet...._is_
6100 696c 0000 0000 2800 0000 4944 4c3a a.il....(...IDL:
6f6d 672e 6f72 672f 436f 734e 616d 696e omg.org/CosNamin
672f 4e61 6d69 6e67 436f 6e74 6578 743a g/NamingContext:
312e 3000?????????????????????????????? 1.0.
omniORB: inputMessage: from giop:tcp:164.23.131.250:2809 368 bytes
omniORB:
4749 4f50 0100 0101 6401 0000 0000 0000 GIOP....d.......
0200 0000 0300 0000 2b00 0000 4944 4c3a ........+...IDL:
6f6d 672e 6f72 672f 436f 734e 616d 696e omg.org/CosNamin
672f 4e61 6d69 6e67 436f 6e74 6578 7445 g/NamingContextE
7874 3a31 2e30 0079 0200 0000 0000 0000 xt:1.0.y........
8800 0000 0001 0200 0000 000e 3136 342e ............164.
3233 2e31 3835 2e31 3400 0af9 0000 0025 23.185.14......%
0050 4d43 0000 0004 0000 0013 2f43 4f4e .PMC......../CON
5445 5854 5f50 4f41 4d61 7374 6572 0020 TEXT_POAMaster.
0000 0001 3200 0000 0000 0003 5649 5303 ....2.......VIS.
0000 0005 0007 0801 ff00 0000 0000 0000 ................
0000 0008 0000 0000 5649 5300 0000 0001 ........VIS.....
0000 0018 0000 0000 0001 0001 0000 0001 ................
0501 0001 0001 0109 0000 0000 0000 0000 ................
8c00 0000 0001 0200 0000 000f 3136 342e ............164.
3233 2e31 3331 2e32 3530 0000 0af9 0000 23.131.250......
0000 0025 0050 4d43 0000 0004 0000 0013 ...%.PMC........
2f43 4f4e 5445 5854 5f50 4f41 4d61 7374 /CONTEXT_POAMast
6572 0020 0000 0001 3200 0000 0000 0003 er. ....2.......
5649 5303 0000 0005 0007 0801 ff00 0000 VIS.............
0000 0000 0000 0008 0000 0000 5649 5300 ............VIS.
0000 0001 0000 0018 0000 0000 0001 0001 ................
0000 0001 0501 0001 0001 0109 0000 0000 ................
omniORB: Creating ref to remote:
key<.PMC.........CONTEXT.POAMaster......2>
?target id????? : IDL:omg.org/CORBA/Object:1.0
?most derived id: IDL:omg.org/CosNaming/NamingContextExt:1.0
omniORB: GIOP::LOCATION_FORWARD -- retry request.
omniORB: omniRemoteIdentity deleted.
omniORB: ObjRef(IDL:omg.org/CosNaming/NamingContextExt:1.0) -- deleted.
omniORB: Send codeset service context: (ISO-8859-1,UTF-16)
omniORB: Client attempt to connect to giop:tcp:164.23.185.14:2809
omniORB: throw giopStream::CommFailure from
giopStream.cc:1077(1,NO,TRANSIENT_ConnectFailed)
omniORB: Send codeset service context: (ISO-8859-1,UTF-16)
omniORB: Client attempt to connect to giop:tcp:164.23.185.14:2809
omniORB: Switch rope to use address giop:tcp:164.23.185.14:2809
omniORB: throw giopStream::CommFailure from
giopStream.cc:1077(1,NO,TRANSIENT_ConnectFailed)
omniORB: Send codeset service context: (ISO-8859-1,UTF-16)
omniORB: Client attempt to connect to giop:tcp:164.23.185.14:2809
omniORB: Switch rope to use address giop:tcp:164.23.185.14:2809
omniORB: throw giopStream::CommFailure from
giopStream.cc:1077(1,NO,TRANSIENT_ConnectFailed)
omniORB: Send codeset service context: (ISO-8859-1,UTF-16)
omniORB: Client attempt to connect to giop:tcp:164.23.185.14:2809

etc

PS
Same result by test with omniORB 4.1 beta
Duncan Grisby
2006-10-04 17:44:43 UTC
Permalink
On Friday 29 September, "***@t-online.de" wrote:

[...]
Post by K.D.Welast at t-online.de ()
If the master server is online all connects are perfect.
But if the master is down, omniORB application can't connect to the
slave server, because the slave response is the LOCATION_FORWARD reply
to the master server.
omniORB tries to connect the master again and doesn't switch back to the
slave server,? after receiving connect failed from the master.
Can you try with 4.1.0 RC 1, or with the current CVS version of 4.0.x?
I think the problem you are seeing has already been fixed.

If the latest version doesn't fix it, please can you get another log
from -ORBtraceLevel 40 -ORBtraceInvocations 1.

Cheers,

Duncan.
--
-- Duncan Grisby --
-- ***@grisby.org --
-- http://www.grisby.org --
K.D.Welast at t-online.de ()
2006-10-05 11:21:00 UTC
Permalink
Hello Duncan,

Thanks for your answer.

[...]
Post by Duncan Grisby
Post by K.D.Welast at t-online.de ()
If the master server is online all connects are perfect.
But if the master is down, omniORB application can't connect to the
slave server, because the slave response is the LOCATION_FORWARD
reply
Post by Duncan Grisby
Post by K.D.Welast at t-online.de ()
to the master server.
omniORB tries to connect the master again and doesn't switch back to
the
Post by Duncan Grisby
Post by K.D.Welast at t-online.de ()
slave server, after receiving connect failed from the master.
Can you try with 4.1.0 RC 1, or with the current CVS version of 4.0.x?
I think the problem you are seeing has already been fixed.
If the latest version doesn't fix it, please can you get another log
from -ORBtraceLevel 40 -ORBtraceInvocations 1.
Cheers,
Duncan.
I have done the test with 4.1.0 RC 1 and the problem is still there.
The version 4.1.0 RC 1 binaries are building with VC 7 SP1 on WinXP SP2

Below the trace with -ORBtraceLevel 40 -ORBtraceInvocations 1 for the
versions 4.10 RC1 and 4.07

Thanks and best regards

Kl. D. Welast


Trace from nameclt omniORB 4.10 RC1 with -ORBtraceLevel 40 and
-ORBtraceInvocations 1

omniORB: Distribution date: Mon Sep 25 11:19:43 BST 2006 dgrisby
omniORB: Warning: WSAIoctl SIO_ADDRESS_LIST_QUERY failed.
Unable to obtain the list of all IPv6 interface addresses.
WSAGetLastError() = 10038
omniORB: My addresses are:
omniORB: 164.23.185.14
omniORB: 127.0.0.1
omniORB: Maximum supported GIOP version is 1.2
omniORB: Native char code sets: UTF-8 ISO-8859-1.
omniORB: Transmission char code sets: UTF-8(1.2) UTF-8(1.1)
ISO-8859-1(1.2) ISO-8859-1(1.1) ISO-8859-1(1.0).
omniORB: Native wide char code sets: UTF-16.
omniORB: Transmission wide char code sets: UTF-16(1.2).
omniORB: Information: the omniDynamic library is not linked.
omniORB: Current configuration is as follows:
omniORB: DefaultInitRef (file) =
omniORB: DefaultInitRef (args) =
omniORB: InitRef =
NameService=corbaloc::164.23.185.14:2809,:164.23.131.250:2809/NameService
omniORB: abortOnInternalError = 0
omniORB: abortOnNativeException = 0
omniORB: acceptBiDirectionalGIOP = 0
omniORB: acceptMisalignedTcIndirections = 0
omniORB: bootstrapAgentHostname =
omniORB: bootstrapAgentPort = 900
omniORB: clientCallTimeOutPeriod = 0
omniORB: clientConnectTimeOutPeriod = 0
omniORB: clientTransportRule = * unix,ssl,tcp
omniORB: configFile = [none]
omniORB: connectionWatchImmediate = 0
omniORB: connectionWatchPeriod = 50000
omniORB: copyValuesInLocalCalls = 1
omniORB: diiThrowsSysExceptions = 0
omniORB: dumpConfiguration = 0
omniORB: endPoint = giop:tcp::
omniORB: endPointPublish = addr
omniORB: giopMaxMsgSize = 2097152
omniORB: giopTargetAddressMode = KeyAddr
omniORB: id = omniORB4
omniORB: idleThreadTimeout = 10
omniORB: inConScanPeriod = 180
omniORB: lcdMode = 0
omniORB: maxGIOPConnectionPerServer = 5
omniORB: maxGIOPVersion = 1.2
omniORB: maxInterleavedCallsPerConnection = 5
omniORB: maxServerThreadPerConnection = 100
omniORB: maxServerThreadPoolSize = 100
omniORB: maxSocketRecv = 131072
omniORB: maxSocketSend = 131072
omniORB: nativeCharCodeSet = ISO-8859-1
omniORB: nativeWCharCodeSet = UTF-16
omniORB: objectTableSize = 0
omniORB: offerBiDirectionalGIOP = 0
omniORB: oneCallPerConnection = 1
omniORB: outConScanPeriod = 120
omniORB: poaHoldRequestTimeout = 0
omniORB: poaUniquePersistentSystemIds = 1
omniORB: principal = [Null]
omniORB: scanGranularity = 5
omniORB: serverCallTimeOutPeriod = 0
omniORB: serverTransportRule = * unix,ssl,tcp
omniORB: strictIIOP = 0
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 = 1
omniORB: traceFile = [stderr]
omniORB: traceInvocationReturns = 0
omniORB: traceInvocations = 1
omniORB: traceLevel = 40
omniORB: traceThreadId = 0
omniORB: traceTime = 0
omniORB: unixTransportDirectory = /tmp/omni-%u
omniORB: unixTransportPermission = 777
omniORB: useTypeCodeIndirections = 1
omniORB: verifyObjectExistsAndType = 1
omniORB: Creating ref to remote: key<NameService>
target id : IDL:omg.org/CORBA/Object:1.0
most derived id:
omniORB: Initial reference `NameService' resolved from -ORBInitRef
argument / ORB registration.
omniORB: Invoke '_is_a' on remote: key<NameService>
omniORB: Client attempt to connect to giop:tcp:164.23.185.14:2809
omniORB: AsyncInvoker: thread id = 1 has started. Total threads = 1
omniORB: Scavenger task execute.
omniORB: Switch rope to use address giop:tcp:164.23.131.250:2809
omniORB: Unable to open new connection: giop:tcp:164.23.185.14:2809
omniORB: throw giopStream::CommFailure from
giopStream.cc:1148(1,NO,TRANSIENT_ConnectFailed)
omniORB: Invoke '_is_a' on remote: key<NameService>
omniORB: Client attempt to connect to giop:tcp:164.23.131.250:2809
omniORB: Client opened connection to giop:tcp:164.23.131.250:2809
omniORB: sendChunk: to giop:tcp:164.23.131.250:2809 100 bytes
omniORB:
4749 4f50 0100 0100 5800 0000 0000 0000 GIOP....X.......
0200 0000 010a 6f6d 0b00 0000 4e61 6d65 ......om....Name
5365 7276 6963 6574 0600 0000 5f69 735f Servicet...._is_
6100 696c 0000 0000 2800 0000 4944 4c3a a.il....(...IDL:
6f6d 672e 6f72 672f 436f 734e 616d 696e omg.org/CosNamin
672f 4e61 6d69 6e67 436f 6e74 6578 743a g/NamingContext:
312e 3000 1.0.
omniORB: inputMessage: from giop:tcp:164.23.131.250:2809 368 bytes
omniORB:
4749 4f50 0100 0101 6401 0000 0000 0000 GIOP....d.......
0200 0000 0300 0000 2b00 0000 4944 4c3a ........+...IDL:
6f6d 672e 6f72 672f 436f 734e 616d 696e omg.org/CosNamin
672f 4e61 6d69 6e67 436f 6e74 6578 7445 g/NamingContextE
7874 3a31 2e30 0000 0200 0000 0000 0000 xt:1.0..........
8800 0000 0001 0200 0000 000e 3136 342e ............164.
3233 2e31 3835 2e31 3400 0af9 0000 0025 23.185.14......%
0050 4d43 0000 0004 0000 0013 2f43 4f4e .PMC......../CON
5445 5854 5f50 4f41 4d61 7374 6572 0020 TEXT_POAMaster.
0000 0001 3200 0000 0000 0003 5649 5303 ....2.......VIS.
0000 0005 0007 0801 ff00 0000 0000 0000 ................
0000 0008 0000 0000 5649 5300 0000 0001 ........VIS.....
0000 0018 0000 0000 0001 0001 0000 0001 ................
0501 0001 0001 0109 0000 0000 0000 0000 ................
8c00 0000 0001 0200 0000 000f 3136 342e ............164.
3233 2e31 3331 2e32 3530 0000 0af9 0000 23.131.250......
0000 0025 0050 4d43 0000 0004 0000 0013 ...%.PMC........
2f43 4f4e 5445 5854 5f50 4f41 4d61 7374 /CONTEXT_POAMast
6572 0020 0000 0001 3200 0000 0000 0003 er. ....2.......
5649 5303 0000 0005 0007 0801 ff00 0000 VIS.............
0000 0000 0000 0008 0000 0000 5649 5300 ............VIS.
0000 0001 0000 0018 0000 0000 0001 0001 ................
0000 0001 0501 0001 0001 0109 0000 0000 ................
omniORB: Creating ref to remote:
key<.PMC.........CONTEXT.POAMaster......2>
target id : IDL:omg.org/CORBA/Object:1.0
most derived id: IDL:omg.org/CosNaming/NamingContextExt:1.0
omniORB: GIOP::LOCATION_FORWARD -- retry request.
omniORB: omniRemoteIdentity deleted.
omniORB: ObjRef(IDL:omg.org/CosNaming/NamingContextExt:1.0) -- deleted.
omniORB: Invoke '_is_a' on remote:
key<.PMC.........CONTEXT.POAMaster......2>
omniORB: Send codeset service context: (ISO-8859-1,UTF-16)
omniORB: Client attempt to connect to giop:tcp:164.23.185.14:2809
omniORB: Switch rope to use address giop:tcp:164.23.185.14:2809
omniORB: Unable to open new connection: giop:tcp:164.23.185.14:2809
omniORB: throw giopStream::CommFailure from
giopStream.cc:1148(0,NO,TRANSIENT_ConnectFailed)
omniORB: Reverting object reference to original profile
omniORB: omniRemoteIdentity deleted.
omniORB: Invocation on a location forwarded object has failed. 0
retries.
omniORB: Invoke '_is_a' on remote: key<NameService>
omniORB: sendChunk: to giop:tcp:164.23.131.250:2809 100 bytes
omniORB:
4749 4f50 0100 0100 5800 0000 0000 0000 GIOP....X.......
0400 0000 010a 6f6d 0b00 0000 4e61 6d65 ......om....Name
5365 7276 6963 6574 0600 0000 5f69 735f Servicet...._is_
6100 696c 0000 0000 2800 0000 4944 4c3a a.il....(...IDL:
6f6d 672e 6f72 672f 436f 734e 616d 696e omg.org/CosNamin
672f 4e61 6d69 6e67 436f 6e74 6578 743a g/NamingContext:
312e 3000 1.0.
omniORB: inputMessage: from giop:tcp:164.23.131.250:2809 368 bytes
omniORB:
4749 4f50 0100 0101 6401 0000 0000 0000 GIOP....d.......
0400 0000 0300 0000 2b00 0000 4944 4c3a ........+...IDL:
6f6d 672e 6f72 672f 436f 734e 616d 696e omg.org/CosNamin
672f 4e61 6d69 6e67 436f 6e74 6578 7445 g/NamingContextE
7874 3a31 2e30 002f 0200 0000 0000 0000 xt:1.0./........
8800 0000 0001 0200 0000 000e 3136 342e ............164.
3233 2e31 3835 2e31 3400 0af9 0000 0025 23.185.14......%
0050 4d43 0000 0004 0000 0013 2f43 4f4e .PMC......../CON
5445 5854 5f50 4f41 4d61 7374 6572 0020 TEXT_POAMaster.
0000 0001 3200 0000 0000 0003 5649 5303 ....2.......VIS.
0000 0005 0007 0801 ff00 0000 0000 0000 ................
0000 0008 0000 0000 5649 5300 0000 0001 ........VIS.....
0000 0018 0000 0000 0001 0001 0000 0001 ................
0501 0001 0001 0109 0000 0000 0000 0000 ................
8c00 0000 0001 0200 0000 000f 3136 342e ............164.
3233 2e31 3331 2e32 3530 0000 0af9 0000 23.131.250......
0000 0025 0050 4d43 0000 0004 0000 0013 ...%.PMC........
2f43 4f4e 5445 5854 5f50 4f41 4d61 7374 /CONTEXT_POAMast
6572 0020 0000 0001 3200 0000 0000 0003 er. ....2.......
5649 5303 0000 0005 0007 0801 ff00 0000 VIS.............
0000 0000 0000 0008 0000 0000 5649 5300 ............VIS.
0000 0001 0000 0018 0000 0000 0001 0001 ................
0000 0001 0501 0001 0001 0109 0000 0000 ................
omniORB: Creating ref to remote:
key<.PMC.........CONTEXT.POAMaster......2>
target id : IDL:omg.org/CORBA/Object:1.0
most derived id: IDL:omg.org/CosNaming/NamingContextExt:1.0
omniORB: GIOP::LOCATION_FORWARD -- retry request.
omniORB: omniRemoteIdentity deleted.
omniORB: ObjRef(IDL:omg.org/CosNaming/NamingContextExt:1.0) -- deleted.
omniORB: Invoke '_is_a' on remote:
key<.PMC.........CONTEXT.POAMaster......2>
omniORB: Send codeset service context: (ISO-8859-1,UTF-16)
omniORB: Client attempt to connect to giop:tcp:164.23.185.14:2809
omniORB: Switch rope to use address giop:tcp:164.23.185.14:2809
omniORB: Unable to open new connection: giop:tcp:164.23.185.14:2809
omniORB: throw giopStream::CommFailure from
giopStream.cc:1148(0,NO,TRANSIENT_ConnectFailed)
omniORB: Reverting object reference to original profile
omniORB: omniRemoteIdentity deleted.
omniORB: Invocation on a location forwarded object has failed. 1
retries.
omniORB: Invoke '_is_a' on remote: key<NameService>
omniORB: sendChunk: to giop:tcp:164.23.131.250:2809 100 bytes
omniORB:
4749 4f50 0100 0100 5800 0000 0000 0000 GIOP....X.......
0600 0000 010a 6f6d 0b00 0000 4e61 6d65 ......om....Name
5365 7276 6963 6574 0600 0000 5f69 735f Servicet...._is_
6100 696c 0000 0000 2800 0000 4944 4c3a a.il....(...IDL:
6f6d 672e 6f72 672f 436f 734e 616d 696e omg.org/CosNamin
672f 4e61 6d69 6e67 436f 6e74 6578 743a g/NamingContext:
312e 3000 1.0.
omniORB: inputMessage: from giop:tcp:164.23.131.250:2809 368 bytes
omniORB:
4749 4f50 0100 0101 6401 0000 0000 0000 GIOP....d.......
0600 0000 0300 0000 2b00 0000 4944 4c3a ........+...IDL:
6f6d 672e 6f72 672f 436f 734e 616d 696e omg.org/CosNamin
672f 4e61 6d69 6e67 436f 6e74 6578 7445 g/NamingContextE
7874 3a31 2e30 002f 0200 0000 0000 0000 xt:1.0./........
8800 0000 0001 0200 0000 000e 3136 342e ............164.
3233 2e31 3835 2e31 3400 0af9 0000 0025 23.185.14......%
0050 4d43 0000 0004 0000 0013 2f43 4f4e .PMC......../CON
5445 5854 5f50 4f41 4d61 7374 6572 0020 TEXT_POAMaster.
0000 0001 3200 0000 0000 0003 5649 5303 ....2.......VIS.
0000 0005 0007 0801 ff00 0000 0000 0000 ................
0000 0008 0000 0000 5649 5300 0000 0001 ........VIS.....
0000 0018 0000 0000 0001 0001 0000 0001 ................
0501 0001 0001 0109 0000 0000 0000 0000 ................
8c00 0000 0001 0200 0000 000f 3136 342e ............164.
3233 2e31 3331 2e32 3530 0000 0af9 0000 23.131.250......
0000 0025 0050 4d43 0000 0004 0000 0013 ...%.PMC........
2f43 4f4e 5445 5854 5f50 4f41 4d61 7374 /CONTEXT_POAMast
6572 0020 0000 0001 3200 0000 0000 0003 er. ....2.......
5649 5303 0000 0005 0007 0801 ff00 0000 VIS.............
0000 0000 0000 0008 0000 0000 5649 5300 ............VIS.
0000 0001 0000 0018 0000 0000 0001 0001 ................
0000 0001 0501 0001 0001 0109 0000 0000 ................
omniORB: Creating ref to remote:
key<.PMC.........CONTEXT.POAMaster......2>
target id : IDL:omg.org/CORBA/Object:1.0
most derived id: IDL:omg.org/CosNaming/NamingContextExt:1.0
omniORB: GIOP::LOCATION_FORWARD -- retry request.
omniORB: omniRemoteIdentity deleted.
omniORB: ObjRef(IDL:omg.org/CosNaming/NamingContextExt:1.0) -- deleted.
omniORB: Invoke '_is_a' on remote:
key<.PMC.........CONTEXT.POAMaster......2>
omniORB: Send codeset service context: (ISO-8859-1,UTF-16)
omniORB: Client attempt to connect to giop:tcp:164.23.185.14:2809
omniORB: Switch rope to use address giop:tcp:164.23.185.14:2809
omniORB: Unable to open new connection: giop:tcp:164.23.185.14:2809
omniORB: throw giopStream::CommFailure from
giopStream.cc:1148(0,NO,TRANSIENT_ConnectFailed)
omniORB: Reverting object reference to original profile
omniORB: omniRemoteIdentity deleted.
omniORB: Invocation on a location forwarded object has failed. 2
retries.
omniORB: Scan for idle connections (1160023813,333000000)
omniORB: Scavenger reduce idle count for strand 00328D98 to 23
omniORB: Scan for idle connections done (1160023813,333000000).
omniORB: Invoke '_is_a' on remote: key<NameService>
omniORB: sendChunk: to giop:tcp:164.23.131.250:2809 100 bytes
omniORB:
4749 4f50 0100 0100 5800 0000 0000 0000 GIOP....X.......
0800 0000 010a 6f6d 0b00 0000 4e61 6d65 ......om....Name
5365 7276 6963 6574 0600 0000 5f69 735f Servicet...._is_
6100 696c 0000 0000 2800 0000 4944 4c3a a.il....(...IDL:
6f6d 672e 6f72 672f 436f 734e 616d 696e omg.org/CosNamin
672f 4e61 6d69 6e67 436f 6e74 6578 743a g/NamingContext:
312e 3000 1.0.
omniORB: inputMessage: from giop:tcp:164.23.131.250:2809 368 bytes
omniORB:
4749 4f50 0100 0101 6401 0000 0000 0000 GIOP....d.......
0800 0000 0300 0000 2b00 0000 4944 4c3a ........+...IDL:
6f6d 672e 6f72 672f 436f 734e 616d 696e omg.org/CosNamin
672f 4e61 6d69 6e67 436f 6e74 6578 7445 g/NamingContextE
7874 3a31 2e30 002f 0200 0000 0000 0000 xt:1.0./........
8800 0000 0001 0200 0000 000e 3136 342e ............164.
3233 2e31 3835 2e31 3400 0af9 0000 0025 23.185.14......%
0050 4d43 0000 0004 0000 0013 2f43 4f4e .PMC......../CON
5445 5854 5f50 4f41 4d61 7374 6572 0020 TEXT_POAMaster.
0000 0001 3200 0000 0000 0003 5649 5303 ....2.......VIS.
0000 0005 0007 0801 ff00 0000 0000 0000 ................
0000 0008 0000 0000 5649 5300 0000 0001 ........VIS.....
0000 0018 0000 0000 0001 0001 0000 0001 ................
0501 0001 0001 0109 0000 0000 0000 0000 ................
8c00 0000 0001 0200 0000 000f 3136 342e ............164.
3233 2e31 3331 2e32 3530 0000 0af9 0000 23.131.250......
0000 0025 0050 4d43 0000 0004 0000 0013 ...%.PMC........
2f43 4f4e 5445 5854 5f50 4f41 4d61 7374 /CONTEXT_POAMast
6572 0020 0000 0001 3200 0000 0000 0003 er. ....2.......
5649 5303 0000 0005 0007 0801 ff00 0000 VIS.............
0000 0000 0000 0008 0000 0000 5649 5300 ............VIS.
0000 0001 0000 0018 0000 0000 0001 0001 ................
0000 0001 0501 0001 0001 0109 0000 0000 ................
omniORB: Creating ref to remote:
key<.PMC.........CONTEXT.POAMaster......2>
target id : IDL:omg.org/CORBA/Object:1.0
most derived id: IDL:omg.org/CosNaming/NamingContextExt:1.0
omniORB: GIOP::LOCATION_FORWARD -- retry request.
omniORB: omniRemoteIdentity deleted.
omniORB: ObjRef(IDL:omg.org/CosNaming/NamingContextExt:1.0) -- deleted.
omniORB: Invoke '_is_a' on remote:
key<.PMC.........CONTEXT.POAMaster......2>
omniORB: Send codeset service context: (ISO-8859-1,UTF-16)
omniORB: Client attempt to connect to giop:tcp:164.23.185.14:2809
omniORB: Switch rope to use address giop:tcp:164.23.185.14:2809
omniORB: Unable to open new connection: giop:tcp:164.23.185.14:2809
omniORB: throw giopStream::CommFailure from
giopStream.cc:1148(0,NO,TRANSIENT_ConnectFailed)
omniORB: Reverting object reference to original profile
omniORB: omniRemoteIdentity deleted.
omniORB: Invocation on a location forwarded object has failed. 3
retries.


Trace from nameclt omniORB 4.07 with -ORBtraceLevel 40 and
-ORBtraceInvocations 1

omniORB: Distribution date: Fri Jan 13 13:47:35 GMT 2006 dgrisby
omniORB: My addresses are:
omniORB: 164.23.185.14
omniORB: 127.0.0.1
omniORB: Maximum supported GIOP version is 1.2
omniORB: Native char code sets: UTF-8 ISO-8859-1.
omniORB: Transmission char code sets: UTF-8(1.2) UTF-8(1.1)
ISO-8859-1(1.2) ISO-8859-1(1.1) ISO-8859-1(1.0).
omniORB: Native wide char code sets: UTF-16.
omniORB: Transmission wide char code sets: UTF-16(1.2).
omniORB: Information: the omniDynamic library is not linked.
omniORB: Current configuration is as follows:
omniORB: DefaultInitRef (file) =
omniORB: DefaultInitRef (args) =
omniORB: InitRef =
NameService=corbaloc::164.23.185.14:2809,:164.23.131.250:2809/NameService
omniORB: abortOnInternalError = 0
omniORB: abortOnNativeException = 0
omniORB: acceptBiDirectionalGIOP = 0
omniORB: acceptMisalignedTcIndirections = 0
omniORB: bootstrapAgentHostname =
omniORB: bootstrapAgentPort = 900
omniORB: clientCallTimeOutPeriod = 0
omniORB: clientTransportRule = * unix,ssl,tcp
omniORB: configFile = [none]
omniORB: connectionWatchImmediate = 0
omniORB: connectionWatchPeriod = 50000
omniORB: diiThrowsSysExceptions = 0
omniORB: dumpConfiguration = 0
omniORB: endPoint = giop:tcp::
omniORB: endPointPublishAllIFs = 0
omniORB: giopMaxMsgSize = 2097152
omniORB: giopTargetAddressMode = KeyAddr
omniORB: id = omniORB4
omniORB: inConScanPeriod = 180
omniORB: lcdMode = 0
omniORB: maxGIOPConnectionPerServer = 5
omniORB: maxGIOPVersion = 1.2
omniORB: maxInterleavedCallsPerConnection = 5
omniORB: maxServerThreadPerConnection = 100
omniORB: maxServerThreadPoolSize = 100
omniORB: maxSocketRecv = 131072
omniORB: maxSocketSend = 131072
omniORB: nativeCharCodeSet = ISO-8859-1
omniORB: nativeWCharCodeSet = UTF-16
omniORB: objectTableSize = 0
omniORB: offerBiDirectionalGIOP = 0
omniORB: omniORB_27_CompatibleAnyExtraction = 0
omniORB: oneCallPerConnection = 1
omniORB: outConScanPeriod = 120
omniORB: poaHoldRequestTimeout = 0
omniORB: poaUniquePersistentSystemIds = 1
omniORB: principal = [Null]
omniORB: scanGranularity = 5
omniORB: serverCallTimeOutPeriod = 0
omniORB: serverTransportRule = * unix,ssl,tcp
omniORB: strictIIOP = 0
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 = 1
omniORB: traceFile = [stderr]
omniORB: traceInvocations = 1
omniORB: traceLevel = 40
omniORB: traceThreadId = 0
omniORB: unixTransportDirectory = /tmp/omni-%u
omniORB: unixTransportPermission = 777
omniORB: useTypeCodeIndirections = 1
omniORB: verifyObjectExistsAndType = 1
omniORB: Creating ref to remote: key<NameService>
target id : IDL:omg.org/CORBA/Object:1.0
most derived id:
omniORB: Initial reference `NameService' resolved from -ORBInitRef
argument / ORB registration.
omniORB: Invoke '_is_a' on remote: key<NameService>
omniORB: Client attempt to connect to giop:tcp:164.23.185.14:2809
omniORB: AsyncInvoker: thread id = 1 has started. Total threads = 1
omniORB: Scavenger task execute.
omniORB: Switch rope to use address giop:tcp:164.23.131.250:2809
omniORB: throw giopStream::CommFailure from
giopStream.cc:1077(1,NO,TRANSIENT_ConnectFailed)
omniORB: Invoke '_is_a' on remote: key<NameService>
omniORB: Client attempt to connect to giop:tcp:164.23.131.250:2809
omniORB: Client opened connection to giop:tcp:164.23.131.250:2809
omniORB: sendChunk: to giop:tcp:164.23.131.250:2809 100 bytes
omniORB:
4749 4f50 0100 0100 5800 0000 0000 0000 GIOP....X.......
0200 0000 010a 6f6d 0b00 0000 4e61 6d65 ......om....Name
5365 7276 6963 6574 0600 0000 5f69 735f Servicet...._is_
6100 696c 0000 0000 2800 0000 4944 4c3a a.il....(...IDL:
6f6d 672e 6f72 672f 436f 734e 616d 696e omg.org/CosNamin
672f 4e61 6d69 6e67 436f 6e74 6578 743a g/NamingContext:
312e 3000 1.0.
omniORB: inputMessage: from giop:tcp:164.23.131.250:2809 368 bytes
omniORB:
4749 4f50 0100 0101 6401 0000 0000 0000 GIOP....d.......
0200 0000 0300 0000 2b00 0000 4944 4c3a ........+...IDL:
6f6d 672e 6f72 672f 436f 734e 616d 696e omg.org/CosNamin
672f 4e61 6d69 6e67 436f 6e74 6578 7445 g/NamingContextE
7874 3a31 2e30 0000 0200 0000 0000 0000 xt:1.0..........
8800 0000 0001 0200 0000 000e 3136 342e ............164.
3233 2e31 3835 2e31 3400 0af9 0000 0025 23.185.14......%
0050 4d43 0000 0004 0000 0013 2f43 4f4e .PMC......../CON
5445 5854 5f50 4f41 4d61 7374 6572 0020 TEXT_POAMaster.
0000 0001 3200 0000 0000 0003 5649 5303 ....2.......VIS.
0000 0005 0007 0801 ff00 0000 0000 0000 ................
0000 0008 0000 0000 5649 5300 0000 0001 ........VIS.....
0000 0018 0000 0000 0001 0001 0000 0001 ................
0501 0001 0001 0109 0000 0000 0000 0000 ................
8c00 0000 0001 0200 0000 000f 3136 342e ............164.
3233 2e31 3331 2e32 3530 0000 0af9 0000 23.131.250......
0000 0025 0050 4d43 0000 0004 0000 0013 ...%.PMC........
2f43 4f4e 5445 5854 5f50 4f41 4d61 7374 /CONTEXT_POAMast
6572 0020 0000 0001 3200 0000 0000 0003 er. ....2.......
5649 5303 0000 0005 0007 0801 ff00 0000 VIS.............
0000 0000 0000 0008 0000 0000 5649 5300 ............VIS.
0000 0001 0000 0018 0000 0000 0001 0001 ................
0000 0001 0501 0001 0001 0109 0000 0000 ................
omniORB: Creating ref to remote:
key<.PMC.........CONTEXT.POAMaster......2>
target id : IDL:omg.org/CORBA/Object:1.0
most derived id: IDL:omg.org/CosNaming/NamingContextExt:1.0
omniORB: GIOP::LOCATION_FORWARD -- retry request.
omniORB: omniRemoteIdentity deleted.
omniORB: ObjRef(IDL:omg.org/CosNaming/NamingContextExt:1.0) -- deleted.
omniORB: Invoke '_is_a' on remote:
key<.PMC.........CONTEXT.POAMaster......2>
omniORB: Send codeset service context: (ISO-8859-1,UTF-16)
omniORB: Client attempt to connect to giop:tcp:164.23.185.14:2809
omniORB: throw giopStream::CommFailure from
giopStream.cc:1077(1,NO,TRANSIENT_ConnectFailed)
omniORB: Invoke '_is_a' on remote:
key<.PMC.........CONTEXT.POAMaster......2>
omniORB: Send codeset service context: (ISO-8859-1,UTF-16)
omniORB: Client attempt to connect to giop:tcp:164.23.185.14:2809
omniORB: Switch rope to use address giop:tcp:164.23.185.14:2809
omniORB: throw giopStream::CommFailure from
giopStream.cc:1077(1,NO,TRANSIENT_ConnectFailed)
omniORB: Invoke '_is_a' on remote:
key<.PMC.........CONTEXT.POAMaster......2>
omniORB: Send codeset service context: (ISO-8859-1,UTF-16)
omniORB: Client attempt to connect to giop:tcp:164.23.185.14:2809
omniORB: Switch rope to use address giop:tcp:164.23.185.14:2809
omniORB: throw giopStream::CommFailure from
giopStream.cc:1077(1,NO,TRANSIENT_ConnectFailed)
omniORB: Invoke '_is_a' on remote:
key<.PMC.........CONTEXT.POAMaster......2>
omniORB: Send codeset service context: (ISO-8859-1,UTF-16)
omniORB: Client attempt to connect to giop:tcp:164.23.185.14:2809
omniORB: Scan for idle connections (1160024049,483000000)
omniORB: Scavenger reduce idle count for strand 00328D20 to 23
omniORB: Scan for idle connections done (1160024049,483000000).
omniORB: Switch rope to use address giop:tcp:164.23.185.14:2809
omniORB: throw giopStream::CommFailure from
giopStream.cc:1077(1,NO,TRANSIENT_ConnectFailed)
omniORB: Invoke '_is_a' on remote:
key<.PMC.........CONTEXT.POAMaster......2>
omniORB: Send codeset service context: (ISO-8859-1,UTF-16)
omniORB: Client attempt to connect to giop:tcp:164.23.185.14:2809
omniORB: Switch rope to use address giop:tcp:164.23.185.14:2809
omniORB: throw giopStream::CommFailure from
giopStream.cc:1077(1,NO,TRANSIENT_ConnectFailed)
omniORB: Invoke '_is_a' on remote:
key<.PMC.........CONTEXT.POAMaster......2>
omniORB: Send codeset service context: (ISO-8859-1,UTF-16)
omniORB: Client attempt to connect to giop:tcp:164.23.185.14:2809
omniORB: Switch rope to use address giop:tcp:164.23.185.14:2809
omniORB: throw giopStream::CommFailure from
giopStream.cc:1077(1,NO,TRANSIENT_ConnectFailed)
omniORB: Invoke '_is_a' on remote:
key<.PMC.........CONTEXT.POAMaster......2>
omniORB: Send codeset service context: (ISO-8859-1,UTF-16)
omniORB: Client attempt to connect to giop:tcp:164.23.185.14:2809
omniORB: Switch rope to use address giop:tcp:164.23.185.14:2809
omniORB: throw giopStream::CommFailure from
giopStream.cc:1077(1,NO,TRANSIENT_ConnectFailed)
omniORB: Invoke '_is_a' on remote:
key<.PMC.........CONTEXT.POAMaster......2>
omniORB: Send codeset service context: (ISO-8859-1,UTF-16)
omniORB: Client attempt to connect to giop:tcp:164.23.185.14:2809
omniORB: Switch rope to use address giop:tcp:164.23.185.14:2809
omniORB: throw giopStream::CommFailure from
giopStream.cc:1077(1,NO,TRANSIENT_ConnectFailed)
omniORB: Invoke '_is_a' on remote:
key<.PMC.........CONTEXT.POAMaster......2>
omniORB: Send codeset service context: (ISO-8859-1,UTF-16)
omniORB: Client attempt to connect to giop:tcp:164.23.185.14:2809
omniORB: Scan for idle connections (1160024054,484000000)
omniORB: Scavenger reduce idle count for strand 00328D20 to 22
omniORB: Scan for idle connections done (1160024054,484000000).
omniORB: Switch rope to use address giop:tcp:164.23.185.14:2809
omniORB: throw giopStream::CommFailure from
giopStream.cc:1077(1,NO,TRANSIENT_ConnectFailed)
omniORB: Invoke '_is_a' on remote:
key<.PMC.........CONTEXT.POAMaster......2>
omniORB: Send codeset service context: (ISO-8859-1,UTF-16)
omniORB: Client attempt to connect to giop:tcp:164.23.185.14:2809
omniORB: Switch rope to use address giop:tcp:164.23.185.14:2809
omniORB: throw giopStream::CommFailure from
giopStream.cc:1077(1,NO,TRANSIENT_ConnectFailed)
omniORB: Invoke '_is_a' on remote:
key<.PMC.........CONTEXT.POAMaster......2>
omniORB: Send codeset service context: (ISO-8859-1,UTF-16)
omniORB: Client attempt to connect to giop:tcp:164.23.185.14:2809
Duncan Grisby
2006-10-09 23:35:49 UTC
Permalink
On Thursday 5 October, "***@t-online.de" wrote:

[...]
Post by K.D.Welast at t-online.de ()
I have done the test with 4.1.0 RC 1 and the problem is still there.
The version 4.1.0 RC 1 binaries are building with VC 7 SP1 on WinXP SP2
Below the trace with -ORBtraceLevel 40 -ORBtraceInvocations 1 for the
versions 4.10 RC1 and 4.07
OK, now I've looked at it closer, it's not the issue I thought it was at
all. The problem is actually that Visibroker is returning a strange IOR
in the location forward. Extracting it from the trace, and dumping it
with catior, it looks like this:

Type ID: "IDL:omg.org/CosNaming/NamingContextExt:1.0"
Profiles:
1. IIOP 1.2 164.23.185.14 2809 ".PMC......../CONTEXT_POAMaster. ....2"
unknown tag(0x56495303) 0x00070801ff
TAG_ORB_TYPE 0x56495300
TAG_CODE_SETS char native code set: ISO-8859-1
char conversion code set: UTF-8
wchar native code set: UTF-16
wchar conversion code set:


2. IIOP 1.2 164.23.131.250 2809 ".PMC......../CONTEXT_POAMaster. ....2"
unknown tag(0x56495303) 0x00070801ff
TAG_ORB_TYPE 0x56495300
TAG_CODE_SETS char native code set: ISO-8859-1
char conversion code set: UTF-8
wchar native code set: UTF-16
wchar conversion code set:


So you can see it has two IIOP profiles. The proper way to represent
multiple IP addressees is with a TAG_ALTERNATE_IIOP_ADDRESS.
Constructing an IOR with omniNames, it looks like this:

Type ID: "IDL:omg.org/CosNaming/NamingContextExt:1.0"
Profiles:
1. IIOP 1.2 164.23.185.14 2809 "NameService"
TAG_ORB_TYPE omniORB
TAG_CODE_SETS char native code set: ISO-8859-1
char conversion code set: UTF-8
wchar native code set: UTF-16
wchar conversion code set: UTF-16

TAG_ALTERNATE_IIOP_ADDRESS 164.23.131.250 2809

You see it has just one IIOP profile, with two addresses in it. With an
IOR like that, omniORB does the right thing.

Clearly Visibroker is using both IIOP profiles. I think that's wrong
according to the CORBA 2.6 spec. In section 13.6.3 is says:

Object references have at least one tagged profile. Each profile
supports one or more protocols and encapsulates all the basic
information the protocols it supports need to identify an object. Any
single profile holds enough information to drive a complete invocation
using any of the protocols it supports; the content and structure of
those profile entries are wholly specified by these protocols.

Then in section 13.6.7, it says:

The following rules augment the preceding discussion:

1. Profiles must be independent, complete, and self-contained. Their
use shall not depend on information contained in another profile.

2. Any invocation uses information from exactly one profile.

...

So based on point 2, I think omniORB is right to only use the details in
the first IIOP profile, and ignore the second one. It wouldn't be hard
to extend omniORB to use all the IIOP profiles when picking the
endpoints to try, but I think the spec says it's wrong to do that.

Cheers,

Duncan.
--
-- Duncan Grisby --
-- ***@grisby.org --
-- http://www.grisby.org --
Klaus Dieter Welast
2006-10-11 05:21:38 UTC
Permalink
Post by Duncan Grisby
[...]
Post by K.D.Welast at t-online.de ()
I have done the test with 4.1.0 RC 1 and the problem is still there.
The version 4.1.0 RC 1 binaries are building with VC 7 SP1 on WinXP SP2
Below the trace with -ORBtraceLevel 40 -ORBtraceInvocations 1 for the
versions 4.10 RC1 and 4.07
OK, now I've looked at it closer, it's not the issue I thought it was at
all. The problem is actually that Visibroker is returning a strange IOR
in the location forward. Extracting it from the trace, and dumping it
[.....]
1. Profiles must be independent, complete, and self-contained. Their
use shall not depend on information contained in another profile.
2. Any invocation uses information from exactly one profile.
...
So based on point 2, I think omniORB is right to only use the details in
the first IIOP profile, and ignore the second one. It wouldn't be hard
to extend omniORB to use all the IIOP profiles when picking the
endpoints to try, but I think the spec says it's wrong to do that.
Cheers,
Duncan.
--
-- Duncan Grisby --
-- http://www.grisby.org --
Hallo Duncan,

thank you for your investigation and explanation.
I will try to get some answers from Borland.

Best regards
Mit freundlichen Gr??en
Kl. D. Welast

Hellersberstr. 35A
41460 Neuss
Tel: +49 2131 166657
Mobil: +49 171 5638203
Email: ***@t-online.de
Klaus Dieter Welast
2007-01-17 01:15:21 UTC
Permalink
Hello Duncan,

please, let me reopen the discussion about our problem by connecting the Visibroker naming service in master/slave configuration.

In the meantime I get an answer from Borland, you can see it below.

On the other hand, I do same additional tests.
Scenario: Master naming service is down, the slave naming server send his ?LOCATION_FORWARD? reply to the master. Timeout period set the omniORB naming service client to 5 Secound .
The omniORB naming service client stops trying to connect the master server after that time period.
The trace below shows, that omniORB try to go back to the slave server, but stops trying this with ?TRANSIENT_CallTimedout?. I think, omniORB should start this with a new full timeout period.

Best regards
Kl. D. Welast
------------------------------------------------------------------
Answer from Borland:

I agree with you TAG_ALTERNATE_IIOP_ADRESS tag can be included in the IIOP profile for the clustered naming service. However, it is an optional tag and may not be implemented by all the compliant ORB vendors. As per design, Borland Visibroker 7.0 uses 1 or more IIOP profiles to represent the clustered naming service. I would like to highlight to you various sections of the specification.

1. Refer to 15.7.3 IIOP IOR Profile Components on page 551.

It states a list of mandatory and optional tags. TAG_ALTERNATE_IIOP_ADDRESS is listed as an optional tag for IIOP 1.2 conformance.


2. Refer to 13.6.7 Profile and Component Composition in IORs on page 454.

It states the following

a. Profiles must be independent, complete, and self-contained. Their use shall not depend on information contained in another profile.
b. Any invocation uses information from exactly one profile.
c. Unless otherwise specified in the definition of a particular profile, multiple profiles with the same profile tag may be included in an IOR.

Visibroker 7 ORB provides 2 independent IIOP profiles. Each IIOP profile is complete, independent and self-contained. When the naming service fails over, the client will uses the slave IIOP profile.


3. Refer to 13.6.3 IOR Profiles on page 448

It states the following:

Object References have at least one tag profile. Each profile support one or more protocols and encapsulates all information the protocols it supports need to identify the object.

Therefore, Borland Visibroker 7 is compliant on this clause.

The specification also states the following:

Interoperability issues can arise when an ORB sends an IOR with multiple profiles to the receiving ORB, and the receiving ORB returns a derived reference to the object, which has profiles or profile component data removed or transformed from the original IOR contents.

Full IOR conformance requires that an orb which receives an IOR for an object passed to it through the GIOP shall recover the original IOR, in its entirety, for passing as a reference to that object from that orb through the same protocol

Limited Profile IOR conformance requires that an orb which receives an IOR passed to it through the GIOP, shall recover all of the standard information contained in the IOR profile for that protocol, whenever passing a reference to that object, using the same protocol, to anther orb.

Conformance to IIOP versions 1.0, 1.1, 1.2 only requires support of limited Profile IOR. Due to interoperability issues, limited profile IOR is deprecated by the CORBA 2.4 specification.

If OmniORB is certified at both CORBA 2.4 above, OmniORB client should use the Full IOR conformance and not remove the slave IIOP profile from the Visibroker clustered naming service.



References:

OmniORB Home Page: http://omniorb.sourceforge.net/

CORBA 2.6 specification: http://www.omg.org/cgi-bin/doc?formal/01-12-01
------------------------------------------------------
omniORB-Trace:
D:\Dev_Projekte\VC70\EchoCltNs\Debug>EchoCltNs.exe -ORBInitRef NameService=corbaname::164.23.185.14,:164.23.131.250 -ORBtraceLevel 40 -ORBclientCallTimeOutPeriod 5000
omniORB: Distribution date: Fri Jan 13 13:47:35 GMT 2006 dgrisby
omniORB: My addresses are:
omniORB: 164.23.185.14
omniORB: 127.0.0.1
omniORB: Maximum supported GIOP version is 1.2
omniORB: Native char code sets: ISO-8859-1 UTF-8.
omniORB: Transmission char code sets: ISO-8859-1(1.2) ISO-8859-1(1.1) ISO-8859-1(1.0) UTF-8(1.2) UTF-8(1.1).
omniORB: Native wide char code sets: UTF-16.
omniORB: Transmission wide char code sets: UTF-16(1.2).
omniORB: Initialising omniDynamic library.
omniORB: Current configuration is as follows:
omniORB: DefaultInitRef (file) =
omniORB: DefaultInitRef (args) =
omniORB: InitRef = NameService=corbaname::164.23.185.14,:164.23.131.250
omniORB: abortOnInternalError = 0
omniORB: abortOnNativeException = 0
omniORB: acceptBiDirectionalGIOP = 0
omniORB: acceptMisalignedTcIndirections = 0
omniORB: bootstrapAgentHostname =
omniORB: bootstrapAgentPort = 900
omniORB: clientCallTimeOutPeriod = 5000
omniORB: clientTransportRule = * unix,ssl,tcp
omniORB: configFile = [none]
omniORB: connectionWatchImmediate = 0
omniORB: connectionWatchPeriod = 50000
omniORB: diiThrowsSysExceptions = 0
omniORB: dumpConfiguration = 0
omniORB: endPoint = giop:tcp::
omniORB: endPointPublishAllIFs = 0
omniORB: giopMaxMsgSize = 2097152
omniORB: giopTargetAddressMode = KeyAddr
omniORB: id = omniORB4
omniORB: inConScanPeriod = 180
omniORB: lcdMode = 0
omniORB: maxGIOPConnectionPerServer = 5
omniORB: maxGIOPVersion = 1.2
omniORB: maxInterleavedCallsPerConnection = 5
omniORB: maxServerThreadPerConnection = 100
omniORB: maxServerThreadPoolSize = 100
omniORB: maxSocketRecv = 131072
omniORB: maxSocketSend = 131072
omniORB: nativeCharCodeSet = ISO-8859-1
omniORB: nativeWCharCodeSet = UTF-16
omniORB: objectTableSize = 0
omniORB: offerBiDirectionalGIOP = 0
omniORB: omniORB_27_CompatibleAnyExtraction = 0
omniORB: oneCallPerConnection = 1
omniORB: outConScanPeriod = 120
omniORB: poaHoldRequestTimeout = 0
omniORB: poaUniquePersistentSystemIds = 1
omniORB: principal = [Null]
omniORB: scanGranularity = 5
omniORB: serverCallTimeOutPeriod = 0
omniORB: serverTransportRule = * unix,ssl,tcp
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 = 1
omniORB: traceFile = [stderr]
omniORB: traceInvocations = 1
omniORB: traceLevel = 40
omniORB: traceThreadId = 0
omniORB: unixTransportDirectory = /tmp/omni-%u
omniORB: unixTransportPermission = 777
omniORB: useTypeCodeIndirections = 1
omniORB: verifyObjectExistsAndType = 1
omniORB: Creating ref to remote: key<NameService>
target id : IDL:omg.org/CORBA/Object:1.0
most derived id:
omniORB: Initial reference `NameService' resolved from -ORBInitRef argument / ORB registration.
omniORB: Invoke '_is_a' on remote: key<NameService>
omniORB: AsyncInvoker: thread id = 1 has started. Total threads = 1
omniORB: Scavenger task execute.
omniORB: Client attempt to connect to giop:tcp:164.23.185.14:2809
omniORB: Switch rope to use address giop:tcp:164.23.131.250:2809
omniORB: throw giopStream::CommFailure from giopStream.cc:1077(1,NO,TRANSIENT_ConnectFailed)
omniORB: Invoke '_is_a' on remote: key<NameService>
omniORB: Client attempt to connect to giop:tcp:164.23.131.250:2809
omniORB: Client opened connection to giop:tcp:164.23.131.250:2809
omniORB: sendChunk: to giop:tcp:164.23.131.250:2809 100 bytes
omniORB:
4749 4f50 0100 0100 5800 0000 0000 0000 GIOP....X.......
0200 0000 01cd cdcd 0b00 0000 4e61 6d65 ............Name
5365 7276 6963 65cd 0600 0000 5f69 735f Service....._is_
6100 cdcd 0000 0000 2800 0000 4944 4c3a a.......(...IDL:
6f6d 672e 6f72 672f 436f 734e 616d 696e omg.org/CosNamin
672f 4e61 6d69 6e67 436f 6e74 6578 743a g/NamingContext:
312e 3000 1.0.
omniORB: inputMessage: from giop:tcp:164.23.131.250:2809 368 bytes
omniORB:
4749 4f50 0100 0101 6401 0000 0000 0000 GIOP....d.......
0200 0000 0300 0000 2b00 0000 4944 4c3a ........+...IDL:
6f6d 672e 6f72 672f 436f 734e 616d 696e omg.org/CosNamin
672f 4e61 6d69 6e67 436f 6e74 6578 7445 g/NamingContextE
7874 3a31 2e30 0000 0200 0000 0000 0000 xt:1.0..........
8800 0000 0001 0200 0000 000e 3136 342e ............164.
3233 2e31 3835 2e31 3400 0af9 0000 0025 23.185.14......%
0050 4d43 0000 0004 0000 0013 2f43 4f4e .PMC......../CON
5445 5854 5f50 4f41 4d61 7374 6572 0020 TEXT_POAMaster.
0000 0001 3200 0000 0000 0003 5649 5303 ....2.......VIS.
0000 0005 0007 0801 ff00 0000 0000 0000 ................
0000 0008 0000 0000 5649 5300 0000 0001 ........VIS.....
0000 0018 0000 0000 0001 0001 0000 0001 ................
0501 0001 0001 0109 0000 0000 0000 0000 ................
8c00 0000 0001 0200 0000 000f 3136 342e ............164.
3233 2e31 3331 2e32 3530 0000 0af9 0000 23.131.250......
0000 0025 0050 4d43 0000 0004 0000 0013 ...%.PMC........
2f43 4f4e 5445 5854 5f50 4f41 4d61 7374 /CONTEXT_POAMast
6572 0020 0000 0001 3200 0000 0000 0003 er. ....2.......
5649 5303 0000 0005 0007 0801 ff00 0000 VIS.............
0000 0000 0000 0008 0000 0000 5649 5300 ............VIS.
0000 0001 0000 0018 0000 0000 0001 0001 ................
0000 0001 0501 0001 0001 0109 0000 0000 ................
omniORB: Creating ref to remote: key<.PMC.........CONTEXT.POAMaster......2>
target id : IDL:omg.org/CORBA/Object:1.0
most derived id: IDL:omg.org/CosNaming/NamingContextExt:1.0
omniORB: GIOP::LOCATION_FORWARD -- retry request.
omniORB: omniRemoteIdentity deleted.
omniORB: ObjRef(IDL:omg.org/CosNaming/NamingContextExt:1.0) -- deleted.
omniORB: Invoke '_is_a' on remote: key<.PMC.........CONTEXT.POAMaster......2>
omniORB: Send codeset service context: (ISO-8859-1,UTF-16)
omniORB: Client attempt to connect to giop:tcp:164.23.185.14:2809
omniORB: throw giopStream::CommFailure from giopStream.cc:1077(1,NO,TRANSIENT_ConnectFailed)
omniORB: Invoke '_is_a' on remote: key<.PMC.........CONTEXT.POAMaster......2>
omniORB: Send codeset service context: (ISO-8859-1,UTF-16)
omniORB: Client attempt to connect to giop:tcp:164.23.185.14:2809
omniORB: Switch rope to use address giop:tcp:164.23.185.14:2809
omniORB: throw giopStream::CommFailure from giopStream.cc:1077(1,NO,TRANSIENT_ConnectFailed)
omniORB: Invoke '_is_a' on remote: key<.PMC.........CONTEXT.POAMaster......2>
omniORB: Send codeset service context: (ISO-8859-1,UTF-16)
omniORB: Client attempt to connect to giop:tcp:164.23.185.14:2809
omniORB: Switch rope to use address giop:tcp:164.23.185.14:2809
omniORB: throw giopStream::CommFailure from giopStream.cc:1077(1,NO,TRANSIENT_ConnectFailed)
omniORB: Invoke '_is_a' on remote: key<.PMC.........CONTEXT.POAMaster......2>
omniORB: Send codeset service context: (ISO-8859-1,UTF-16)
omniORB: Client attempt to connect to giop:tcp:164.23.185.14:2809
omniORB: Switch rope to use address giop:tcp:164.23.185.14:2809
omniORB: throw giopStream::CommFailure from giopStream.cc:1077(1,NO,TRANSIENT_ConnectFailed)
omniORB: Invoke '_is_a' on remote: key<.PMC.........CONTEXT.POAMaster......2>
omniORB: Send codeset service context: (ISO-8859-1,UTF-16)
omniORB: Client attempt to connect to giop:tcp:164.23.185.14:2809
omniORB: Client opened connection to giop:tcp:164.23.185.14:2809
omniORB: sendChunk: to giop:tcp:164.23.185.14:2809 148 bytes
omniORB:
4749 4f50 0102 0100 8800 0000 0200 0000 GIOP............
0300 0000 0000 cdcd 2500 0000 0050 4d43 ........%....PMC
0000 0004 0000 0013 2f43 4f4e 5445 5854 ......../CONTEXT
5f50 4f41 4d61 7374 6572 0020 0000 0001 _POAMaster. ....
32cd cdcd 0600 0000 5f69 735f 6100 cdcd 2......._is_a...
0100 0000 0100 0000 0c00 0000 0100 0000 ................
0100 0100 0901 0100 2800 0000 4944 4c3a ........(...IDL:
6f6d 672e 6f72 672f 436f 734e 616d 696e omg.org/CosNamin
672f 4e61 6d69 6e67 436f 6e74 6578 743a g/NamingContext:
312e 3000 1.0.
omniORB: Switch rope to use address giop:tcp:164.23.185.14:2809
omniORB: throw giopStream::CommFailure from giopStream.cc:1110(0,NO,TRANSIENT_CallTimedout)
omniORB: Client connection refcount = 0
omniORB: Client close connection to giop:tcp:164.23.185.14:2809
omniORB: Reverting object reference to original profile
omniORB: omniRemoteIdentity deleted.
omniORB: Invocation on a location forwarded object has failed. 0 retries.
omniORB: Scan for idle connections (1163759291,910000000)
omniORB: Scavenger reduce idle count for strand 006C3490 to 23
omniORB: Scan for idle connections done (1163759291,910000000).
omniORB: Invoke '_is_a' on remote: key<NameService>
omniORB: sendChunk: to giop:tcp:164.23.131.250:2809 100 bytes
omniORB:
4749 4f50 0100 0100 5800 0000 0000 0000 GIOP....X.......
0400 0000 01cd cdcd 0b00 0000 4e61 6d65 ............Name
5365 7276 6963 65cd 0600 0000 5f69 735f Service....._is_
6100 cdcd 0000 0000 2800 0000 4944 4c3a a.......(...IDL:
6f6d 672e 6f72 672f 436f 734e 616d 696e omg.org/CosNamin
672f 4e61 6d69 6e67 436f 6e74 6578 743a g/NamingContext:
312e 3000 1.0.
omniORB: throw giopStream::CommFailure from giopStream.cc:1110(0,NO,TRANSIENT_CallTimedout)
omniORB: Client connection refcount = 0
omniORB: Client close connection to giop:tcp:164.23.131.250:2809
omniORB: throw TRANSIENT from omniObjRef.cc:759 (NO,TRANSIENT_CallTimedout)
Caught CORBA::SystemException.
omniORB: omniRemoteIdentity deleted.
omniORB: ObjRef() -- deleted.
omniORB: ORB not destroyed; no final clean-up.
Post by Duncan Grisby
[...]
Post by K.D.Welast at t-online.de ()
I have done the test with 4.1.0 RC 1 and the problem is still there.
The version 4.1.0 RC 1 binaries are building with VC 7 SP1 on WinXP SP2
Below the trace with -ORBtraceLevel 40 -ORBtraceInvocations 1 for the
versions 4.10 RC1 and 4.07
OK, now I've looked at it closer, it's not the issue I thought it was at
all. The problem is actually that Visibroker is returning a strange IOR
in the location forward. Extracting it from the trace, and dumping it
Type ID: "IDL:omg.org/CosNaming/NamingContextExt:1.0"
1. IIOP 1.2 164.23.185.14 2809 ".PMC......../CONTEXT_POAMaster. ....2"
unknown tag(0x56495303) 0x00070801ff
TAG_ORB_TYPE 0x56495300
TAG_CODE_SETS char native code set: ISO-8859-1
char conversion code set: UTF-8
wchar native code set: UTF-16
2. IIOP 1.2 164.23.131.250 2809 ".PMC......../CONTEXT_POAMaster. ....2"
unknown tag(0x56495303) 0x00070801ff
TAG_ORB_TYPE 0x56495300
TAG_CODE_SETS char native code set: ISO-8859-1
char conversion code set: UTF-8
wchar native code set: UTF-16
So you can see it has two IIOP profiles. The proper way to represent
multiple IP addressees is with a TAG_ALTERNATE_IIOP_ADDRESS.
Type ID: "IDL:omg.org/CosNaming/NamingContextExt:1.0"
1. IIOP 1.2 164.23.185.14 2809 "NameService"
TAG_ORB_TYPE omniORB
TAG_CODE_SETS char native code set: ISO-8859-1
char conversion code set: UTF-8
wchar native code set: UTF-16
wchar conversion code set: UTF-16
TAG_ALTERNATE_IIOP_ADDRESS 164.23.131.250 2809
You see it has just one IIOP profile, with two addresses in it. With an
IOR like that, omniORB does the right thing.
Clearly Visibroker is using both IIOP profiles. I think that's wrong
Object references have at least one tagged profile. Each profile
supports one or more protocols and encapsulates all the basic
information the protocols it supports need to identify an object. Any
single profile holds enough information to drive a complete invocation
using any of the protocols it supports; the content and structure of
those profile entries are wholly specified by these protocols.
1. Profiles must be independent, complete, and self-contained. Their
use shall not depend on information contained in another profile.
2. Any invocation uses information from exactly one profile.
...
So based on point 2, I think omniORB is right to only use the details in
the first IIOP profile, and ignore the second one. It wouldn't be hard
to extend omniORB to use all the IIOP profiles when picking the
endpoints to try, but I think the spec says it's wrong to do that.
Cheers,
Duncan.
--
-- Duncan Grisby --
-- http://www.grisby.org --
--
Mit freundlichen Gr??en
Kl. D. Welast

Hellersberstr. 35A
41460 Neuss
Tel: +49 2131 166657
Mobil: +49 171 5638203
Email: ***@t-online.de
Duncan Grisby
2007-01-19 16:35:37 UTC
Permalink
Post by Klaus Dieter Welast
On the other hand, I do same additional tests.
Scenario: Master naming service is down, the slave naming server send
his ?LOCATION_FORWARD? reply to the master. Timeout period set
the omniORB naming service client to 5 Secound . The omniORB naming
service client stops trying to connect the master server after that
time period. The trace below shows, that omniORB try to go back to
the slave server, but stops trying this with
?TRANSIENT_CallTimedout?. I think, omniORB should start this
with a new full timeout period.
The looping that's happening in the trace is a result of a bug that has
been fixed. Update to omniORB 4.1.0 or the latest snapshot of 4.0.x to
avoid that issue. The problem there is that the failed call on the
forwarded object reference does not correctly fall back to using the
original reference.

However, even with the fix, I think you'll see the invocations bounce
between the master and location forwarded slave because of Visibroker's
object references.

[...]
[...]
Post by Klaus Dieter Welast
2. Refer to 13.6.7 Profile and Component Composition in IORs on page 454.
It states the following
a. Profiles must be independent, complete, and self-contained. Their
use shall not depend on information contained in another profile.
b. Any invocation uses information from exactly one profile.
c. Unless otherwise specified in the definition of a particular
profile, multiple profiles with the same profile tag may be included
in an IOR.
Visibroker 7 ORB provides 2 independent IIOP profiles. Each IIOP
profile is complete, independent and self-contained. When the naming
service fails over, the client will uses the slave IIOP profile.
I still maintain that omniORB's behaviour is correct. As point b above
says, "any invocation uses information from exactly one profile". You
are doing one invocation. omniORB is using one profile. I think omniORB
is correct to ignore the second profile when it is doing an invocation.
Post by Klaus Dieter Welast
3. Refer to 13.6.3 IOR Profiles on page 448
Object References have at least one tag profile. Each profile support
one or more protocols and encapsulates all information the protocols
it supports need to identify the object.
Therefore, Borland Visibroker 7 is compliant on this clause.
Indeed.
Post by Klaus Dieter Welast
Interoperability issues can arise when an ORB sends an IOR with
multiple profiles to the receiving ORB, and the receiving ORB returns
a derived reference to the object, which has profiles or profile
component data removed or transformed from the original IOR contents.
Full IOR conformance requires that an orb which receives an IOR for an
object passed to it through the GIOP shall recover the original IOR,
in its entirety, for passing as a reference to that object from that
orb through the same protocol
When omniORB passes object references along, it _does_ maintain all the
profiles, so it _does_ have full IOR conformance. Full IOR conformance
does not say that an ORB must _use_ all the profiles, merely that it
should maintain them and pass them along. Indeed, the point b in section
13.6.7 specifically says an ORB should _not_ use all profiles, but
"exactly one".

[...]
Post by Klaus Dieter Welast
If OmniORB is certified at both CORBA 2.4 above, OmniORB client should
use the Full IOR conformance and not remove the slave IIOP profile
from the Visibroker clustered naming service.
omniORB does not remove the second IIOP profile. It leaves it there,
perfectly safe, and passes it on when the object reference is
transmitted.

Cheers,

Duncan.
--
-- Duncan Grisby --
-- ***@grisby.org --
-- http://www.grisby.org --
K.D.Welast at t-online.de ()
2007-01-22 14:14:13 UTC
Permalink
An HTML attachment was scrubbed...
URL: http://www.omniorb-support.com/pipermail/omniorb-list/attachments/20070122/0548d4f6/attachment.htm
Continue reading on narkive:
Loading...