Graceful shutdown (Phase 6.4): - Listen for SIGTERM + SIGINT via tokio::signal - Configurable drain timeout (--drain-timeout / QPQ_DRAIN_TIMEOUT, default 30s) - Health endpoint returns "draining" during shutdown for load balancer awareness - ServerState carries atomic draining flag - Add RpcStatus::Unavailable (9) for shutdown-related rejections Per-RPC timeouts (Phase 6.5): - Add RpcStatus::DeadlineExceeded (8) for server-side timeouts - MethodRegistry supports default_timeout and per-method timeout overrides - RPC dispatch wraps handler invocation with tokio::time::timeout - RequestContext carries optional deadline (Instant) for handlers - Health: 5s timeout, blob upload/download: 120s timeout, default: 30s - Config: --rpc-timeout / QPQ_RPC_TIMEOUT, --storage-timeout / QPQ_STORAGE_TIMEOUT
29 lines
893 B
TOML
29 lines
893 B
TOML
[package]
|
|
name = "quicproquo-rpc"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
description = "QUIC RPC framework for quicproquo v2 — framing, dispatch, tower middleware"
|
|
|
|
[dependencies]
|
|
quicproquo-proto = { path = "../quicproquo-proto" }
|
|
prost = { workspace = true }
|
|
bytes = { workspace = true }
|
|
quinn = { workspace = true }
|
|
rustls = { workspace = true }
|
|
rcgen = { workspace = true }
|
|
tokio = { workspace = true }
|
|
futures = { workspace = true }
|
|
tower = { workspace = true }
|
|
tracing = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
dashmap = { workspace = true }
|
|
sha2 = { workspace = true }
|
|
uuid = { version = "1", features = ["v7"] }
|
|
metrics = "0.22"
|
|
|
|
[dev-dependencies]
|
|
tokio = { workspace = true, features = ["test-util"] }
|
|
|
|
[lints]
|
|
workspace = true
|