Browse Prior Art Database

An Algorithm for Container Level Deadlock Detection

IP.com Disclosure Number: IPCOM000178883D
Original Publication Date: 2009-Jan-28
Included in the Prior Art Database: 2009-Jan-28
Document File: 1 page(s) / 29K

Publishing Venue

IBM

Abstract

A container level deadlock detection mechanism is disclosed that is not time-based.

This text was extracted from a PDF file.
At least one non-text object (such as an image or picture) has been suppressed.
This is the abbreviated version, containing approximately 70% of the total text.

Page 1 of 1

An Algorithm for Container Level Deadlock Detection

In a distributed environment, a client that wishes to communicate with a service provider asynchronously can employ some well known message exchange patterns. These patterns include, but not limited to, fire-and-forget, request-with-callback, and deferred response (also known as message polling). In this pattern, the caller sends a message to the service provider, and polls for a response message at a later point in time.

Often times, application programmers who use the polling mechanism to retrieve response messages may overlook the transactional implication of such an operation. If the operation to put the initial request to an outbound queue was done in a global transaction, and if the get() operation to retrieve a response message are done in the same thread within the same transaction context, then deadlock occurs.

In the code sample above, the thread will be blocked at the receive() call forever because the original request cannot be committed to the queue until TX1 commits.

Note that the deadlock scenario described in this disclosure can not easily be detected by static analysis because the root cause of this is a combination of user code and transaction annotation scope. One may not have the opportunity to analyze user code at the time of assembly, when typically transaction QoSs are t...