jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dominique Pfister (JIRA)" <j...@apache.org>
Subject [jira] Commented: (JCR-769) Unable to login with two different Credentials to same workspace in one Transaction
Date Tue, 13 Mar 2007 15:36:09 GMT

    [ https://issues.apache.org/jira/browse/JCR-769?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12480436
] 

Dominique Pfister commented on JCR-769:
---------------------------------------

Thank you for the trace information, which really makes it easy to follow what happens.

As I stated in my last post, I still consider the information your access manager has at hand
- or rather: the lack of - to be the real problem in your situation. Your access manager shouldn't
resort to logging in via JCA connection factory and thereby starting another transaction,
but should rather be somehow given access to the repository itself, or better still, a system
session to get ACL information.

Honestly, I think that simply ignoring the branch id when identifying transactions will most
definitely lead to problems in other situations and/or with other application servers. According
to the DTP XA specification [1], section 7.2, Resource Manager Requirements:

  An RM can use the bqual component of the XID structure to let different branches of the
same global transaction prepare to commit at 
  different times, and to avoid deadlock (see Section 4.2 on page 19).

In other words, Jackrabbit might detect this situation and rearrange the order of operations,
but there still remains the non-trivial task of identifying potential conflicts.

[1] Distributed Transaction Processing: The XA specification (http://www.opengroup.org/onlinepubs/009680699/)

> Unable to login with two different Credentials to same workspace in one Transaction
> -----------------------------------------------------------------------------------
>
>                 Key: JCR-769
>                 URL: https://issues.apache.org/jira/browse/JCR-769
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: jca
>    Affects Versions: 1.2.1
>         Environment: Websphere 5.1.1 J2C Adapter
>            Reporter: Claus Köll
>         Attachments: patch.txt, stacktrace.txt
>
>
> I'm using the Jackrabbit 1.2.1 JCA adapter and trying to access in a SessionBean-Method
with Container Transaction a Workspace with 2 different Credentials. 
> The Method takes about 400ms to finish but no commit on TransactionContextr occurs (Debugging
..) only the prepare was called 2 times .
> The Container hangs on the PostInvoke Method about 5 seconds and then i get a "javax.transaction.xa.XAException"

> with the Warn Message: Transaction rolled back because timeout expired
> The code ..
> Context ctx = new InitialContext(); 
> Repository repository = (Repository) ctx.lookup("java:comp/env/jackrabbit"); 
> Credentials credentials = new SimpleCredentials("user1", "password1".toCharArray());

> Credentials credentials2 = new SimpleCredentials("user2", "password2".toCharArray());

> Session session1 = repository.login(credentials, "default"); 
> Session session2 = repository.login(credentials2, "default"); 
> Session1 adds a node to the workspace .. and with the session2 i do nothing except the
login !
> If i make no second login the Method works fine.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message