Skip to content

Commit cf80a55

Browse files
committed
feat(service): mark GetStatus, GetStatuses, ListServices as NO_SIDE_EFFECTS
Annotate the three read-only methods on service.v1.ServiceManager with idempotency_level = NO_SIDE_EFFECTS so Connect-RPC handlers accept HTTP GET for them. The service plugin's read endpoints can then sit behind CDN/proxy caches and be probed from cacheable URLs. CreateService, Terminate, Restart stay POST-only — each mutates the service plugin's process table. Additive proto change; existing POST clients keep working.
1 parent 8399265 commit cf80a55

1 file changed

Lines changed: 9 additions & 3 deletions

File tree

roadrunner/api/service/v1/service_rpc.proto

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,13 @@ service ServiceManager {
1515
rpc CreateService(Create) returns (Response);
1616
rpc Terminate(Service) returns (Response);
1717
rpc Restart(Service) returns (Response);
18-
rpc GetStatus(Service) returns (Status);
19-
rpc GetStatuses(Service) returns (Statuses);
20-
rpc ListServices(Service) returns (List);
18+
rpc GetStatus(Service) returns (Status) {
19+
option idempotency_level = NO_SIDE_EFFECTS;
20+
}
21+
rpc GetStatuses(Service) returns (Statuses) {
22+
option idempotency_level = NO_SIDE_EFFECTS;
23+
}
24+
rpc ListServices(Service) returns (List) {
25+
option idempotency_level = NO_SIDE_EFFECTS;
26+
}
2127
}

0 commit comments

Comments
 (0)