mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-10-26 13:46:23 +00:00
* test(mito2): cover regex inverted index pruning Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com> * build: keep build inputs checkout-relative for cross-worktree cache reuse Two small changes so compilations are byte-identical across worktrees of the same commit and can share a build cache (mbx, sccache): - src/common/version/build.rs: derive the workspace root relative to CARGO_MANIFEST_DIR instead of the CARGO_WORKSPACE_DIR injected by .cargo/config.toml (an absolute path). The env var remains as an explicit override for the submodule case; the [env] injection in .cargo/config.toml is removed so the relative derivation is used by default. - Replace three env!("CARGO_MANIFEST_DIR") uses in test/bench code (servers prom_decode bench + decode test, common-meta test_util) with a runtime std::env::var lookup, so the compiled artifact no longer embeds the checkout path. No behavior change: same files are read, same version info emitted. Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com> * build: address cross-worktree cache review feedback Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com> --------- Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>
2.6 KiB
2.6 KiB
common-meta — Agent & Contributor Guide
Navigation map for src/common/meta. Repo-wide invariants:
.agents/architecture-invariants.md.
common-meta contains shared metadata keys and values, KV backends, caches,
and durable DDL procedures. Metasrv process and service wiring live in
src/meta-srv.
Module map
| Area | Path | Entry point |
|---|---|---|
| Metadata model | src/common/meta/src/key.rs, src/common/meta/src/key/ |
Typed keys, values, and TableMetadataManager |
| KV storage | src/common/meta/src/kv_backend.rs, src/common/meta/src/kv_backend/ |
KvBackend, transactions, memory/etcd/RDS backends |
| DDL procedures | src/common/meta/src/ddl.rs, src/common/meta/src/ddl/, src/common/meta/src/ddl_manager.rs |
Durable DDL state machines and task dispatch |
| Caches | src/common/meta/src/cache.rs, src/common/meta/src/cache/, src/common/meta/src/cache_invalidator.rs |
Metadata caches and invalidation |
| RPC types | src/common/meta/src/rpc.rs, src/common/meta/src/rpc/ |
Shared metasrv request/response types |
| Recovery | src/common/meta/src/reconciliation.rs, src/common/meta/src/reconciliation/ |
Catalog/table/region reconciliation |
Change coupling
- Key/value encoding changes require backward-compatible decoding and a case in
tests/compatibility/. - Multi-key metadata changes must preserve transaction boundaries and cache invalidation.
- Procedure changes must preserve persisted state and
TYPE_NAME; new procedures need loader registration insrc/common/meta/src/ddl_manager.rs. - Marker-style table options that no region consumes (
greptime.semantic.*,repartition.column.hint) go throughAnnotationFamilyinsrc/table/src/requests.rs— classification, validation, logical-table eligibility, and the metadata-only alter flow come with it. Do not add per-option special cases to the alter conversion or DDL routing. KvBackendbehavior changes should extend the shared tests insrc/common/meta/src/kv_backend/test.rs.
Testing
cargo nextest run -p common-meta
Backend-specific coverage may also need pg_kvbackend or mysql_kvbackend.
test_util::etcd_certs_dir and test_util::test_certs_dir resolve fixture
certificates using CARGO_MANIFEST_DIR at run time (std::env::var, not env!).
cargo nextest run sets it; direct test-binary execution requires setting the
variable to the crate directory. Run this example from the repository root:
CARGO_MANIFEST_DIR="$PWD/src/common/meta" ./target/debug/deps/<test_binary>