Opened 15 years ago

Closed 15 years ago

#216 closed defect (fixed)

Stubs built by the client from an URL interfere with transparent distributed threads

Reported by: hauma Owned by: hauma
Priority: normal Milestone: 2.0
Component: uka.karmi Version: 1.07a
Severity: minor Keywords:


The basic KaRMI test cases (e.g. TestReplace) hang when enabling DEBUG-CLEANUP. This is due to a problem with stubs built from an URL (which is done during locating the KaRMI registry) and the transparent distributed threads feature in KaRMI. For the initial contact, the client (which wants to get a remote reference to the registry) need to build a special stub object from an URL identifying the host where the registry runs. This special stub is not part of the distributed garbage collector and does not know, whether it points to a local or remote object. Therefore, method calls processed through this stub cannot use the local shortcut, but always make use of a network connection.

Especially when DEBUG-CLEANUP is enabled, this causes a deadlock for local calls (Registry.lookup() from the host where the registry is located), because the receiving server thread tries to dispatch the call back to the calling thread, but this thread does a blocking receive operation from the network connection trying to read the cleanup pattern (which is never sent).

Attachments (0)

Change History (1)

comment:1 Changed 15 years ago by hauma

  • Resolution set to fixed
  • Status changed from new to closed


Before contacting the registry, the stub created from an URL is converted into a regular stub through a KaRMI service call. Since service calls are not subject to thread dispatching according to the transparent distributed threads mechanism, the remotely called conversion method does not deadlock. Afterwards, the application call is processed through the regular stub returned from the service call.

Add Comment

Modify Ticket

Change Properties
Set your email in Preferences
as closed The owner will remain hauma.
The resolution will be deleted. Next status will be 'reopened'.

E-mail address and user name can be saved in the Preferences.

Note: See TracTickets for help on using tickets.