{"action":"created","issue":{"url":"https://api.github.com/repos/CorfuDB/CorfuDB/issues/971","repository_url":"https://api.github.com/repos/CorfuDB/CorfuDB","labels_url":"https://api.github.com/repos/CorfuDB/CorfuDB/issues/971/labels{/name}","comments_url":"https://api.github.com/repos/CorfuDB/CorfuDB/issues/971/comments","events_url":"https://api.github.com/repos/CorfuDB/CorfuDB/issues/971/events","html_url":"https://github.com/CorfuDB/CorfuDB/pull/971","id":267314129,"number":971,"title":" Catchup, replicate and Merge segments","user":{"login":"zalokhan","id":10751367,"avatar_url":"https://avatars3.githubusercontent.com/u/10751367?v=4","gravatar_id":"","url":"https://api.github.com/users/zalokhan","html_url":"https://github.com/zalokhan","followers_url":"https://api.github.com/users/zalokhan/followers","following_url":"https://api.github.com/users/zalokhan/following{/other_user}","gists_url":"https://api.github.com/users/zalokhan/gists{/gist_id}","starred_url":"https://api.github.com/users/zalokhan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zalokhan/subscriptions","organizations_url":"https://api.github.com/users/zalokhan/orgs","repos_url":"https://api.github.com/users/zalokhan/repos","events_url":"https://api.github.com/users/zalokhan/events{/privacy}","received_events_url":"https://api.github.com/users/zalokhan/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":{"login":"zalokhan","id":10751367,"avatar_url":"https://avatars3.githubusercontent.com/u/10751367?v=4","gravatar_id":"","url":"https://api.github.com/users/zalokhan","html_url":"https://github.com/zalokhan","followers_url":"https://api.github.com/users/zalokhan/followers","following_url":"https://api.github.com/users/zalokhan/following{/other_user}","gists_url":"https://api.github.com/users/zalokhan/gists{/gist_id}","starred_url":"https://api.github.com/users/zalokhan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zalokhan/subscriptions","organizations_url":"https://api.github.com/users/zalokhan/orgs","repos_url":"https://api.github.com/users/zalokhan/repos","events_url":"https://api.github.com/users/zalokhan/events{/privacy}","received_events_url":"https://api.github.com/users/zalokhan/received_events","type":"User","site_admin":false},"assignees":[{"login":"zalokhan","id":10751367,"avatar_url":"https://avatars3.githubusercontent.com/u/10751367?v=4","gravatar_id":"","url":"https://api.github.com/users/zalokhan","html_url":"https://github.com/zalokhan","followers_url":"https://api.github.com/users/zalokhan/followers","following_url":"https://api.github.com/users/zalokhan/following{/other_user}","gists_url":"https://api.github.com/users/zalokhan/gists{/gist_id}","starred_url":"https://api.github.com/users/zalokhan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zalokhan/subscriptions","organizations_url":"https://api.github.com/users/zalokhan/orgs","repos_url":"https://api.github.com/users/zalokhan/repos","events_url":"https://api.github.com/users/zalokhan/events{/privacy}","received_events_url":"https://api.github.com/users/zalokhan/received_events","type":"User","site_admin":false}],"milestone":null,"comments":5,"created_at":"2017-10-20T21:49:03Z","updated_at":"2017-11-23T00:17:04Z","closed_at":"2017-11-23T00:17:04Z","author_association":"MEMBER","pull_request":{"url":"https://api.github.com/repos/CorfuDB/CorfuDB/pulls/971","html_url":"https://github.com/CorfuDB/CorfuDB/pull/971","diff_url":"https://github.com/CorfuDB/CorfuDB/pull/971.diff","patch_url":"https://github.com/CorfuDB/CorfuDB/pull/971.patch"},"body":"### Workflow: Merge segment\r\n\r\nThis workflow is executed only if the new node to be added is going to be a log unit server.\r\nSteps of these workflow are dependent on the type of replication protocol being used. The current implementation strongly assumes Chain replication only. Abstraction to support other replication modes might be missing.\r\nComprises of 3 steps:\r\n- Step 1: Catch-up segment.\r\n  - This step fetches a list of all known addresses from the existing head and tail of the chain.\r\n  - The diff of all the addresses between these 2 sets is calculated.\r\n  - A read is performed (on the tail) for all the missing addresses (diff set) which forces hole fills.\r\n\r\n- Step 2: Segment replication\r\n  - At the source (any node in the existing chain as all nodes have the same state after catch-up) the \r\n    files are copied into a buffer and sent to the destination node. (No lock or snapshot is taken on \r\n    the file being copied)\r\n  - At the destination, the file is opened by a temporary segment handler and copied to the existing \r\n    file to preserve existing data.\r\n\r\n- Step 3: Merge Segment\r\n  - The layout is now reconfigured to merge the last 2 segments."},"comment":{"url":"https://api.github.com/repos/CorfuDB/CorfuDB/issues/comments/346506788","html_url":"https://github.com/CorfuDB/CorfuDB/pull/971#issuecomment-346506788","issue_url":"https://api.github.com/repos/CorfuDB/CorfuDB/issues/971","id":346506788,"user":{"login":"zalokhan","id":10751367,"avatar_url":"https://avatars3.githubusercontent.com/u/10751367?v=4","gravatar_id":"","url":"https://api.github.com/users/zalokhan","html_url":"https://github.com/zalokhan","followers_url":"https://api.github.com/users/zalokhan/followers","following_url":"https://api.github.com/users/zalokhan/following{/other_user}","gists_url":"https://api.github.com/users/zalokhan/gists{/gist_id}","starred_url":"https://api.github.com/users/zalokhan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zalokhan/subscriptions","organizations_url":"https://api.github.com/users/zalokhan/orgs","repos_url":"https://api.github.com/users/zalokhan/repos","events_url":"https://api.github.com/users/zalokhan/events{/privacy}","received_events_url":"https://api.github.com/users/zalokhan/received_events","type":"User","site_admin":false},"created_at":"2017-11-23T00:17:04Z","updated_at":"2017-11-23T00:17:04Z","author_association":"MEMBER","body":"Removing state transfer code as it will use batch writes.\r\nMerging the rest of the \"merge segments\" code to #970 "}}
{"actor":{"display_login":"zalokhan"}}