Skip to content

refactor: flatten kvapi crate by removing redundant kvapi/ subdirectory#62

Merged
drmingdrmer merged 1 commit intodatabendlabs:mainfrom
drmingdrmer:025-dir-layout
Feb 21, 2026
Merged

refactor: flatten kvapi crate by removing redundant kvapi/ subdirectory#62
drmingdrmer merged 1 commit intodatabendlabs:mainfrom
drmingdrmer:025-dir-layout

Conversation

@drmingdrmer
Copy link
Member

Changelog

refactor: flatten kvapi crate by removing redundant kvapi/ subdirectory

The kvapi crate had a redundant nesting layer where src/lib.rs declared
a single pub mod kvapi mapping to src/kvapi/mod.rs. This forced callers
to write databend_meta_kvapi::kvapi::Key instead of databend_meta_kvapi::Key.

All 15 source files are moved from src/kvapi/ to src/, and kvapi/mod.rs
is merged into lib.rs. Internal use crate::kvapi::X imports become
use crate::X; files that used the bare use crate::kvapi module alias
switch to use crate as kvapi to preserve unqualified kvapi::KVApi syntax
in trait bounds and impl blocks. External consumers follow the same pattern:
databend_meta_kvapi::kvapi::Xdatabend_meta_kvapi::X.


  • Improvement

The `kvapi` crate had a redundant nesting layer where `src/lib.rs` declared
a single `pub mod kvapi` mapping to `src/kvapi/mod.rs`. This forced callers
to write `databend_meta_kvapi::kvapi::Key` instead of `databend_meta_kvapi::Key`.

All 15 source files are moved from `src/kvapi/` to `src/`, and `kvapi/mod.rs`
is merged into `lib.rs`. Internal `use crate::kvapi::X` imports become
`use crate::X`; files that used the bare `use crate::kvapi` module alias
switch to `use crate as kvapi` to preserve unqualified `kvapi::KVApi` syntax
in trait bounds and impl blocks. External consumers follow the same pattern:
`databend_meta_kvapi::kvapi::X` → `databend_meta_kvapi::X`.
Copilot AI review requested due to automatic review settings February 21, 2026 03:08
Copy link
Collaborator

@xp-trumpet xp-trumpet left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@xp-trumpet partially reviewed 41 files and all commit messages.
Reviewable status: :shipit: complete! all files reviewed, all discussions resolved (waiting on drmingdrmer).

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Flattens the databend-meta-kvapi crate’s module layout by removing the redundant kvapi/ nesting, and updates in-repo consumers to use the new top-level exports (e.g. databend_meta_kvapi::KVApi instead of databend_meta_kvapi::kvapi::KVApi).

Changes:

  • Replace pub mod kvapi indirection with a flat crate root (src/lib.rs now declares modules and re-exports public API directly).
  • Update imports across server/client crates and integration tests to the new databend_meta_kvapi::* paths (or use databend_meta_kvapi as kvapi where a kvapi::... qualifier is desired).
  • Move previously nested items (e.g. message, list_options) to top-level modules and re-export them from the crate root.

Reviewed changes

Copilot reviewed 39 out of 41 changed files in this pull request and generated no comments.

