)]}'
{"metropolis/node/core/consensus/status.go":[{"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":"68d3dde69ee9c6cb8fc84ffadbab1373c757f0d3","unresolved":true,"context_lines":[{"line_number":220,"context_line":""},{"line_number":221,"context_line":"\t// NoClusterMemberManagement disables etcd member management as part of"},{"line_number":222,"context_line":"\t// adding a new cluster member."},{"line_number":223,"context_line":"\tNoClusterMemberManagement bool"},{"line_number":224,"context_line":"}"}],"source_content_type":"text/x-go","patch_set":3,"id":"ae4eded6_0f39adc6","line":223,"range":{"start_line":223,"start_character":1,"end_line":223,"end_character":26},"updated":"2022-06-13 14:41:28.000000000","message":"Why have this both in AddNodeOption and Status? Isn\u0027t putting it in Status enough, and setting it to true in TestServiceHandle, instead of setting it per AddNode call?","commit_id":"ebf9641d6062a62a0b4a4f9410e315309140046e"},{"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":"d4a03080e64d9ed46ee114869806138938469cc4","unresolved":false,"context_lines":[{"line_number":220,"context_line":""},{"line_number":221,"context_line":"\t// NoClusterMemberManagement disables etcd member management as part of"},{"line_number":222,"context_line":"\t// adding a new cluster member."},{"line_number":223,"context_line":"\tNoClusterMemberManagement bool"},{"line_number":224,"context_line":"}"}],"source_content_type":"text/x-go","patch_set":3,"id":"6d1d52f3_32dd81d9","line":223,"range":{"start_line":223,"start_character":1,"end_line":223,"end_character":26},"in_reply_to":"ae4eded6_0f39adc6","updated":"2022-06-14 16:15:50.000000000","message":"Oops, I got really mixed up here, didn\u0027t I.\n\nI left just the Status member variable.","commit_id":"ebf9641d6062a62a0b4a4f9410e315309140046e"}],"metropolis/node/core/curator/impl_leader_test.go":[{"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":"7f2e2847061063d46d4fb19809541135fe1a7609","unresolved":true,"context_lines":[{"line_number":1027,"context_line":"\t\tt.Fatalf(\"could not get running consensus: %v\", err)"},{"line_number":1028,"context_line":"\t}"},{"line_number":1029,"context_line":""},{"line_number":1030,"context_line":"\tst.NoClusterMemberManagement \u003d true"},{"line_number":1031,"context_line":""},{"line_number":1032,"context_line":"\t// Run all the request payloads defined in ue, with an expectation of all of"},{"line_number":1033,"context_line":"\t// them succeeding."}],"source_content_type":"text/x-go","patch_set":5,"id":"9a35166e_d861dc54","line":1030,"range":{"start_line":1030,"start_character":1,"end_line":1030,"end_character":36},"updated":"2022-06-17 11:55:27.000000000","message":"Can\u0027t you always set this in consensus/testhelper.go TestServiceHandle, and unexport the field? TestServiceHandle is what\u0027s used by fakeLeader \u0026 co, IIRC.","commit_id":"2ade266d94d1b48e4cc4777f66f1fb54b85c2b0f"},{"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":"79b7dcdc343cf1dc4c436ef78b8d30fa3c9b857a","unresolved":false,"context_lines":[{"line_number":1027,"context_line":"\t\tt.Fatalf(\"could not get running consensus: %v\", err)"},{"line_number":1028,"context_line":"\t}"},{"line_number":1029,"context_line":""},{"line_number":1030,"context_line":"\tst.NoClusterMemberManagement \u003d true"},{"line_number":1031,"context_line":""},{"line_number":1032,"context_line":"\t// Run all the request payloads defined in ue, with an expectation of all of"},{"line_number":1033,"context_line":"\t// them succeeding."}],"source_content_type":"text/x-go","patch_set":5,"id":"c3944a0d_0111e868","line":1030,"range":{"start_line":1030,"start_character":1,"end_line":1030,"end_character":36},"in_reply_to":"9a35166e_d861dc54","updated":"2022-06-20 15:45:09.000000000","message":"Done","commit_id":"2ade266d94d1b48e4cc4777f66f1fb54b85c2b0f"}],"metropolis/proto/api/management.proto":[{"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":"68d3dde69ee9c6cb8fc84ffadbab1373c757f0d3","unresolved":true,"context_lines":[{"line_number":163,"context_line":"  // kubernetesWorker adjusts the appropriate role when set. Nodes performing"},{"line_number":164,"context_line":"  // this role must also be consensus members. "},{"line_number":165,"context_line":"  optional bool kubernetesWorker \u003d 2;"},{"line_number":166,"context_line":"  optional bool consensusMember \u003d 3;"},{"line_number":167,"context_line":"}"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"message UpdateNodeRolesResponse {"}],"source_content_type":"text/x-protobuf","patch_set":3,"id":"b2c3fdac_4d0d3428","line":166,"range":{"start_line":166,"start_character":2,"end_line":166,"end_character":36},"updated":"2022-06-13 14:41:28.000000000","message":"Proto3 optionals are a fairly new feature that I\u0027m not sure we expect every client to implement. Worst case, if someone sends a serialized proto from a definition that somehow stripped the `optional` annotation (effectively setting both to present and false), this will cause us to \u0027accidentally\u0027 disable roles, which can be catastrophic.\n\nThe \u0027canonical\u0027 (or oldschool) way to solve this is to use Protobuf Field Masks instead, which is a Well Known Type for attaching information on what fields to interpret for a particular reason:\n\nhttps://pinkiepractices.com/posts/protobuf-field-masks/\n\nhttps://pkg.go.dev/google.golang.org/protobuf/types/known/fieldmaskpb\n\nI would strongly consider using these instead, unless we\u0027re sure proto3 optionals are supported well enough.","commit_id":"ebf9641d6062a62a0b4a4f9410e315309140046e"},{"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":"d4a03080e64d9ed46ee114869806138938469cc4","unresolved":false,"context_lines":[{"line_number":163,"context_line":"  // kubernetesWorker adjusts the appropriate role when set. Nodes performing"},{"line_number":164,"context_line":"  // this role must also be consensus members. "},{"line_number":165,"context_line":"  optional bool kubernetesWorker \u003d 2;"},{"line_number":166,"context_line":"  optional bool consensusMember \u003d 3;"},{"line_number":167,"context_line":"}"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"message UpdateNodeRolesResponse {"}],"source_content_type":"text/x-protobuf","patch_set":3,"id":"24376bf1_a13f1d8b","line":166,"range":{"start_line":166,"start_character":2,"end_line":166,"end_character":36},"in_reply_to":"b2c3fdac_4d0d3428","updated":"2022-06-14 16:15:50.000000000","message":"As discussed, I\u0027m resolving this one with an assumption that legacy protobuf clients will update their implementations by the time this would become a problem.","commit_id":"ebf9641d6062a62a0b4a4f9410e315309140046e"},{"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":"7f2e2847061063d46d4fb19809541135fe1a7609","unresolved":false,"context_lines":[{"line_number":163,"context_line":"  // kubernetesWorker adjusts the appropriate role when set. Nodes performing"},{"line_number":164,"context_line":"  // this role must also be consensus members. "},{"line_number":165,"context_line":"  optional bool kubernetesWorker \u003d 2;"},{"line_number":166,"context_line":"  optional bool consensusMember \u003d 3;"},{"line_number":167,"context_line":"}"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"message UpdateNodeRolesResponse {"}],"source_content_type":"text/x-protobuf","patch_set":3,"id":"7f10ee65_4c205229","line":166,"range":{"start_line":166,"start_character":2,"end_line":166,"end_character":36},"in_reply_to":"b2c3fdac_4d0d3428","updated":"2022-06-17 11:55:27.000000000","message":"https://github.com/tafia/quick-protobuf/issues/219","commit_id":"ebf9641d6062a62a0b4a4f9410e315309140046e"}]}
