)]}'
{"metropolis/node/core/cluster/cluster_bootstrap.go":[{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"156a5c9ca7c6e6475521d1c7e1a4aa0a4fcbbc5a","unresolved":true,"context_lines":[{"line_number":125,"context_line":"\t\treturn fmt.Errorf(\"writing sealed configuration failed: %w\", err)"},{"line_number":126,"context_line":"\t}"},{"line_number":127,"context_line":"\tsupervisor.Logger(ctx).Infof(\"Saved bootstrapped node\u0027s credentials.\")"},{"line_number":128,"context_line":"\t// This sync is important, as the roleserver reads this file back to add the"},{"line_number":129,"context_line":"\t// ClusterCA to the sealed configuration."},{"line_number":130,"context_line":"\tunix.Sync()"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"\tm.roleServer.ProvideBootstrapData(priv, ownerKey, cuk, nuk, jpriv, cc, tpmUsage)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"\tsupervisor.Signal(ctx, supervisor.SignalHealthy)"}],"source_content_type":"text/x-go","patch_set":3,"id":"178c6831_c831c0a3","line":131,"range":{"start_line":128,"start_character":0,"end_line":131,"end_character":0},"updated":"2023-05-31 11:41:31.000000000","message":"The ESP is mounted MS_SYNCHRONOUS, so all writes should immediately be persisted to disk.","commit_id":"575a9b8ec070f3562b33aa6c1fdfe32755956064"},{"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":"d6e216de10407cff415604ba8e60d02b968ad38c","unresolved":false,"context_lines":[{"line_number":125,"context_line":"\t\treturn fmt.Errorf(\"writing sealed configuration failed: %w\", err)"},{"line_number":126,"context_line":"\t}"},{"line_number":127,"context_line":"\tsupervisor.Logger(ctx).Infof(\"Saved bootstrapped node\u0027s credentials.\")"},{"line_number":128,"context_line":"\t// This sync is important, as the roleserver reads this file back to add the"},{"line_number":129,"context_line":"\t// ClusterCA to the sealed configuration."},{"line_number":130,"context_line":"\tunix.Sync()"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"\tm.roleServer.ProvideBootstrapData(priv, ownerKey, cuk, nuk, jpriv, cc, tpmUsage)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"\tsupervisor.Signal(ctx, supervisor.SignalHealthy)"}],"source_content_type":"text/x-go","patch_set":3,"id":"0ceba81c_04092e72","line":131,"range":{"start_line":128,"start_character":0,"end_line":131,"end_character":0},"in_reply_to":"178c6831_c831c0a3","updated":"2023-06-05 16:20:34.000000000","message":"Done","commit_id":"575a9b8ec070f3562b33aa6c1fdfe32755956064"}],"metropolis/node/core/roleserve/roleserve.go":[{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"156a5c9ca7c6e6475521d1c7e1a4aa0a4fcbbc5a","unresolved":true,"context_lines":[{"line_number":196,"context_line":"\t// Also tell the resolver about all the existing nodes in the cluster we just"},{"line_number":197,"context_line":"\t// registered into."},{"line_number":198,"context_line":"\tfor _, n :\u003d range directory.Nodes {"},{"line_number":199,"context_line":"\t\t// TODO(q3k): only add control plane nodes."},{"line_number":200,"context_line":"\t\tfor _, addr :\u003d range n.Addresses {"},{"line_number":201,"context_line":"\t\t\ts.Resolver.AddEndpoint(resolver.NodeByHostPort(addr.Host, uint16(common.CuratorServicePort)))"},{"line_number":202,"context_line":"\t\t}"}],"source_content_type":"text/x-go","patch_set":3,"id":"8af23193_b58cf22b","line":199,"range":{"start_line":199,"start_character":16,"end_line":199,"end_character":45},"updated":"2023-05-31 11:41:31.000000000","message":"How does this work? Does the load balancer just throw out any nodes which don\u0027t run a curator because it can\u0027t reach them?","commit_id":"575a9b8ec070f3562b33aa6c1fdfe32755956064"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"a1731b48aa2d17abe37fc33009a11ac389019058","unresolved":false,"context_lines":[{"line_number":196,"context_line":"\t// Also tell the resolver about all the existing nodes in the cluster we just"},{"line_number":197,"context_line":"\t// registered into."},{"line_number":198,"context_line":"\tfor _, n :\u003d range directory.Nodes {"},{"line_number":199,"context_line":"\t\t// TODO(q3k): only add control plane nodes."},{"line_number":200,"context_line":"\t\tfor _, addr :\u003d range n.Addresses {"},{"line_number":201,"context_line":"\t\t\ts.Resolver.AddEndpoint(resolver.NodeByHostPort(addr.Host, uint16(common.CuratorServicePort)))"},{"line_number":202,"context_line":"\t\t}"}],"source_content_type":"text/x-go","patch_set":3,"id":"254ec7db_2dba928e","line":199,"range":{"start_line":199,"start_character":16,"end_line":199,"end_character":45},"in_reply_to":"42a6f8b6_616123f3","updated":"2023-06-06 11:20:14.000000000","message":"Ack","commit_id":"575a9b8ec070f3562b33aa6c1fdfe32755956064"},{"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":"d6e216de10407cff415604ba8e60d02b968ad38c","unresolved":true,"context_lines":[{"line_number":196,"context_line":"\t// Also tell the resolver about all the existing nodes in the cluster we just"},{"line_number":197,"context_line":"\t// registered into."},{"line_number":198,"context_line":"\tfor _, n :\u003d range directory.Nodes {"},{"line_number":199,"context_line":"\t\t// TODO(q3k): only add control plane nodes."},{"line_number":200,"context_line":"\t\tfor _, addr :\u003d range n.Addresses {"},{"line_number":201,"context_line":"\t\t\ts.Resolver.AddEndpoint(resolver.NodeByHostPort(addr.Host, uint16(common.CuratorServicePort)))"},{"line_number":202,"context_line":"\t\t}"}],"source_content_type":"text/x-go","patch_set":3,"id":"42a6f8b6_616123f3","line":199,"range":{"start_line":199,"start_character":16,"end_line":199,"end_character":45},"in_reply_to":"8af23193_b58cf22b","updated":"2023-06-05 16:20:34.000000000","message":"Yeah, it will go through all the nodes passed via AddEndpoint and try to find anything vaguely CuratorLocal shaped. Then once it does, it uses that to find the actual Curator, which it then asks for the actual list of control plane nodes, and that is then overlaid onto the curator\u0027s list of control plane nodes to interrogate for CuratorLocal.\n\nThe only downside of adding nodes that do not run the control plane is a slightly slower initial resolution, but that\u0027s it.","commit_id":"575a9b8ec070f3562b33aa6c1fdfe32755956064"}],"metropolis/node/core/roleserve/worker_controlplane.go":[{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"156a5c9ca7c6e6475521d1c7e1a4aa0a4fcbbc5a","unresolved":true,"context_lines":[{"line_number":313,"context_line":"\t\t\t\t\treturn fmt.Errorf(\"writing sealed configuration failed: %w\", err)"},{"line_number":314,"context_line":"\t\t\t\t}"},{"line_number":315,"context_line":"\t\t\t\tsupervisor.Logger(ctx).Infof(\"Saved bootstrapped node\u0027s credentials.\")"},{"line_number":316,"context_line":"\t\t\t\tunix.Sync()"},{"line_number":317,"context_line":"\t\t\t\tsupervisor.Logger(ctx).Infof(\"Control plane bootstrap complete, starting curator...\")"},{"line_number":318,"context_line":"\t\t\t} else {"},{"line_number":319,"context_line":"\t\t\t\t// Not bootstrapping, just starting consensus with credentials we already have."}],"source_content_type":"text/x-go","patch_set":3,"id":"95b4a7c5_9b30e5a4","line":316,"range":{"start_line":316,"start_character":4,"end_line":316,"end_character":15},"updated":"2023-05-31 11:41:31.000000000","message":"IMO also not needed","commit_id":"575a9b8ec070f3562b33aa6c1fdfe32755956064"},{"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":"d6e216de10407cff415604ba8e60d02b968ad38c","unresolved":false,"context_lines":[{"line_number":313,"context_line":"\t\t\t\t\treturn fmt.Errorf(\"writing sealed configuration failed: %w\", err)"},{"line_number":314,"context_line":"\t\t\t\t}"},{"line_number":315,"context_line":"\t\t\t\tsupervisor.Logger(ctx).Infof(\"Saved bootstrapped node\u0027s credentials.\")"},{"line_number":316,"context_line":"\t\t\t\tunix.Sync()"},{"line_number":317,"context_line":"\t\t\t\tsupervisor.Logger(ctx).Infof(\"Control plane bootstrap complete, starting curator...\")"},{"line_number":318,"context_line":"\t\t\t} else {"},{"line_number":319,"context_line":"\t\t\t\t// Not bootstrapping, just starting consensus with credentials we already have."}],"source_content_type":"text/x-go","patch_set":3,"id":"c5299741_993b0c1f","line":316,"range":{"start_line":316,"start_character":4,"end_line":316,"end_character":15},"in_reply_to":"95b4a7c5_9b30e5a4","updated":"2023-06-05 16:20:34.000000000","message":"Done","commit_id":"575a9b8ec070f3562b33aa6c1fdfe32755956064"}]}
