)]}'
{"/PATCHSET_LEVEL":[{"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":"031b24960ce7e24d17b9a0f4da6c88806792c6b5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"d0579af0_b440fc6e","updated":"2021-08-05 10:04:04.000000000","message":"If there\u0027s any external resource available, such as a Github issue, please link it in the commit message.","commit_id":"646ef6c0eb6b51fc3b51f4ea003bb001f119163a"},{"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":"e5a1bc8304b7a32eb300b9a50e1e8ccf167ae78c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"ddc1b225_9d2d9260","updated":"2021-08-04 18:41:28.000000000","message":"Take a look at this. \n\nIn case you\u0027re not familiar with the curator codebase, start with //m/n/core/curator/curator.go, and let me know if things aren\u0027t still clear after that - I\u0027ll do a documentation pass then.","commit_id":"646ef6c0eb6b51fc3b51f4ea003bb001f119163a"}],"metropolis/node/core/curator/listener.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":"031b24960ce7e24d17b9a0f4da6c88806792c6b5","unresolved":true,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"// implementation is the interface containing all gRPC services that a curator"},{"line_number":108,"context_line":"// must implement."},{"line_number":109,"context_line":"type implementation interface {"},{"line_number":110,"context_line":"\tcpb.CuratorServer"},{"line_number":111,"context_line":"}"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-go","patch_set":7,"id":"a7aae456_1df17ae7","line":109,"updated":"2021-08-05 10:04:04.000000000","message":"Consider picking an agent noun to name this interface, even though it\u0027s more abstract than others. \u0027Handlers\u0027 could do.","commit_id":"646ef6c0eb6b51fc3b51f4ea003bb001f119163a"},{"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":"cc9ab0263bd00bf48a304cc81fd3bc8c23cf3c4d","unresolved":true,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"// implementation is the interface containing all gRPC services that a curator"},{"line_number":108,"context_line":"// must implement."},{"line_number":109,"context_line":"type implementation interface {"},{"line_number":110,"context_line":"\tcpb.CuratorServer"},{"line_number":111,"context_line":"}"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-go","patch_set":7,"id":"d9e60a27_fd59564b","line":109,"in_reply_to":"a7aae456_1df17ae7","updated":"2021-08-05 12:13:43.000000000","message":"Would \u0027services\u0027 work? I can also do \u0027handlers\u0027, but I think I prefer \u0027services\u0027.","commit_id":"646ef6c0eb6b51fc3b51f4ea003bb001f119163a"},{"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":"f4c424af30869f125ec55bc6b10b0df5a22468f0","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"// implementation is the interface containing all gRPC services that a curator"},{"line_number":108,"context_line":"// must implement."},{"line_number":109,"context_line":"type implementation interface {"},{"line_number":110,"context_line":"\tcpb.CuratorServer"},{"line_number":111,"context_line":"}"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-go","patch_set":7,"id":"e7e4e037_526ffa9a","line":109,"in_reply_to":"d9e60a27_fd59564b","updated":"2021-08-05 13:56:03.000000000","message":"Ack","commit_id":"646ef6c0eb6b51fc3b51f4ea003bb001f119163a"},{"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":"031b24960ce7e24d17b9a0f4da6c88806792c6b5","unresolved":true,"context_lines":[{"line_number":221,"context_line":"//"},{"line_number":222,"context_line":"// It is effectively a helper wrapper used by the Curator implementation of the"},{"line_number":223,"context_line":"// listener to run the RPC against the active listenerTarget."},{"line_number":224,"context_line":"func (l *listener) callImpl(ctx context.Context, f func(ctx context.Context, impl implementation) error) error {"},{"line_number":225,"context_line":"\tlt, err :\u003d l.dispatch(ctx)"},{"line_number":226,"context_line":"\t// dispatch will only return errors on context cancellations."},{"line_number":227,"context_line":"\tif err !\u003d nil {"}],"source_content_type":"text/x-go","patch_set":7,"id":"5cbb42f9_8c315b0a","line":224,"updated":"2021-08-05 10:04:04.000000000","message":"I\u0027d rather have an agent noun style type alias defined for function literal arguments. \u0027Operation\u0027?","commit_id":"646ef6c0eb6b51fc3b51f4ea003bb001f119163a"},{"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":"cc9ab0263bd00bf48a304cc81fd3bc8c23cf3c4d","unresolved":false,"context_lines":[{"line_number":221,"context_line":"//"},{"line_number":222,"context_line":"// It is effectively a helper wrapper used by the Curator implementation of the"},{"line_number":223,"context_line":"// listener to run the RPC against the active listenerTarget."},{"line_number":224,"context_line":"func (l *listener) callImpl(ctx context.Context, f func(ctx context.Context, impl implementation) error) error {"},{"line_number":225,"context_line":"\tlt, err :\u003d l.dispatch(ctx)"},{"line_number":226,"context_line":"\t// dispatch will only return errors on context cancellations."},{"line_number":227,"context_line":"\tif err !\u003d nil {"}],"source_content_type":"text/x-go","patch_set":7,"id":"38168e3a_f78cf612","line":224,"in_reply_to":"5cbb42f9_8c315b0a","updated":"2021-08-05 12:13:43.000000000","message":"Done","commit_id":"646ef6c0eb6b51fc3b51f4ea003bb001f119163a"},{"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":"031b24960ce7e24d17b9a0f4da6c88806792c6b5","unresolved":true,"context_lines":[{"line_number":271,"context_line":"// Watch implements the Watch RPC from Curator by dispatching it against the"},{"line_number":272,"context_line":"// correct implementation for this curator instance."},{"line_number":273,"context_line":"func (l *listener) Watch(req *cpb.WatchRequest, srv cpb.Curator_WatchServer) error {"},{"line_number":274,"context_line":"\treturn l.callImpl(srv.Context(), func(ctx context.Context, impl implementation) error {"},{"line_number":275,"context_line":"\t\treturn impl.Watch(req, \u0026curatorWatchServer{"},{"line_number":276,"context_line":"\t\t\tServerStream: srv,"},{"line_number":277,"context_line":"\t\t\tctx:          ctx,"}],"source_content_type":"text/x-go","patch_set":7,"id":"723b557b_7a76aa9c","line":274,"updated":"2021-08-05 10:04:04.000000000","message":"Assigning this lambda to a local variable before calling could improve readability.","commit_id":"646ef6c0eb6b51fc3b51f4ea003bb001f119163a"},{"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":"df3db87cd29104e810f640bfda12d2b8d51c5068","unresolved":false,"context_lines":[{"line_number":271,"context_line":"// Watch implements the Watch RPC from Curator by dispatching it against the"},{"line_number":272,"context_line":"// correct implementation for this curator instance."},{"line_number":273,"context_line":"func (l *listener) Watch(req *cpb.WatchRequest, srv cpb.Curator_WatchServer) error {"},{"line_number":274,"context_line":"\treturn l.callImpl(srv.Context(), func(ctx context.Context, impl implementation) error {"},{"line_number":275,"context_line":"\t\treturn impl.Watch(req, \u0026curatorWatchServer{"},{"line_number":276,"context_line":"\t\t\tServerStream: srv,"},{"line_number":277,"context_line":"\t\t\tctx:          ctx,"}],"source_content_type":"text/x-go","patch_set":7,"id":"b42422d0_9ac5fb3b","line":274,"in_reply_to":"29a4a4de_439f05da","updated":"2021-08-17 14:24:25.000000000","message":"Done","commit_id":"646ef6c0eb6b51fc3b51f4ea003bb001f119163a"},{"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":"cc9ab0263bd00bf48a304cc81fd3bc8c23cf3c4d","unresolved":true,"context_lines":[{"line_number":271,"context_line":"// Watch implements the Watch RPC from Curator by dispatching it against the"},{"line_number":272,"context_line":"// correct implementation for this curator instance."},{"line_number":273,"context_line":"func (l *listener) Watch(req *cpb.WatchRequest, srv cpb.Curator_WatchServer) error {"},{"line_number":274,"context_line":"\treturn l.callImpl(srv.Context(), func(ctx context.Context, impl implementation) error {"},{"line_number":275,"context_line":"\t\treturn impl.Watch(req, \u0026curatorWatchServer{"},{"line_number":276,"context_line":"\t\t\tServerStream: srv,"},{"line_number":277,"context_line":"\t\t\tctx:          ctx,"}],"source_content_type":"text/x-go","patch_set":7,"id":"944f9961_61912cea","line":274,"in_reply_to":"723b557b_7a76aa9c","updated":"2021-08-05 12:13:43.000000000","message":"This method is a shim: it implements the Watch RPC and does a further call into the actual Watch implementation in either curatorLeader or curatorFollower.\n\nThe idea was to keep these shims as short and uniform as possible, as more will have to be implemented for each RPC, and at some point we\u0027ll probably either autogenerate them or replace with with some Go-type-parameter-based.\n\nWould noting this in the code as a comment make it clearer, or do you prefer the refactor? Is it more about syntactic overload (foo.bar(func baz() error { })...) or semantic overload (the fact that this is a shim and that isn\u0027t well explained)?","commit_id":"646ef6c0eb6b51fc3b51f4ea003bb001f119163a"},{"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":"f4c424af30869f125ec55bc6b10b0df5a22468f0","unresolved":true,"context_lines":[{"line_number":271,"context_line":"// Watch implements the Watch RPC from Curator by dispatching it against the"},{"line_number":272,"context_line":"// correct implementation for this curator instance."},{"line_number":273,"context_line":"func (l *listener) Watch(req *cpb.WatchRequest, srv cpb.Curator_WatchServer) error {"},{"line_number":274,"context_line":"\treturn l.callImpl(srv.Context(), func(ctx context.Context, impl implementation) error {"},{"line_number":275,"context_line":"\t\treturn impl.Watch(req, \u0026curatorWatchServer{"},{"line_number":276,"context_line":"\t\t\tServerStream: srv,"},{"line_number":277,"context_line":"\t\t\tctx:          ctx,"}],"source_content_type":"text/x-go","patch_set":7,"id":"29a4a4de_439f05da","line":274,"in_reply_to":"944f9961_61912cea","updated":"2021-08-05 13:56:03.000000000","message":"\u003e Would noting this in the code as a comment make it clearer, or do you prefer the refactor? Is it more about syntactic overload (foo.bar(func baz() error { })...) or semantic overload (the fact that this is a shim and that isn\u0027t well explained)?\n\nSyntactic, but I also prefer code that\u0027s self-explanatory to comments, Golang style aside (eg. through a named lambda being passed as an argument here). This way I don\u0027t have to second guess the comments while debugging. I\u0027d use \u0027proxy\u0027 if you\u0027ll decide to go this way. I don\u0027t have a strong opinion here.","commit_id":"646ef6c0eb6b51fc3b51f4ea003bb001f119163a"},{"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":"3f7836d9c4966279ff0de1547acde906026159fa","unresolved":true,"context_lines":[{"line_number":221,"context_line":"}"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"// implOperation is a function passed to callImpl by a listener RPC shim. It"},{"line_number":224,"context_line":"// sets up and calls the appropriate RPC for the shim that is it\u0027s being usd in."},{"line_number":225,"context_line":"//"},{"line_number":226,"context_line":"// Each gRPC service exposed by the Curator is implemented directly on the"},{"line_number":227,"context_line":"// listener as a shim, and that shim uses callImpl to execute the correct,"}],"source_content_type":"text/x-go","patch_set":8,"id":"c6f437f0_c9462175","line":224,"updated":"2021-08-05 14:19:53.000000000","message":"typo","commit_id":"b328dcd726404b74cbab62dc9ad74a6e0f8aa04f"},{"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":"df3db87cd29104e810f640bfda12d2b8d51c5068","unresolved":false,"context_lines":[{"line_number":221,"context_line":"}"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"// implOperation is a function passed to callImpl by a listener RPC shim. It"},{"line_number":224,"context_line":"// sets up and calls the appropriate RPC for the shim that is it\u0027s being usd in."},{"line_number":225,"context_line":"//"},{"line_number":226,"context_line":"// Each gRPC service exposed by the Curator is implemented directly on the"},{"line_number":227,"context_line":"// listener as a shim, and that shim uses callImpl to execute the correct,"}],"source_content_type":"text/x-go","patch_set":8,"id":"74459a7e_5f2be2d4","line":224,"in_reply_to":"c6f437f0_c9462175","updated":"2021-08-17 14:24:25.000000000","message":"Done","commit_id":"b328dcd726404b74cbab62dc9ad74a6e0f8aa04f"}]}
