| > I'm getting CORBA_COMM_FAILURE on subsequent requests (after an initial
> successfull request and after the server has been stopped and
> restarted). Per the advice in note 1141 in PAMSRC::OBJECTBROKER, I've
> made sure I'm cleaning up the intermediate variables use along the
> way to getting a narrowed object reference of type 'xxx_var' (where
> 'xxx' is the name of my interface).
Once a server is stopped and restarted, the client has to detect this
condition -- generally a failure or timeout from the request, then
release the object, get a newly bound (bound to the new server location)
object reference, and then re-try the invoke. When a server restarts
it uses a new socket or channel. The old one is no longer valid.
you probably missed one of these steps.
|
| re: Note 2481.3 by LEMAN::DONALDSON
> Do you have an unshared server with no auto-start possibilities?
It's a persistent server.
> What do trace show you?
Here's a log of the client run. This log contains 2 requests, the first
was successfull, the 2nd request fails (after I stopped and restarted
the server):
OBB C++ Library Compile Date/Time: Dec 17 1996 19:35:22
OBB C++ Compile Command: Unknown
OBB C++ Compile Flags: Unknown
**** Skip Method Selection, OpInfo Created by STUB
**** Implementation Selection
**** Callout to method map resolve rtn.
*** Method map resolve rtn not present. Defaulting.
*** Load Network implementation MicrosoftTCP
FamilyName<5> <TCPIP>
ImagePath<24> <%OBB_ROOT\lib\trnwsk.dll>
LibraryName: D:\win32app\obroker\lib\trnwsk.dll
**** Server Instance Selection
Selection policy defaulting to advertisements, local_node,
default_nodes.
Context scope default to USER.
Get Server Selection Node List:
Possible server selection nodes: <2>
000. OBB_LOCAL = redvin
001. OBB_DEFAULT_NODES = OBB_LOCAL
Looking for running server:
Looking for servers on node redvin.
*** Load Agent implementation OrbV12
FamilyName<3> <OBB>
ImagePath<26> <%OBB_ROOT\lib\obbagncl.dll>
LibraryName: D:\win32app\obroker\lib\obbagncl.dll
*** Load Authentication implementation Trusted
FamilyName<3> <TRS>
ImagePath<26> <%OBB_ROOT\lib\obbsectr.dll>
LibraryName: D:\win32app\obroker\lib\obbsectr.dll
*** Request Sent: Synchronous Invoke.
*** Method: 65e448f20f7c.0c.7e.0b.00.00.00.00.00.
*** MethodServerClass: 65e448ecbd2c.0c.7e.0b.00.00.00.00.00
*** Marshalled Buffer: 552
*** Allocated Buffer : 1876
*** Transport Status: OBB_SUCCESS (s), Successful completion.
*** Operation Status: OBB_SUCCESS (s), Successful completion.
Server selected from Registry: 7d0e7a51a2af.02.10.7b.b0.40.00.00.00
(redvin).
*** Request Sent: Synchronous Invoke.
*** Method: 7368090a6e58.02.10.1f.a0.9b.00.00.00.
*** MethodServerClass: 508c0a7f9532.1d.40.33.45.06.70.2e.d9
*** Marshalled Buffer: 700
*** Allocated Buffer : 1901
*** Transport Status: OBB_SUCCESS (s), Successful completion.
*** Operation Status: OBB_SUCCESS (s), Successful completion.
**** Skip Method Selection, OpInfo Created by STUB
**** Implementation Selection
**** Callout to method map resolve rtn.
**** Server Instance Selection
Selection policy defaulting to advertisements, local_node,
default_nodes.
Context scope default to USER.
Get Server Selection Node List:
Possible server selection nodes: <2>
000. OBB_LOCAL = redvin
001. OBB_DEFAULT_NODES = OBB_LOCAL
Looking for running server:
Looking for servers on node redvin.
*** Request Sent: Synchronous Invoke.
*** Method: 65e448f20f7c.0c.7e.0b.00.00.00.00.00.
*** MethodServerClass: 65e448ecbd2c.0c.7e.0b.00.00.00.00.00
*** Marshalled Buffer: 552
*** Allocated Buffer : 1876
*** Transport Status: OBB_SUCCESS (s), Successful completion.
*** Operation Status: OBB_SUCCESS (s), Successful completion.
Server selected from Registry: 7d0dc917c848.02.10.7b.b0.40.00.00.00
(redvin).
*** Request Sent: Synchronous Invoke.
*** Method: 7a6782d88ad2.02.10.7b.b0.40.00.00.00.
*** MethodServerClass: 7a6782d88ad0.02.10.7b.b0.40.00.00.00
*** Marshalled Buffer: 1420
*** Allocated Buffer : 2668
*** Transport Status: OBB_SUCCESS (s), Successful completion.
*** Operation Status: OBB_INV_METHODFAIL (e), Method execution
failed.
**** Skip Method Selection, OpInfo Created by STUB
**** Implementation Selection
**** Callout to method map resolve rtn.
*** Method map resolve rtn not present. Defaulting.
**** Server Instance Selection
Selection policy defaulting to advertisements, local_node,
default_nodes.
Context scope default to USER.
Get Server Selection Node List:
Possible server selection nodes: <2>
000. OBB_LOCAL = redvin
001. OBB_DEFAULT_NODES = OBB_LOCAL
Looking for running server:
Looking for servers on node redvin.
*** Request Sent: Synchronous Invoke.
*** Method: 65e448f20f7c.0c.7e.0b.00.00.00.00.00.
*** MethodServerClass: 65e448ecbd2c.0c.7e.0b.00.00.00.00.00
*** Marshalled Buffer: 552
*** Allocated Buffer : 1876
*** Transport Status: OBB_SUCCESS (s), Successful completion.
*** Operation Status: OBB_SUCCESS (s), Successful completion.
Server selected from Registry: 7d0e7a51a2af.02.10.7b.b0.40.00.00.00
(redvin).
*** Request Sent: Synchronous Invoke.
*** Method: 7368090a6e58.02.10.1f.a0.9b.00.00.00.
*** MethodServerClass: 508c0a7f9532.1d.40.33.45.06.70.2e.d9
*** Marshalled Buffer: 700
*** Allocated Buffer : 1901
*** Transport Status: OBB_SUCCESS (s), Successful completion.
*** Operation Status: OBB_SUCCESS (s), Successful completion.
**** Skip Method Selection, OpInfo Created by STUB
**** Implementation Selection
**** Automatic Implementation and Server already Bound, Skipping
Implementation Selection
*** Request Sent: Synchronous Invoke.
*** Method: 7a6782d88ad2.02.10.7b.b0.40.00.00.00.
*** MethodServerClass: 7a6782d88ad0.02.10.7b.b0.40.00.00.00
*** Marshalled Buffer: 1420
*** Allocated Buffer : 2668
*** Transport Status: OBB_INV_TRANSERR (e), Transport error
`$TransportError$'.
*** Operation Status: OBB_INV_TRANSERR (e), Transport error
`$TransportError$'.
|
| The following makes me think that you are using an old connection to
the killed server, and not to the new server. Otherwise it should have
done the Implementation selction and would not have skipped it. If you
had gone thru a new binding, all of the same steps would have repeated
for the second call as were done in the first.
>
> **** Skip Method Selection, OpInfo Created by STUB
>
>
> **** Implementation Selection
>
>
> **** Automatic Implementation and Server already Bound, Skipping
> Implementation Selection
>
> *** Request Sent: Synchronous Invoke.
> *** Method: 7a6782d88ad2.02.10.7b.b0.40.00.00.00.
> *** MethodServerClass: 7a6782d88ad0.02.10.7b.b0.40.00.00.00
> *** Marshalled Buffer: 1420
> *** Allocated Buffer : 2668
> *** Transport Status: OBB_INV_TRANSERR (e), Transport error
> `$TransportError$'.
> *** Operation Status: OBB_INV_TRANSERR (e), Transport error
> `$TransportError$'.
|
| Ken, you say you are getting a new objref every time, but
what sequence do you use for this?
If you just use the naming service, or pick the objref from a file
then you will *not* get a "new" objref just like that. You
really will need to release in between. Otherwise the 'new'
(identical) objref will map directly onto the old one.
Complete with its already established bindings.
On the other hand if you are picking up a (really) different
second objref (perhaps created in a method with BOA::create)
then I you should get new binding and find the new server.
I note, by the way, in your trace, that the last request is
annotated "...already bound...". That's pretty suggestive.
John D.
|