)]}'
{"metropolis/node/core/network/dns/coredns.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":"5b672cec089b1627eaeb1339d9714670b499c63b","unresolved":true,"context_lines":[{"line_number":39,"context_line":"\t"},{"line_number":40,"context_line":"    cache 30"},{"line_number":41,"context_line":"    loadbalance"},{"line_number":42,"context_line":"\treload 10s"},{"line_number":43,"context_line":"`"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"type Service struct {"}],"source_content_type":"text/x-go","patch_set":2,"id":"b4491b5b_141b8e12","line":42,"range":{"start_line":42,"start_character":0,"end_line":42,"end_character":1},"updated":"2023-04-12 12:21:23.000000000","message":"Tab -\u003e 4 spaces.\n\n```suggestion\n    reload 10s\n```","commit_id":"bf63bb178911ffd6f742a85322b8dac0cddee413"},{"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":"ad4765d6ae0047a7c75f8f1cb5621a57201395e3","unresolved":false,"context_lines":[{"line_number":39,"context_line":"\t"},{"line_number":40,"context_line":"    cache 30"},{"line_number":41,"context_line":"    loadbalance"},{"line_number":42,"context_line":"\treload 10s"},{"line_number":43,"context_line":"`"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"type Service struct {"}],"source_content_type":"text/x-go","patch_set":2,"id":"4e92fc14_5f3f60fa","line":42,"range":{"start_line":42,"start_character":0,"end_line":42,"end_character":1},"in_reply_to":"b4491b5b_141b8e12","updated":"2023-04-13 12:44:20.000000000","message":"Done","commit_id":"bf63bb178911ffd6f742a85322b8dac0cddee413"},{"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":"5b672cec089b1627eaeb1339d9714670b499c63b","unresolved":true,"context_lines":[{"line_number":146,"context_line":"\t// If the process is not currenty running it will use the new config file"},{"line_number":147,"context_line":"\t// on next restart. Race conditions are resolved by CoreDNS\u0027s reload plugin"},{"line_number":148,"context_line":"\t// which polls for changes."},{"line_number":149,"context_line":"\tif s.cmd !\u003d nil \u0026\u0026 s.cmd.Process !\u003d nil \u0026\u0026 s.cmd.ProcessState \u003d\u003d nil {"},{"line_number":150,"context_line":"\t\tif err :\u003d s.cmd.Process.Signal(syscall.SIGUSR1); err !\u003d nil {"},{"line_number":151,"context_line":"\t\t\tsupervisor.Logger(ctx).Warningf(\"Failed to send SIGUSR1 to CoreDNS for reload: %v\", err)"},{"line_number":152,"context_line":"\t\t}"}],"source_content_type":"text/x-go","patch_set":2,"id":"9c893af3_af52261d","line":149,"range":{"start_line":149,"start_character":20,"end_line":149,"end_character":33},"updated":"2023-04-12 12:21:23.000000000","message":"Now that I think of it, accessing s.cmd.Process here seems like a data race. We might want to use a channel for communicating the intent to send a signal or that he process is running here instead. This will probably require adapting supervisor.RunCommand or inlining it in runCoreDNS() to talk to a channel between doing cmd.Start and cmd.Wait.","commit_id":"bf63bb178911ffd6f742a85322b8dac0cddee413"},{"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":"ad4765d6ae0047a7c75f8f1cb5621a57201395e3","unresolved":false,"context_lines":[{"line_number":146,"context_line":"\t// If the process is not currenty running it will use the new config file"},{"line_number":147,"context_line":"\t// on next restart. Race conditions are resolved by CoreDNS\u0027s reload plugin"},{"line_number":148,"context_line":"\t// which polls for changes."},{"line_number":149,"context_line":"\tif s.cmd !\u003d nil \u0026\u0026 s.cmd.Process !\u003d nil \u0026\u0026 s.cmd.ProcessState \u003d\u003d nil {"},{"line_number":150,"context_line":"\t\tif err :\u003d s.cmd.Process.Signal(syscall.SIGUSR1); err !\u003d nil {"},{"line_number":151,"context_line":"\t\t\tsupervisor.Logger(ctx).Warningf(\"Failed to send SIGUSR1 to CoreDNS for reload: %v\", err)"},{"line_number":152,"context_line":"\t\t}"}],"source_content_type":"text/x-go","patch_set":2,"id":"8f4cb138_2176efc0","line":149,"range":{"start_line":149,"start_character":20,"end_line":149,"end_character":33},"in_reply_to":"9c893af3_af52261d","updated":"2023-04-13 12:44:20.000000000","message":"I checked and you\u0027re indeed right. In fact there is no way to signal processes unless you\u0027re using","commit_id":"bf63bb178911ffd6f742a85322b8dac0cddee413"},{"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":"acf1cbbbad4861f1076ad5e59ffe43263242b52e","unresolved":true,"context_lines":[{"line_number":155,"context_line":"\t// reload might be in progress. Doing it this way saves a significant amount"},{"line_number":156,"context_line":"\t// of complexity."},{"line_number":157,"context_line":"\tselect {"},{"line_number":158,"context_line":"\tcase s.signalChan \u003c- unix.SIGUSR1:"},{"line_number":159,"context_line":"\tdefault:"},{"line_number":160,"context_line":"\t\tsupervisor.Logger(ctx).Infof(\"Reload signal could not be sent, relying on restart/reload to pick up changes\")"},{"line_number":161,"context_line":"\t}"}],"source_content_type":"text/x-go","patch_set":5,"id":"09f540ec_e96f5c8f","line":158,"range":{"start_line":158,"start_character":1,"end_line":158,"end_character":35},"updated":"2023-04-13 14:16:07.000000000","message":"This can block forever with the current implementation of supervisor.SignalChan. Adding a `case \u003c-ctx.Done(): return` might be a good enough fix.","commit_id":"a0cda06de59aedd9c764e3341f73d196ada40a8f"},{"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":"bbb7ffacc0f736650cbb736f36839b087e4414de","unresolved":true,"context_lines":[{"line_number":155,"context_line":"\t// reload might be in progress. Doing it this way saves a significant amount"},{"line_number":156,"context_line":"\t// of complexity."},{"line_number":157,"context_line":"\tselect {"},{"line_number":158,"context_line":"\tcase s.signalChan \u003c- unix.SIGUSR1:"},{"line_number":159,"context_line":"\tdefault:"},{"line_number":160,"context_line":"\t\tsupervisor.Logger(ctx).Infof(\"Reload signal could not be sent, relying on restart/reload to pick up changes\")"},{"line_number":161,"context_line":"\t}"}],"source_content_type":"text/x-go","patch_set":5,"id":"a3b861f3_5e976021","line":158,"range":{"start_line":158,"start_character":1,"end_line":158,"end_character":35},"in_reply_to":"09f540ec_e96f5c8f","updated":"2023-04-13 15:35:44.000000000","message":"How? This doesn\u0027t wait at all.","commit_id":"a0cda06de59aedd9c764e3341f73d196ada40a8f"},{"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":"94f4c81572fce990431a4bb8193cdc422b355bfd","unresolved":false,"context_lines":[{"line_number":155,"context_line":"\t// reload might be in progress. Doing it this way saves a significant amount"},{"line_number":156,"context_line":"\t// of complexity."},{"line_number":157,"context_line":"\tselect {"},{"line_number":158,"context_line":"\tcase s.signalChan \u003c- unix.SIGUSR1:"},{"line_number":159,"context_line":"\tdefault:"},{"line_number":160,"context_line":"\t\tsupervisor.Logger(ctx).Infof(\"Reload signal could not be sent, relying on restart/reload to pick up changes\")"},{"line_number":161,"context_line":"\t}"}],"source_content_type":"text/x-go","patch_set":5,"id":"49cf8d8c_8478a8f0","line":158,"range":{"start_line":158,"start_character":1,"end_line":158,"end_character":35},"in_reply_to":"8e58f4e1_08bc17c6","updated":"2023-04-17 11:20:57.000000000","message":"Oh, there\u0027s a select block here. Nevermind.","commit_id":"a0cda06de59aedd9c764e3341f73d196ada40a8f"},{"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":"f13ac8907e65e8dbd2522e49652156e57cde459d","unresolved":true,"context_lines":[{"line_number":155,"context_line":"\t// reload might be in progress. Doing it this way saves a significant amount"},{"line_number":156,"context_line":"\t// of complexity."},{"line_number":157,"context_line":"\tselect {"},{"line_number":158,"context_line":"\tcase s.signalChan \u003c- unix.SIGUSR1:"},{"line_number":159,"context_line":"\tdefault:"},{"line_number":160,"context_line":"\t\tsupervisor.Logger(ctx).Infof(\"Reload signal could not be sent, relying on restart/reload to pick up changes\")"},{"line_number":161,"context_line":"\t}"}],"source_content_type":"text/x-go","patch_set":5,"id":"8e58f4e1_08bc17c6","line":158,"range":{"start_line":158,"start_character":1,"end_line":158,"end_character":35},"in_reply_to":"a3b861f3_5e976021","updated":"2023-04-17 10:51:22.000000000","message":"This will block until `RunCommand` reaches `case s :\u003d \u003c-signal:`. This can be delayed for example if:\n\n1. RunCommand keeps failing at `cmd.Start()` and never starts the actual signal receiving goroutine; or\n2. RunCommand exits with an error, stops the receiving goroutine and causes the runnable to go into backoff (or some other larger subtree backs off).\n\nA (transient) failure in coredns probably shouldn\u0027t also cause a cascading lockup in other subsystems interacting with it.","commit_id":"a0cda06de59aedd9c764e3341f73d196ada40a8f"}]}
