{"action":"created","issue":{"url":"https://api.github.com/repos/palantir/atlasdb/issues/1011","repository_url":"https://api.github.com/repos/palantir/atlasdb","labels_url":"https://api.github.com/repos/palantir/atlasdb/issues/1011/labels{/name}","comments_url":"https://api.github.com/repos/palantir/atlasdb/issues/1011/comments","events_url":"https://api.github.com/repos/palantir/atlasdb/issues/1011/events","html_url":"https://github.com/palantir/atlasdb/pull/1011","id":180308636,"number":1011,"title":"Backup lock","user":{"login":"gbrova","id":1232895,"avatar_url":"https://avatars.githubusercontent.com/u/1232895?v=3","gravatar_id":"","url":"https://api.github.com/users/gbrova","html_url":"https://github.com/gbrova","followers_url":"https://api.github.com/users/gbrova/followers","following_url":"https://api.github.com/users/gbrova/following{/other_user}","gists_url":"https://api.github.com/users/gbrova/gists{/gist_id}","starred_url":"https://api.github.com/users/gbrova/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gbrova/subscriptions","organizations_url":"https://api.github.com/users/gbrova/orgs","repos_url":"https://api.github.com/users/gbrova/repos","events_url":"https://api.github.com/users/gbrova/events{/privacy}","received_events_url":"https://api.github.com/users/gbrova/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"clockfort","id":57031,"avatar_url":"https://avatars.githubusercontent.com/u/57031?v=3","gravatar_id":"","url":"https://api.github.com/users/clockfort","html_url":"https://github.com/clockfort","followers_url":"https://api.github.com/users/clockfort/followers","following_url":"https://api.github.com/users/clockfort/following{/other_user}","gists_url":"https://api.github.com/users/clockfort/gists{/gist_id}","starred_url":"https://api.github.com/users/clockfort/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/clockfort/subscriptions","organizations_url":"https://api.github.com/users/clockfort/orgs","repos_url":"https://api.github.com/users/clockfort/repos","events_url":"https://api.github.com/users/clockfort/events{/privacy}","received_events_url":"https://api.github.com/users/clockfort/received_events","type":"User","site_admin":false},"assignees":[{"login":"clockfort","id":57031,"avatar_url":"https://avatars.githubusercontent.com/u/57031?v=3","gravatar_id":"","url":"https://api.github.com/users/clockfort","html_url":"https://github.com/clockfort","followers_url":"https://api.github.com/users/clockfort/followers","following_url":"https://api.github.com/users/clockfort/following{/other_user}","gists_url":"https://api.github.com/users/clockfort/gists{/gist_id}","starred_url":"https://api.github.com/users/clockfort/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/clockfort/subscriptions","organizations_url":"https://api.github.com/users/clockfort/orgs","repos_url":"https://api.github.com/users/clockfort/repos","events_url":"https://api.github.com/users/clockfort/events{/privacy}","received_events_url":"https://api.github.com/users/clockfort/received_events","type":"User","site_admin":false},{"login":"tpetracca","id":2554328,"avatar_url":"https://avatars.githubusercontent.com/u/2554328?v=3","gravatar_id":"","url":"https://api.github.com/users/tpetracca","html_url":"https://github.com/tpetracca","followers_url":"https://api.github.com/users/tpetracca/followers","following_url":"https://api.github.com/users/tpetracca/following{/other_user}","gists_url":"https://api.github.com/users/tpetracca/gists{/gist_id}","starred_url":"https://api.github.com/users/tpetracca/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tpetracca/subscriptions","organizations_url":"https://api.github.com/users/tpetracca/orgs","repos_url":"https://api.github.com/users/tpetracca/repos","events_url":"https://api.github.com/users/tpetracca/events{/privacy}","received_events_url":"https://api.github.com/users/tpetracca/received_events","type":"User","site_admin":false}],"milestone":null,"comments":2,"created_at":"2016-09-30T13:49:58Z","updated_at":"2016-10-11T08:41:18Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/palantir/atlasdb/pulls/1011","html_url":"https://github.com/palantir/atlasdb/pull/1011","diff_url":"https://github.com/palantir/atlasdb/pull/1011.diff","patch_url":"https://github.com/palantir/atlasdb/pull/1011.patch"},"body":"Beginning of work on #852 ; enables sweep to run safely alongside backups\r\n\r\nUsers of AtlasDB need to coordinate sweep and backup jobs, because running a sweep during a backup can corrupt that backup. This PR adds coordination via a KVS-persisted deletion lock. \r\n\r\nThis PR adds a KVS-persisted deletion lock, which sweep and scrub acquire before running. The PR also adds CLIs to manipulate these locks, which can be used to acquire the deletion lock in preparation for a backup. The locks can be exclusive or non-exclusive (similar to read-write locks) - sweep and scrub take a non-exclusive deletion lock (so that sweep and scrub can run simultaneously), while the backup CLI takes an exclusive lock. \r\n\r\nStill need: \r\n\r\n- [ ] Docs and release notes\r\n- [ ] Consider protecting truncates and schema mutations.\r\n- [ ] Support for suppressing the sweep timestamp (to enable partial sweep/scrub during a backup).  Will do this as part of a separate PR.\n\n<!-- Reviewable:start -->\n---\nThis change is [<img src=\"https://reviewable.io/review_button.svg\" height=\"34\" align=\"absmiddle\" alt=\"Reviewable\"/>](https://reviewable.io/reviews/palantir/atlasdb/1011)\n<!-- Reviewable:end -->\n"},"comment":{"url":"https://api.github.com/repos/palantir/atlasdb/issues/comments/252848772","html_url":"https://github.com/palantir/atlasdb/pull/1011#issuecomment-252848772","issue_url":"https://api.github.com/repos/palantir/atlasdb/issues/1011","id":252848772,"user":{"login":"gbrova","id":1232895,"avatar_url":"https://avatars.githubusercontent.com/u/1232895?v=3","gravatar_id":"","url":"https://api.github.com/users/gbrova","html_url":"https://github.com/gbrova","followers_url":"https://api.github.com/users/gbrova/followers","following_url":"https://api.github.com/users/gbrova/following{/other_user}","gists_url":"https://api.github.com/users/gbrova/gists{/gist_id}","starred_url":"https://api.github.com/users/gbrova/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gbrova/subscriptions","organizations_url":"https://api.github.com/users/gbrova/orgs","repos_url":"https://api.github.com/users/gbrova/repos","events_url":"https://api.github.com/users/gbrova/events{/privacy}","received_events_url":"https://api.github.com/users/gbrova/received_events","type":"User","site_admin":false},"created_at":"2016-10-11T08:41:18Z","updated_at":"2016-10-11T08:41:18Z","body":"@schlosna any other comments? I'll be sure one of @tpetracca or @ashrayjain also approve it before merging."}}
{"actor":{"display_login":"gbrova"}}