sentry-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mike Yoder (JIRA)" <>
Subject [jira] [Commented] (SENTRY-561) Re-Enable Orphan Cleanup Thread
Date Fri, 05 Dec 2014 22:47:12 GMT


Mike Yoder commented on SENTRY-561:

A run failed last night and I could at last put the pieces together.

Imagine the following scenario.
# main thread: Priv X is in role Y
# main thread: role Y is deleted
# main thread: create role Y (without adding priv X to it yet)
# cleaning thread kicks in; finds priv X
# cleaning thread opens transaction
# cleaning thread deletes priv X
# main thread: opens xact; "adds back" priv X to role Y, closes xact
# cleaning thread closes xact - priv X now goes away.

Step 6 is perfectly reasonable because priv X is not associated with a role

Step 7 has no effect, essentially, since in the world view of the main thread, priv X already
exists because the cleaning thread hasn't committed its transaction yet.

Then in step 8 the cleaning thread commits its transaction, and priv X goes away. Now role
Y does not have priv X... even though the main thread just added it.

Later, the test blows up because role Y does not have priv X.

> Re-Enable Orphan Cleanup Thread
> -------------------------------
>                 Key: SENTRY-561
>                 URL:
>             Project: Sentry
>          Issue Type: Bug
>    Affects Versions: 1.5.0
>            Reporter: Mike Yoder
>            Assignee: Mike Yoder
>         Attachments: SENTRY-561.0.patch, SENTRY-561.1.patch, SENTRY-561.1.patch
> SENTRY-140 created a thread to remove privileges that weren't referenced by any role.
 That hit problems in testing after submittal, and so was turned off in SENTRY-545.  This
issue will (hopefully) turn it back on, once I figure out what's going on.  I haven't reproduced
this locally, so I might be submitting a lot of patches so the test ring can reproduce...

This message was sent by Atlassian JIRA

View raw message