)]}'
{"metropolis/node/core/curator/impl_leader_curator.go":[{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"abe8bacaeae752018476f0b2a0eabaa7945c072c","unresolved":true,"context_lines":[{"line_number":355,"context_line":""},{"line_number":356,"context_line":"\treturn \u0026ipb.RegisterNodeResponse{}, nil"},{"line_number":357,"context_line":"}"},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"func (l *leaderCurator) CommitNode(ctx context.Context, req *ipb.CommitNodeRequest) (*ipb.CommitNodeResponse, error) {"},{"line_number":360,"context_line":"\t// Call is unauthenticated - verify the other side has connected with an"},{"line_number":361,"context_line":"\t// ephemeral certificate. That certificate\u0027s pubkey will become the node\u0027s"}],"source_content_type":"text/x-go","patch_set":3,"id":"958e1fe2_692f9369","line":358,"updated":"2021-11-18 13:24:16.000000000","message":"Please provide a package-level comment for this method.","commit_id":"0e02e8f8a8029a675bcbf35ec9b1f08d0a420ed7"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"07f9662ab1c7ce99a794cae6524bb7e36d7f7121","unresolved":true,"context_lines":[{"line_number":355,"context_line":""},{"line_number":356,"context_line":"\treturn \u0026ipb.RegisterNodeResponse{}, nil"},{"line_number":357,"context_line":"}"},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"func (l *leaderCurator) CommitNode(ctx context.Context, req *ipb.CommitNodeRequest) (*ipb.CommitNodeResponse, error) {"},{"line_number":360,"context_line":"\t// Call is unauthenticated - verify the other side has connected with an"},{"line_number":361,"context_line":"\t// ephemeral certificate. That certificate\u0027s pubkey will become the node\u0027s"}],"source_content_type":"text/x-go","patch_set":3,"id":"f4ce4178_14a10823","line":358,"in_reply_to":"65eecc9e_b6690e64","updated":"2021-11-18 13:50:34.000000000","message":"OK, I saw more occurences of that. If you find that approach too verbose, let\u0027s drop it.","commit_id":"0e02e8f8a8029a675bcbf35ec9b1f08d0a420ed7"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"01c9a895302c2656fca40c99752e5150c236feeb","unresolved":true,"context_lines":[{"line_number":355,"context_line":""},{"line_number":356,"context_line":"\treturn \u0026ipb.RegisterNodeResponse{}, nil"},{"line_number":357,"context_line":"}"},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"func (l *leaderCurator) CommitNode(ctx context.Context, req *ipb.CommitNodeRequest) (*ipb.CommitNodeResponse, error) {"},{"line_number":360,"context_line":"\t// Call is unauthenticated - verify the other side has connected with an"},{"line_number":361,"context_line":"\t// ephemeral certificate. That certificate\u0027s pubkey will become the node\u0027s"}],"source_content_type":"text/x-go","patch_set":3,"id":"65eecc9e_b6690e64","line":358,"in_reply_to":"958e1fe2_692f9369","updated":"2021-11-18 13:25:33.000000000","message":"Consider adding a reference to the appropriate .proto file.","commit_id":"0e02e8f8a8029a675bcbf35ec9b1f08d0a420ed7"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"4c6278ab74ea9f36170709e32d65fc24c75791b7","unresolved":false,"context_lines":[{"line_number":355,"context_line":""},{"line_number":356,"context_line":"\treturn \u0026ipb.RegisterNodeResponse{}, nil"},{"line_number":357,"context_line":"}"},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"func (l *leaderCurator) CommitNode(ctx context.Context, req *ipb.CommitNodeRequest) (*ipb.CommitNodeResponse, error) {"},{"line_number":360,"context_line":"\t// Call is unauthenticated - verify the other side has connected with an"},{"line_number":361,"context_line":"\t// ephemeral certificate. That certificate\u0027s pubkey will become the node\u0027s"}],"source_content_type":"text/x-go","patch_set":3,"id":"653a9d12_d336972b","line":358,"in_reply_to":"a8dccd3c_75a7e310","updated":"2021-11-19 15:36:50.000000000","message":"Done","commit_id":"0e02e8f8a8029a675bcbf35ec9b1f08d0a420ed7"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"61db5b3843d2e90af93e61a47df8d69bdf34bcde","unresolved":true,"context_lines":[{"line_number":355,"context_line":""},{"line_number":356,"context_line":"\treturn \u0026ipb.RegisterNodeResponse{}, nil"},{"line_number":357,"context_line":"}"},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"func (l *leaderCurator) CommitNode(ctx context.Context, req *ipb.CommitNodeRequest) (*ipb.CommitNodeResponse, error) {"},{"line_number":360,"context_line":"\t// Call is unauthenticated - verify the other side has connected with an"},{"line_number":361,"context_line":"\t// ephemeral certificate. That certificate\u0027s pubkey will become the node\u0027s"}],"source_content_type":"text/x-go","patch_set":3,"id":"a8dccd3c_75a7e310","line":358,"in_reply_to":"f4ce4178_14a10823","updated":"2021-11-18 15:53:21.000000000","message":"Is the following not enough?\n\nhttps://review.monogon.dev/c/monogon/+/443/3/metropolis/node/core/curator/impl_leader_curator.go#20","commit_id":"0e02e8f8a8029a675bcbf35ec9b1f08d0a420ed7"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"abe8bacaeae752018476f0b2a0eabaa7945c072c","unresolved":true,"context_lines":[{"line_number":381,"context_line":"\t\treturn nil, status.Errorf(codes.InvalidArgument, \"invalid node id\")"},{"line_number":382,"context_line":"\t}"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"\tres, err :\u003d l.txnAsLeader(ctx, clientv3.OpGet(key))"},{"line_number":385,"context_line":"\tif err !\u003d nil {"},{"line_number":386,"context_line":"\t\tif rpcErr, ok :\u003d rpcError(err); ok {"},{"line_number":387,"context_line":"\t\t\treturn nil, rpcErr"}],"source_content_type":"text/x-go","patch_set":3,"id":"47d08ac2_3f43ee1a","line":384,"updated":"2021-11-18 13:24:16.000000000","message":"Please provide a block-level comment, eg \"Retrieve the node and return if its status is not NODE_STATE_STANDBY\".","commit_id":"0e02e8f8a8029a675bcbf35ec9b1f08d0a420ed7"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"61db5b3843d2e90af93e61a47df8d69bdf34bcde","unresolved":false,"context_lines":[{"line_number":381,"context_line":"\t\treturn nil, status.Errorf(codes.InvalidArgument, \"invalid node id\")"},{"line_number":382,"context_line":"\t}"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"\tres, err :\u003d l.txnAsLeader(ctx, clientv3.OpGet(key))"},{"line_number":385,"context_line":"\tif err !\u003d nil {"},{"line_number":386,"context_line":"\t\tif rpcErr, ok :\u003d rpcError(err); ok {"},{"line_number":387,"context_line":"\t\t\treturn nil, rpcErr"}],"source_content_type":"text/x-go","patch_set":3,"id":"8a37e445_1658b175","line":384,"in_reply_to":"47d08ac2_3f43ee1a","updated":"2021-11-18 15:53:21.000000000","message":"Done","commit_id":"0e02e8f8a8029a675bcbf35ec9b1f08d0a420ed7"}],"metropolis/node/core/curator/proto/api/api.proto":[{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"abe8bacaeae752018476f0b2a0eabaa7945c072c","unresolved":true,"context_lines":[{"line_number":78,"context_line":"    // same way as the RegisterNode call was performed."},{"line_number":79,"context_line":"    //"},{"line_number":80,"context_line":"    // This code will fail if the given node is not in the STANDBY state, ie."},{"line_number":81,"context_line":"    // has not yet been approved to join the cluster. It is also _not_"},{"line_number":82,"context_line":"    // idempotent and cannot be retried. In case of a non-transitive failure,"},{"line_number":83,"context_line":"    // the node should block forever and not retry the full registration"},{"line_number":84,"context_line":"    // process, and instead an administrative intervention (eg. node"}],"source_content_type":"text/x-protobuf","patch_set":3,"id":"caf8d183_18819f66","line":81,"updated":"2021-11-18 13:24:16.000000000","message":"nit: the call is not idempotent, not the code.","commit_id":"0e02e8f8a8029a675bcbf35ec9b1f08d0a420ed7"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"61db5b3843d2e90af93e61a47df8d69bdf34bcde","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    // same way as the RegisterNode call was performed."},{"line_number":79,"context_line":"    //"},{"line_number":80,"context_line":"    // This code will fail if the given node is not in the STANDBY state, ie."},{"line_number":81,"context_line":"    // has not yet been approved to join the cluster. It is also _not_"},{"line_number":82,"context_line":"    // idempotent and cannot be retried. In case of a non-transitive failure,"},{"line_number":83,"context_line":"    // the node should block forever and not retry the full registration"},{"line_number":84,"context_line":"    // process, and instead an administrative intervention (eg. node"}],"source_content_type":"text/x-protobuf","patch_set":3,"id":"fbdd6d66_7fec832d","line":81,"in_reply_to":"caf8d183_18819f66","updated":"2021-11-18 15:53:21.000000000","message":"Done","commit_id":"0e02e8f8a8029a675bcbf35ec9b1f08d0a420ed7"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"abe8bacaeae752018476f0b2a0eabaa7945c072c","unresolved":true,"context_lines":[{"line_number":79,"context_line":"    //"},{"line_number":80,"context_line":"    // This code will fail if the given node is not in the STANDBY state, ie."},{"line_number":81,"context_line":"    // has not yet been approved to join the cluster. It is also _not_"},{"line_number":82,"context_line":"    // idempotent and cannot be retried. In case of a non-transitive failure,"},{"line_number":83,"context_line":"    // the node should block forever and not retry the full registration"},{"line_number":84,"context_line":"    // process, and instead an administrative intervention (eg. node"},{"line_number":85,"context_line":"    // registration flow restart) should take care of these cases. This is a"}],"source_content_type":"text/x-protobuf","patch_set":3,"id":"039ed314_42de21a2","line":82,"updated":"2021-11-18 13:24:16.000000000","message":"transitory?","commit_id":"0e02e8f8a8029a675bcbf35ec9b1f08d0a420ed7"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"61db5b3843d2e90af93e61a47df8d69bdf34bcde","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    //"},{"line_number":80,"context_line":"    // This code will fail if the given node is not in the STANDBY state, ie."},{"line_number":81,"context_line":"    // has not yet been approved to join the cluster. It is also _not_"},{"line_number":82,"context_line":"    // idempotent and cannot be retried. In case of a non-transitive failure,"},{"line_number":83,"context_line":"    // the node should block forever and not retry the full registration"},{"line_number":84,"context_line":"    // process, and instead an administrative intervention (eg. node"},{"line_number":85,"context_line":"    // registration flow restart) should take care of these cases. This is a"}],"source_content_type":"text/x-protobuf","patch_set":3,"id":"7e1b69f6_94dc7f76","line":82,"in_reply_to":"039ed314_42de21a2","updated":"2021-11-18 15:53:21.000000000","message":"Should\u0027ve been non-transient. Whoops.","commit_id":"0e02e8f8a8029a675bcbf35ec9b1f08d0a420ed7"}]}
