mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-10-12 23:12:28 +00:00
* perf: cache OTLP trace service and operation writes Signed-off-by: shuiyisong <xixing.sys@gmail.com> * chore: fix CR issues for tests Signed-off-by: shuiyisong <xixing.sys@gmail.com> * fix: bound asynchronous trace auxiliary writes Signed-off-by: shuiyisong <xixing.sys@gmail.com> * perf: bound trace auxiliary cache by estimated memory Signed-off-by: shuiyisong <xixing.sys@gmail.com> * chore: size trace auxiliary cache from host or pod memory Signed-off-by: shuiyisong <xixing.sys@gmail.com> * chore: add metrics for cache hit and miss Signed-off-by: shuiyisong <xixing.sys@gmail.com> * fix: test Signed-off-by: shuiyisong <xixing.sys@gmail.com> * chore: unify frontend cache metrics Signed-off-by: shuiyisong <xixing.sys@gmail.com> * test: merge and reduce Signed-off-by: shuiyisong <xixing.sys@gmail.com> * chore: add init for the metrics Signed-off-by: shuiyisong <xixing.sys@gmail.com> --------- Signed-off-by: shuiyisong <xixing.sys@gmail.com>
2.4 KiB
2.4 KiB
servers — Agent & Contributor Guide
Navigation map for src/servers. Repo-wide invariants:
.agents/architecture-invariants.md.
servers owns network listeners and protocol translation. Database behavior is
provided through handler traits, mostly implemented by frontend.
Module map
| Area | Path | Entry point |
|---|---|---|
| Lifecycle | src/servers/src/server.rs |
Shared Server trait |
| Handler boundary | src/servers/src/query_handler.rs, src/servers/src/query_handler/ |
Protocol-independent handler traits |
| gRPC / Flight | src/servers/src/grpc.rs, src/servers/src/grpc/ |
gRPC services, auth, cancellation, builders |
| HTTP | src/servers/src/http.rs, src/servers/src/http/ |
Routes, middleware, protocol endpoints, output formats |
| SQL protocols | src/servers/src/mysql.rs, src/servers/src/mysql/, src/servers/src/postgres.rs, src/servers/src/postgres/ |
MySQL/PostgreSQL servers and type conversion |
| Observability protocols | src/servers/src/prom_remote_write/, src/servers/src/prometheus.rs, src/servers/src/otlp/, src/servers/src/otel_arrow.rs |
Prometheus and OpenTelemetry conversion |
| Resources / TLS | src/servers/src/request_memory_limiter.rs, src/servers/src/tls.rs, src/servers/src/addrs.rs |
Memory admission, TLS, listener addresses |
Change coupling
- Handler trait changes require matching frontend and mock implementations.
- gRPC wire changes start in
greptime-proto; update builders and handlers here after bumping it. - Auth or
QueryContextchanges must cover HTTP, gRPC, MySQL, and PostgreSQL entry points. - Internal frontend gRPC listeners set
Channel::Internalin server-owned request extensions. Handlers preserve it through query execution and metering; client flow metadata does not grant an internal channel. - Finite requests split by wire handlers (Prometheus batching and OpenTSDB
summary/details) admit all rows before dispatch. Admission is process-local
QueryContextstate; never accept it from headers or serialized contexts. - New protocols or externally visible routes also require frontend service and configuration wiring.
Testing
cargo nextest run -p servers
Keep protocol translation here and permissions/database behavior in frontend. Async table batching returns storage-completion futures with its early acknowledgements. Keep completion reporting independent of the caller's lifetime.