Skip to content

SEC-3157: deleteEntries in updateAcl causing deadlocks with concurrent updates #3367

Open
@spring-projects-issues

Description

@spring-projects-issues

Eric Henry (Migrated from SEC-3157) said:

When running project integration tests concurrently, I'm seeing a lot of DeadlockLoserDataAccessExceptions. After a good amount of research I came across this StackOverflow answer.

Using the JdbcMutableAclService.createAcl(ObjectIdentity) method is the only way to create and ACL, but it doesn't create ACEs at the same time. In order to persist the ACEs you have to call JdbcMutableAclService.updateAcl(MutableAcl). One of the first things the updateAcl method does is delete entries. Since there are no ACEs yet we end up in the situation described by the StackOverflow answer listed above. I have included some information from MySQL that I used to research the issue.

I created a pull request on GitHub, but I need to write a test that reproduces the issue (I have done this with in my project environment, just not for the Spring Security project)

Metadata

Metadata

Assignees

No one assigned

    Labels

    in: aclAn issue in spring-security-acltype: bugA general bugtype: jiraAn issue that was migrated from JIRA

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions