{"action":"reopened","issue":{"url":"https://api.github.com/repos/NuGet/NuGetGallery/issues/3733","repository_url":"https://api.github.com/repos/NuGet/NuGetGallery","labels_url":"https://api.github.com/repos/NuGet/NuGetGallery/issues/3733/labels{/name}","comments_url":"https://api.github.com/repos/NuGet/NuGetGallery/issues/3733/comments","events_url":"https://api.github.com/repos/NuGet/NuGetGallery/issues/3733/events","html_url":"https://github.com/NuGet/NuGetGallery/issues/3733","id":218370372,"number":3733,"title":"Catalog entries can get skipped by catalog2registration when there are transient failures","user":{"login":"joelverhagen","id":94054,"avatar_url":"https://avatars3.githubusercontent.com/u/94054?v=3","gravatar_id":"","url":"https://api.github.com/users/joelverhagen","html_url":"https://github.com/joelverhagen","followers_url":"https://api.github.com/users/joelverhagen/followers","following_url":"https://api.github.com/users/joelverhagen/following{/other_user}","gists_url":"https://api.github.com/users/joelverhagen/gists{/gist_id}","starred_url":"https://api.github.com/users/joelverhagen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/joelverhagen/subscriptions","organizations_url":"https://api.github.com/users/joelverhagen/orgs","repos_url":"https://api.github.com/users/joelverhagen/repos","events_url":"https://api.github.com/users/joelverhagen/events{/privacy}","received_events_url":"https://api.github.com/users/joelverhagen/received_events","type":"User","site_admin":false},"labels":[{"id":203335746,"url":"https://api.github.com/repos/NuGet/NuGetGallery/labels/Area:%20V3%20Feed","name":"Area: V3 Feed","color":"009800","default":false},{"id":247720255,"url":"https://api.github.com/repos/NuGet/NuGetGallery/labels/Type:Bug","name":"Type:Bug","color":"ededed","default":false},{"id":466425947,"url":"https://api.github.com/repos/NuGet/NuGetGallery/labels/Verified-Dev","name":"Verified-Dev","color":"1df0fb","default":false}],"state":"open","locked":false,"assignee":{"login":"joelverhagen","id":94054,"avatar_url":"https://avatars3.githubusercontent.com/u/94054?v=3","gravatar_id":"","url":"https://api.github.com/users/joelverhagen","html_url":"https://github.com/joelverhagen","followers_url":"https://api.github.com/users/joelverhagen/followers","following_url":"https://api.github.com/users/joelverhagen/following{/other_user}","gists_url":"https://api.github.com/users/joelverhagen/gists{/gist_id}","starred_url":"https://api.github.com/users/joelverhagen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/joelverhagen/subscriptions","organizations_url":"https://api.github.com/users/joelverhagen/orgs","repos_url":"https://api.github.com/users/joelverhagen/repos","events_url":"https://api.github.com/users/joelverhagen/events{/privacy}","received_events_url":"https://api.github.com/users/joelverhagen/received_events","type":"User","site_admin":false},"assignees":[{"login":"joelverhagen","id":94054,"avatar_url":"https://avatars3.githubusercontent.com/u/94054?v=3","gravatar_id":"","url":"https://api.github.com/users/joelverhagen","html_url":"https://github.com/joelverhagen","followers_url":"https://api.github.com/users/joelverhagen/followers","following_url":"https://api.github.com/users/joelverhagen/following{/other_user}","gists_url":"https://api.github.com/users/joelverhagen/gists{/gist_id}","starred_url":"https://api.github.com/users/joelverhagen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/joelverhagen/subscriptions","organizations_url":"https://api.github.com/users/joelverhagen/orgs","repos_url":"https://api.github.com/users/joelverhagen/repos","events_url":"https://api.github.com/users/joelverhagen/events{/privacy}","received_events_url":"https://api.github.com/users/joelverhagen/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/NuGet/NuGetGallery/milestones/84","html_url":"https://github.com/NuGet/NuGetGallery/milestone/84","labels_url":"https://api.github.com/repos/NuGet/NuGetGallery/milestones/84/labels","id":2391271,"number":84,"title":"S116 - 2017.3.27","description":"","creator":{"login":"skofman1","id":16807822,"avatar_url":"https://avatars2.githubusercontent.com/u/16807822?v=3","gravatar_id":"","url":"https://api.github.com/users/skofman1","html_url":"https://github.com/skofman1","followers_url":"https://api.github.com/users/skofman1/followers","following_url":"https://api.github.com/users/skofman1/following{/other_user}","gists_url":"https://api.github.com/users/skofman1/gists{/gist_id}","starred_url":"https://api.github.com/users/skofman1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/skofman1/subscriptions","organizations_url":"https://api.github.com/users/skofman1/orgs","repos_url":"https://api.github.com/users/skofman1/repos","events_url":"https://api.github.com/users/skofman1/events{/privacy}","received_events_url":"https://api.github.com/users/skofman1/received_events","type":"User","site_admin":false},"open_issues":38,"closed_issues":18,"state":"open","created_at":"2017-03-16T16:35:03Z","updated_at":"2017-04-08T00:12:53Z","due_on":"2017-04-14T07:00:00Z","closed_at":null},"comments":1,"created_at":"2017-03-31T01:07:32Z","updated_at":"2017-04-08T00:12:53Z","closed_at":null,"body":"From PR https://github.com/NuGet/NuGet.Services.Metadata/pull/150:\r\n\r\n> Suppose you have a page with:\r\n> ```\r\n> ID   Version   Commit Timestamp\r\n> --   -------   ----------------\r\n> B    1.0.0     10:00 PM\r\n> A    1.0.0     10:00 PM\r\n> A    1.0.1     10:05 PM\r\n> ```\r\n> \r\n> Also suppose you have the cursor set to 9:55 PM. This means all of the items in the page need to be processed. You will have two batches processed by `RegistrationCollector`:\r\n> \r\n> ```\r\n> Batch 1: B 1.0.0\r\n>  - Commit Timestamp: 10:00 PM\r\n> \r\n> Batch 2: A 1.0.0, A 1.0.1\r\n>  - Commit Timestamp: 10:00 PM\r\n> ```\r\n> \r\n> Suppose batch 1 is processed successfully. The [`CommitCollector` will update the cursor](https://github.com/NuGet/NuGet.Services.Metadata/blob/cb1e7afa4d345a8a6d46ff3edd874bd8a7579e8f/src/Catalog/CommitCollector.cs#L60) to 10:00 PM (the commit timestamp of batch 1) then start processing batch 2.\r\n> \r\n> Now suppose the processing of batch 2 fails such that neither A 1.0.0 nor A 1.0.1 are completed.\r\n> \r\n> The job will crash due to the failure then start up again. Since the cursor is now at 10:00 PM, the set of items in the page considered will be:\r\n> \r\n> ```\r\n> ID   Version   Commit Timestamp\r\n> --   -------   ----------------\r\n> A    1.0.1     10:05 PM\r\n> ```\r\n> \r\n> This means A 1.0.0 is skipped. Remember that the cursor means \"everything strictly after this timestamp needs to be processed\"."}}
{"actor":{"display_login":"skofman1"}}