transport: complete M0–M7
shared: add stream+consumer policy helpers; NATS context header builder aggregate/runner/projection: centralize stream validation and header usage; set bounded consumer params projection: add QueryService gRPC and wire into main; settings include PROJECTION_GRPC_ADDR gateway: gRPC routing to Projection/Runner with deadlines; bounded read-only retries; pooled gRPC channels (bounded LRU+TTL); admin proxy forwards to gRPC; probes use concurrency limiter + TTL cache runner: add RunnerAdmin gRPC server (drain, status, reload) and wire into main; settings include RUNNER_GRPC_ADDR tests: add gateway authz for runner admin, projection tenant isolation, runner admin drain semantics docs: update TRANSPORT_DEVELOPMENT_PLAN to reflect completed milestones and details
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
pub const TENANT_ID_METADATA_KEY: &str = "x-tenant-id";
|
||||
pub const CORRELATION_ID_METADATA_KEY: &str = "x-correlation-id";
|
||||
pub const TRACEPARENT_METADATA_KEY: &str = "traceparent";
|
||||
pub const TENANT_ID_METADATA_KEY: &str = shared::HEADER_X_TENANT_ID;
|
||||
pub const CORRELATION_ID_METADATA_KEY: &str = shared::HEADER_X_CORRELATION_ID;
|
||||
pub const TRACEPARENT_METADATA_KEY: &str = shared::HEADER_TRACEPARENT;
|
||||
|
||||
pub mod proto {
|
||||
tonic::include_proto!("aggregate.gateway.v1");
|
||||
@@ -47,7 +47,7 @@ impl GatewayClient {
|
||||
let correlation_id = grpc_request
|
||||
.get_ref()
|
||||
.metadata
|
||||
.get("x-correlation-id")
|
||||
.get(shared::HEADER_X_CORRELATION_ID)
|
||||
.or_else(|| grpc_request.get_ref().metadata.get("correlation_id"))
|
||||
.map(|s| s.trim())
|
||||
.filter(|s| !s.is_empty())
|
||||
@@ -68,7 +68,7 @@ impl GatewayClient {
|
||||
let traceparent = grpc_request
|
||||
.get_ref()
|
||||
.metadata
|
||||
.get("traceparent")
|
||||
.get(shared::HEADER_TRACEPARENT)
|
||||
.map(|s| s.trim())
|
||||
.filter(|s| !s.is_empty())
|
||||
.map(|s| s.to_string())
|
||||
@@ -78,10 +78,8 @@ impl GatewayClient {
|
||||
.metadata
|
||||
.get("trace_id")
|
||||
.map(|s| s.trim())
|
||||
.filter(|s| s.len() == 32 && s.chars().all(|c| c.is_ascii_hexdigit()))
|
||||
.map(|trace_id| {
|
||||
let span_id = uuid::Uuid::new_v4().simple().to_string()[..16].to_string();
|
||||
format!("00-{trace_id}-{span_id}-01")
|
||||
.and_then(|trace_id| {
|
||||
shared::traceparent_from_trace_id(&shared::TraceId::new(trace_id))
|
||||
})
|
||||
});
|
||||
if let Some(traceparent) = traceparent {
|
||||
|
||||
Reference in New Issue
Block a user