{"action":"opened","issue":{"url":"https://api.github.com/repos/2ndQuadrant/bdr/issues/208","repository_url":"https://api.github.com/repos/2ndQuadrant/bdr","labels_url":"https://api.github.com/repos/2ndQuadrant/bdr/issues/208/labels{/name}","comments_url":"https://api.github.com/repos/2ndQuadrant/bdr/issues/208/comments","events_url":"https://api.github.com/repos/2ndQuadrant/bdr/issues/208/events","html_url":"https://github.com/2ndQuadrant/bdr/issues/208","id":167325985,"number":208,"title":"Detect when an old backup is restored and refuse to let it join","user":{"login":"ringerc","id":274337,"avatar_url":"https://avatars.githubusercontent.com/u/274337?v=3","gravatar_id":"","url":"https://api.github.com/users/ringerc","html_url":"https://github.com/ringerc","followers_url":"https://api.github.com/users/ringerc/followers","following_url":"https://api.github.com/users/ringerc/following{/other_user}","gists_url":"https://api.github.com/users/ringerc/gists{/gist_id}","starred_url":"https://api.github.com/users/ringerc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ringerc/subscriptions","organizations_url":"https://api.github.com/users/ringerc/orgs","repos_url":"https://api.github.com/users/ringerc/repos","events_url":"https://api.github.com/users/ringerc/events{/privacy}","received_events_url":"https://api.github.com/users/ringerc/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/2ndQuadrant/bdr/milestones/11","html_url":"https://github.com/2ndQuadrant/bdr/milestones/1.0.1","labels_url":"https://api.github.com/repos/2ndQuadrant/bdr/milestones/11/labels","id":1901606,"number":11,"title":"1.0.1","description":"","creator":{"login":"ringerc","id":274337,"avatar_url":"https://avatars.githubusercontent.com/u/274337?v=3","gravatar_id":"","url":"https://api.github.com/users/ringerc","html_url":"https://github.com/ringerc","followers_url":"https://api.github.com/users/ringerc/followers","following_url":"https://api.github.com/users/ringerc/following{/other_user}","gists_url":"https://api.github.com/users/ringerc/gists{/gist_id}","starred_url":"https://api.github.com/users/ringerc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ringerc/subscriptions","organizations_url":"https://api.github.com/users/ringerc/orgs","repos_url":"https://api.github.com/users/ringerc/repos","events_url":"https://api.github.com/users/ringerc/events{/privacy}","received_events_url":"https://api.github.com/users/ringerc/received_events","type":"User","site_admin":false},"open_issues":5,"closed_issues":0,"state":"open","created_at":"2016-07-25T05:25:39Z","updated_at":"2016-07-25T09:40:54Z","due_on":null,"closed_at":null},"comments":0,"created_at":"2016-07-25T09:40:54Z","updated_at":"2016-07-25T09:40:54Z","closed_at":null,"body":"Right now, per #207, if you restore a snapshot of an old state of a BDR node, it'll merrily join and start consuming changes.\r\n\r\nWe should really detect and prevent that. It's made more complex by the fact that slots ignore requests for changes older than the confirm_lsn. This is an optimisation so that the downstream doesn't have to update its replication origin and do a disk flush in response to every replication feedback message when it hasn't actually received new rows, say when all the activity is on another database on the same upstream host. This does mean the rejoining node can't tell if some newer copy of its self has ever existed and already consumed needed changes. Or may even still exist and just be temporarily isolated from the network. In either case we could land up with changes going to one copy of the node but not the other and being silently lost.\r\n\r\nBecause we can't tell the difference between being started up in crash recovery and started from a snapshot backup we can't just refuse to run until some manual process is completed."}}
{"actor":{"display_login":"ringerc"}}