Return-Path: X-Original-To: apmail-jackrabbit-dev-archive@www.apache.org Delivered-To: apmail-jackrabbit-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id C3C92DAFF for ; Wed, 12 Sep 2012 12:21:13 +0000 (UTC) Received: (qmail 52517 invoked by uid 500); 12 Sep 2012 12:21:13 -0000 Delivered-To: apmail-jackrabbit-dev-archive@jackrabbit.apache.org Received: (qmail 51964 invoked by uid 500); 12 Sep 2012 12:21:09 -0000 Mailing-List: contact dev-help@jackrabbit.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@jackrabbit.apache.org Delivered-To: mailing list dev@jackrabbit.apache.org Received: (qmail 51538 invoked by uid 99); 12 Sep 2012 12:21:07 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 12 Sep 2012 12:21:07 +0000 Date: Wed, 12 Sep 2012 23:21:07 +1100 (NCT) From: "Martin Centner (JIRA)" To: dev@jackrabbit.apache.org Message-ID: <658112256.69057.1347452467878.JavaMail.jiratomcat@arcas> Subject: [jira] [Created] (JCR-3425) XAAwareRWLock implementation fails with IllegalStateException on JBoss AS7 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 Martin Centner created JCR-3425: ----------------------------------- Summary: XAAwareRWLock implementation fails with IllegalStateException on JBoss AS7 Key: JCR-3425 URL: https://issues.apache.org/jira/browse/JCR-3425 Project: Jackrabbit Content Repository Issue Type: Bug Components: jackrabbit-jca Affects Versions: 2.4.3 Environment: JBoss AS7 7.1.1.Final Reporter: Martin Centner The class XAAwareRWLock uses a HashMap readers_. The static function TransactionContext.getCurrentThreadId() is used to obtain an object currentId used as key in for the HashMap. When running under a transaction the currentId is set to Xid.getGlobalTransactionId which returns a byte[]. However, the class org.jboss.jca.core.spi.transaction.xa.XidWrapper.getGlobalTransactionId() returns globalTransactionId.clone() - it returns a new instance of byte[] on every invocation and the hashCode of the byte[] changes. Therefore, readers_.get(currentId) returns null for the second invocation in the same transaction and the result ist an IllegalStateTransaction: java.lang.IllegalStateException at org.apache.jackrabbit.core.version.VersioningLock$XAAwareRWLock.endRead(VersioningLock.java:167) [jackrabbit-core-2.4.3.jar:2.4.3] ... I suggest using a wrapper for the globalTransactionId byte[] that computes the hashCode on the contents of the byte instead of the object identity. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira