Return-Path: X-Original-To: apmail-qpid-commits-archive@www.apache.org Delivered-To: apmail-qpid-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 6005792F7 for ; Wed, 11 Apr 2012 09:01:17 +0000 (UTC) Received: (qmail 54184 invoked by uid 500); 11 Apr 2012 09:01:17 -0000 Delivered-To: apmail-qpid-commits-archive@qpid.apache.org Received: (qmail 54145 invoked by uid 500); 11 Apr 2012 09:01:16 -0000 Mailing-List: contact commits-help@qpid.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@qpid.apache.org Delivered-To: mailing list commits@qpid.apache.org Received: (qmail 54125 invoked by uid 99); 11 Apr 2012 09:01:16 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 11 Apr 2012 09:01:16 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 11 Apr 2012 09:01:14 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id B46A623888FE for ; Wed, 11 Apr 2012 09:00:54 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1324655 - in /qpid/branches/0.16/qpid/java: ./ client/src/main/java/org/apache/qpid/client/ systests/src/main/java/org/apache/qpid/test/unit/close/ Date: Wed, 11 Apr 2012 09:00:54 -0000 To: commits@qpid.apache.org From: robbie@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20120411090054.B46A623888FE@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: robbie Date: Wed Apr 11 09:00:54 2012 New Revision: 1324655 URL: http://svn.apache.org/viewvc?rev=1324655&view=rev Log: QPID-3911: Fix deadlock on concurrent invocation of MessageConsumer#close() and Session#rollback() from consumer MessageListener This patch contains the following changes: - Add synchronization on AMSession#_messageDeliveryLock into MessageConsumer#close() in order to block until message listener in progress has completed(as required in JMS javadoc for MessageConsumer#close()). - Change the session dispatcher to stop messages delivery into consumer local message queue if the consumer in the process of closing. This eliminates the need to stop the dispatcher on rejecting pending messages for closing consumer. - Remove the synchronization on the dispatcher lock from AMQSession.Dispatcher#rejectPending and code to stop the dispatcher, as we are synchronizing on the deliveryLock now and incoming messages are not dispatched into closing consumers anymore. - Add a system test to reproduce the deadlock and verify its resolution. Applied patch from Oleksandr Rudyy merged from trunk r1310275 Added: qpid/branches/0.16/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/close/MessageConsumerCloseTest.java - copied unchanged from r1310275, qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/close/MessageConsumerCloseTest.java Modified: qpid/branches/0.16/qpid/java/ (props changed) qpid/branches/0.16/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java qpid/branches/0.16/qpid/java/client/src/main/java/org/apache/qpid/client/BasicMessageConsumer.java Propchange: qpid/branches/0.16/qpid/java/ ------------------------------------------------------------------------------ Merged /qpid/trunk/qpid/java:r1310275 Modified: qpid/branches/0.16/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java URL: http://svn.apache.org/viewvc/qpid/branches/0.16/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java?rev=1324655&r1=1324654&r2=1324655&view=diff ============================================================================== --- qpid/branches/0.16/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java (original) +++ qpid/branches/0.16/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java Wed Apr 11 09:00:54 2012 @@ -3206,28 +3206,15 @@ public abstract class AMQSession