Closed WenyXu closed 1 day ago
The changes introduced a new module cluster
with caching functionalities for FlownodeId
to Peer
mappings. This involves creating a FlownodePeerCache
and associated utilities for cache management and invalidation. Modifications span multiple files to integrate this new cache, updating error handling, and enhancing the Meta
client and server components to support the new capabilities.
Files | Change Summary |
---|---|
src/.../cache.rs |
Added a new cluster module and exposed caching entities publicly. |
src/.../cache/cluster.rs |
Introduced a flownode module and exported FlownodePeerCache and associated functions. |
src/.../cache/cluster/flownode.rs |
Defined FlownodePeerCache and related functions for cache management and invalidation. |
src/.../cache_invalidator.rs |
Added handling for CacheIdent::FlownodeId(_) indicating no caching in the KvBackend. |
src/.../cluster.rs |
Introduced methods to handle FlownodeId , adjusted error handling, and updated list_nodes return type. |
src/.../error.rs |
Modified error variants and handling to support new GetClusterInfo error. |
src/.../instruction.rs |
Added FlownodeId variant to CacheIdent enum. |
src/frontend/src/instance/builder.rs |
Added flownode_peer_cache initialization in FrontendBuilder . |
src/meta-client/src/client.rs |
Modified list_nodes to return a boxed error and added new get_flownode async function. |
src/meta-srv/src/metasrv.rs |
Introduced cache_invalidator field and method in the Metasrv struct. |
src/meta-srv/src/metasrv/builder.rs |
Modified the initialization process to clone and add cache_invalidator . |
src/meta-srv/src/service/heartbeat.rs |
Updated register_pusher function for cache invalidation handling specific roles like Flownode . |
src/operator/src/insert.rs |
Added FlownodePeerCacheRef to Inserter with corresponding constructor modifications. |
src/cache/src/lib.rs |
Renamed and added functions and constants related to FlownodePeerCache and customized cache registry building. |
src/cmd/src/frontend.rs |
Updated cache registry initialization to include new cache building logic with build_fundamental_cache_registry_with . |
src/frontend/src/instance.rs |
Added enable_access_cluster_info() method to MetaClientBuilder configuration in Instance struct implementation. |
sequenceDiagram
participant Client
participant MetaSrv
participant Cache
participant ClusterInfo
Client->>MetaSrv: Request Peer Info for FlownodeId
MetaSrv->>Cache: Check FlownodePeerCache
Cache-->>MetaSrv: Cache Miss
MetaSrv->>ClusterInfo: Retrieve Flownode Peer Info
ClusterInfo-->>MetaSrv: Returned Peer Info
MetaSrv->>Cache: Update FlownodePeerCache
Cache-->>MetaSrv: Cache Updated
MetaSrv-->>Client: Return Peer Info
In the codebase, deep and wise,
A cache for flows now does arise,
With peers and nodes, it keeps in line,
Ensuring access, every time.
Hopping through functions, swift and clear,
Our data's home, forever near.
🐇💻✨
[!TIP]
AI model upgrade
## `gpt-4o` model for reviews and chat is now live OpenAI claims that this model is better at understanding and generating code than the previous models. Please join our [Discord Community](https://discord.com/invite/GsXnASn26c) to provide any feedback or to report any issues.
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?
Attention: Patch coverage is 54.54545%
with 80 lines
in your changes missing coverage. Please review.
Project coverage is 84.66%. Comparing base (
ef5d1a6
) to head (612ca28
). Report is 5 commits behind head on main.
Sorry for the late review., we cannot use cluster info for routing since it is unreliable to query peers by id from cluster info. I think we need something like the TableRoute https://github.com/GreptimeTeam/greptimedb/blob/efd3f04b7cebce642578cade12d6d6e8445bc358/src/common/meta/src/key/table_route.rs#L42
I hereby agree to the terms of the GreptimeDB CLA.
Refer to a related PR or issue link (optional)
What's changed and what's your intention?
get_flownode
method inClusterInfo
trait.FlownodePeerCache
Option<FlownodePeerCache>
toInserter
Checklist
Summary by CodeRabbit
New Features
FlownodeId
toPeer
mappings.Peer
information for Flownodes.Improvements
Refactor