Show a summary per file
File Description
crates/server/service/tests/it/meta_node/t90_time_revert_cross_snapshot_boundary.rs Update KvApiExt import to new top-level path.
crates/server/service/tests/it/meta_node/meta_node_lifecycle.rs Update KvApiExt import to new top-level path.
crates/server/service/tests/it/meta_node/meta_node_kv_api_expire.rs Update KvApiExt import to new top-level path.
crates/server/service/tests/it/grpc/t53_metasrv_grpc_snapshot_keys_layout.rs Update KvApiExt import to new top-level path.
crates/server/service/tests/it/grpc/metasrv_grpc_watch.rs Update KvApiExt import to new top-level path.
crates/server/service/tests/it/grpc/metasrv_grpc_kv_transaction.rs Update KvApiExt import to new top-level path.
crates/server/service/tests/it/grpc/metasrv_grpc_kv_read_v1.rs Update KvApiExt import to new top-level path.
crates/server/service/tests/it/grpc/metasrv_grpc_kv_list.rs Update KvApiExt import to new top-level path.
crates/server/service/tests/it/grpc/metasrv_grpc_kv_get_many.rs Update KvApiExt import to new top-level path.
crates/server/service/tests/it/grpc/metasrv_grpc_kv_api_restart_cluster.rs Update KvApiExt import to new top-level path.
crates/server/service/tests/it/grpc/metasrv_grpc_export.rs Update KvApiExt import to new top-level path.
crates/server/service/tests/it/grpc/metasrv_grpc_api.rs Update KvApiExt / UpsertKVReply imports to new top-level paths.
crates/server/service/tests/it/grpc/metasrv_connection_error.rs Update KvApiExt import to new top-level path.
crates/server/service/src/meta_service/meta_leader.rs Update KVApi, KvApiExt, ListOptions imports to new top-level paths.
crates/server/service/src/meta_node/meta_handle.rs Update UpsertKVReply import to new top-level path.
crates/server/service/src/message.rs Update request/reply type imports (GetKVReq, ListKVReq, etc.) to new top-level paths.
crates/server/raft-store/src/sm_v003/sm_v003_test.rs Update KVApi / ListOptions imports to new top-level paths.
crates/server/raft-store/src/sm_v003/sm_v003_kv_api.rs Switch to use databend_meta_kvapi as kvapi and update helper/type imports to top-level.
crates/client/kvapi/src/value_with_name.rs Replace use crate::kvapi with use crate as kvapi after flattening.
crates/client/kvapi/src/value.rs Replace use crate::kvapi with use crate as kvapi after flattening.
crates/client/kvapi/src/testing.rs Update intra-crate imports to flattened module layout.
crates/client/kvapi/src/pair.rs Replace use crate::kvapi with use crate as kvapi after flattening.
crates/client/kvapi/src/message.rs New top-level message/request/reply types module (moved out of nested kvapi/).
crates/client/kvapi/src/list_options.rs New top-level ListOptions module (moved out of nested kvapi/).
crates/client/kvapi/src/lib.rs Replace pub mod kvapi; with direct module declarations + pub use re-exports.
crates/client/kvapi/src/kvapi/mod.rs Remove old nested kvapi module root.
crates/client/kvapi/src/kv_api_ext.rs Update imports and test module to flattened paths.
crates/client/kvapi/src/key_parser.rs Update helper/type imports to flattened module layout.
crates/client/kvapi/src/key_codec.rs Update imports to flattened module layout.
crates/client/kvapi/src/key_builder.rs Update helper imports and test import paths to flattened module layout.
crates/client/kvapi/src/key.rs Update imports and test imports to flattened module layout.
crates/client/kvapi/src/item.rs Update Key import to new top-level path.
crates/client/kvapi/src/helper.rs Update KeyError import to new top-level path.
crates/client/kvapi/src/dir_name.rs Update imports and test imports to flattened module layout.
crates/client/kvapi/src/api.rs Update ListOptions import and keep kvapi::KVApi naming via use crate as kvapi.
crates/client/kvapi-tests/tests/it/metasrv_builder.rs Switch to use databend_meta_kvapi as kvapi alias.
crates/client/kvapi-test-suite/src/kvapi_test_suite.rs Switch to use databend_meta_kvapi as kvapi alias; update KVStream import.
crates/client/client/tests/it/grpc_client.rs Update KvApiExt import to new top-level path.
crates/client/client/src/kvapi_impl.rs Switch to use databend_meta_kvapi as kvapi alias and update helper/type imports.
crates/client/client/src/grpc_client.rs Update fail_fast import to new top-level path.
crates/client/client/src/client_handle.rs Update KVStream return type to new top-level path.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@drmingdrmer drmingdrmer added this pull request to the merge queue Feb 21, 2026
Merged via the queue into databendlabs:main with commit 1868cec Feb 21, 2026
7 checks passed
@drmingdrmer drmingdrmer deleted the 025-dir-layout branch February 21, 2026 03:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants