DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUGĀ·
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=37857>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED ANDĀ·
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=37857

           Summary: AclMethod tries to access nodestore with an incomplete
                    slideToken
           Product: Slide
           Version: 2.1
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P3
         Component: WebDAV Server
        AssignedTo: [email protected]
        ReportedBy: [EMAIL PROTECTED]


I'm using Sybase 15.0 for my node store, and I found that it deadlocks when I
try to create a user account and then give that user account permissions in one
external (JBoss JCA) transaction. I tracked the bug down to AclMethod.java:234.

First, AclMethod.parseRequest is called. At this point, the slideToken does not
yet know about any external transactions which may be running. (That happens
later, in AbstractWebdavMethod.run.) The parseRequest method calls
createNodePermissionList, which then calls createActionUri, which calls
structure.retrieve. This last call then takes the incomplete slideToken object,
and tries to retrieve something from the node store database. Since it cannot
join the existing transaction, it tries to request an exclusive row-level lock,
which Sybase is already holding, and blocks forever.

I can switch isolation level down to REPEATABLE_READ in Domain.xml, which does
solve the problem, but that sounds wrong. It seems to me that a WebDAV method
which ignores the fact that it's running inside a transaction is doing the wrong
thing. MySQL does not deadlock here, so it's probably doing a dirty read in
spite of the SERIALIZABLE isolation level setting.

What exactly is the right thing to do? I'll be happy to implement a fix if
anyone can suggest a good approach. A nasty approach would be to grab the
transaction information from the header and apply changes to the slideToken
before the structure.retrieve call, but that would amount to copying code from
AbstractWebdavMethod.run.

-- 
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to