To comment on the following update, log in, then open the issue:
http://www.openoffice.org/issues/show_bug.cgi?id=112448
                 Issue #|112448
                 Summary|Additional DisposedExceptions after remote service fai
                        |ls
               Component|udk
                 Version|OOG680_m2
                Platform|HP
                     URL|
              OS/Version|Linux
                  Status|UNCONFIRMED
       Status whiteboard|
                Keywords|
              Resolution|
              Issue type|DEFECT
                Priority|P3
            Subcomponent|code
             Assigned to|kr
             Reported by|charliehalliday





------- Additional comments from [email protected] Wed Jun 16 
12:52:20 +0000 2010 -------
This issue happens when socket based service connects as a client to two or 
more socket based services.

If one of these dependent services fails during a remote call from the client
service, then all subsequent remote calls to other services from the client
service fail with DisposedException.

If the client service is run locally, the failing service connection reports 
the expected DisposedException but subsequent remote calls work normally.

I have created a simple test that demonstrates the issue using three services
and a client, using XMain::run for the remote calls. All catch exceptions from
UNO methods:

ServiceA XMain::run gets a Reference to remote ServiceB XMain and calls run(),
it then gets a Reference to remote ServiceC XMain and calls its run().
ServiceB XMain::run prints a message and commits suicide but raising SIGKILL.
ServiceC XMain::run prints a message and returns.
uno_client loads ServiceA and calls its XMain::run, it has an option
  to load the service locally or to get a remote reference.

To test, the three services are started with the uno executable listening
on three different ports.

If the uno_client is run using the remote ServiceA:
1. uno_client gets remote Reference to ServiceA XMain, and calls run
2. ServiceA XMain::run starts, gets a remote Reference to ServiceB XMain and
calls its run()
3. ServiceB XMain::run prints a message, raises SIGKILL and dies
4. ServiceA XMain::run catches a DisposedException with message "URP_Bridge :
disposed", as expected.
5. ServiceA XMain::run, gets a remote Reference to ServiceC XMain, ServiceC
accepts the connection but ServiceA immediately catches another 
DisposedException.

If ServiceA is loaded locally by the uno_client, then the connection to ServiceC
in step 5 is successful and the subsequent call to the ServiceC XMain::run runs
normally.

The difference between the cases seems to be that it fails when the client
side of the bridge is running in a thread spawned by a socket accept,
rather than in the main thread.

I have tried getting both remote References in ServiceA before calling
the ServiceB method.
1. ServiceA calls SerrviceB XMain::run which gives expected DisposedException.
2. ServiceA calls ServiceC XMain::run, which runs remotely
3. ServiceA XMain::run catches DisposedException (unexpected)
4. ServiceC XMain::run continues running in its process.
5. ServiceC fails when run() tries to return.

Environment:
Red Hat Enterprise Linux Client release 5.3 (Tikanga) 64 bit install,
 32 bit URE and test component build.

URE based on OOG680_m5 with patches for issues 90444, 92150, 107490.
built on 32 bit install of RHEL 5.3.

---------------------------------------------------------------------
Please do not reply to this automatically generated notification from
Issue Tracker. Please log onto the website and enter your comments.
http://qa.openoffice.org/issue_handling/project_issues.html#notification

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to