cache: add grpc read-only response caching
This commit is contained in:
+4
-3
@@ -139,10 +139,11 @@
|
||||
- `REST`
|
||||
- `security_level = standard`
|
||||
- `execution_config.response_cache` допускается только для:
|
||||
- `REST`
|
||||
- `GET`
|
||||
- или `GraphQL query`
|
||||
- `REST GET`
|
||||
- `GraphQL query`
|
||||
- `gRPC unary`, если `GrpcTarget.read_only = true`
|
||||
- операций без `auth_profile_ref`
|
||||
- операций без `streaming`
|
||||
- `execution_config.response_cache` не означает глобальный shared cache на все вызовы системы:
|
||||
- response cache должен быть изолирован минимум по `workspace + agent + operation + operation version + request fingerprint`
|
||||
- попытка создать, обновить или импортировать операцию с неподдерживаемым `protocol` или `security_level` должна завершаться `validation_error` еще на стороне `admin-api`, а не только скрываться в UI.
|
||||
|
||||
+8
-4
@@ -463,6 +463,7 @@
|
||||
- `package`
|
||||
- `service`
|
||||
- `method`
|
||||
- `read_only`
|
||||
- `descriptor_ref`
|
||||
- `descriptor_set_b64`
|
||||
|
||||
@@ -534,14 +535,17 @@
|
||||
|
||||
- policy задается явно на операции;
|
||||
- response cache допускается только для read-only вызовов;
|
||||
- в открытой редакции первый поддержанный путь:
|
||||
- `REST`
|
||||
- `GET`
|
||||
- без `auth_profile_ref`
|
||||
- текущие поддержанные пути:
|
||||
- `REST GET`
|
||||
- `GraphQL query`
|
||||
- `gRPC unary` только при `GrpcTarget.read_only = true`
|
||||
- все варианты только без `auth_profile_ref`
|
||||
- операции со `streaming` не допускают response cache даже при наличии policy;
|
||||
- cache key должен строиться не глобально, а минимум в контексте:
|
||||
- `workspace`
|
||||
- `agent`
|
||||
- `operation`
|
||||
- `operation version`
|
||||
- `request fingerprint`
|
||||
|
||||
Это позволяет избежать неявного кэширования ответов, зависящих от upstream credentials.
|
||||
|
||||
@@ -201,7 +201,8 @@
|
||||
- response cache уже покрывает:
|
||||
- `REST GET` как Community baseline;
|
||||
- `GraphQL query` как первый коммерчески ценный read-only protocol path.
|
||||
- дальнейшее расширение response cache идет только по явно обоснованным read-only сценариям, начиная с `gRPC unary`, а не как общий cache для всех протоколов подряд.
|
||||
- `gRPC unary` для явно read-only операций через `GrpcTarget.read_only`.
|
||||
- дальнейшее расширение response cache идет только по отдельно обоснованным read-only сценариям, а не как общий cache для всех протоколов подряд.
|
||||
|
||||
## 14. Этап 11. Live staging and demo readiness
|
||||
|
||||
|
||||
@@ -240,7 +240,9 @@ Crank должен корректно работать, если MCP client де
|
||||
- если операция явно включает `execution_config.response_cache`, текущий поддержанный runtime path ограничен:
|
||||
- `REST GET`
|
||||
- `GraphQL query`
|
||||
- `gRPC unary` только при `GrpcTarget.read_only = true`
|
||||
- без `auth_profile_ref`
|
||||
- без `streaming`
|
||||
- cache keys изолируются минимум по `workspace + agent + operation + operation version + request fingerprint`
|
||||
- streaming operations публикуются как bounded tools или tool families;
|
||||
- reload published tools без пересборки сервиса;
|
||||
|
||||
@@ -187,9 +187,10 @@ Demo/deployment:
|
||||
|
||||
- `REST GET`;
|
||||
- `GraphQL query`.
|
||||
- `gRPC unary` только при `GrpcTarget.read_only = true`.
|
||||
|
||||
Это не означает автоматическое кэширование всех protocol families. Следующим кандидатом на расширение
|
||||
может быть только явно read-only `gRPC unary`.
|
||||
может быть только следующий отдельно обоснованный protocol path, а не "cache everything".
|
||||
|
||||
Эти контуры не должны смешивать ключи друг с другом.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user