Skip to content

Remove the manager and implement decentralized cluster architecture#367

Merged
CGodiksen merged 100 commits intomainfrom
dev/remove-manager
Dec 12, 2025
Merged

Remove the manager and implement decentralized cluster architecture#367
CGodiksen merged 100 commits intomainfrom
dev/remove-manager

Conversation

@CGodiksen
Copy link
Copy Markdown
Collaborator

Closes #363 by removing the manager and instead implementing a decentralized cluster architecture where we only have edge and cloud nodes. These nodes are responsible for keeping the database schema consistent themselves and use the remote object store as the single source of truth.

It should be noted that this PR includes the main changes that allow the cluster architecture to work and removes the manager crate. Some optimizations and features have not been implemented yet but are mentioned in #366 as future work.

The following is a non-exhaustive list of the changes that have been made in this PR to make it easier to get an overview:

  1. Updated the startup process for server nodes to no longer depend on the manager.
  2. Moved cluster related metadata functionality from manager to DataFolder module.
  3. Created a Cluster struct in the server that is responsible for all cluster related functionality such as communicating with peer nodes and handling database initialization.
  4. Moved get_flight_info() from manager remote to server remote.
  5. Updated handling of creating and dropping tables to work in both cluster and single-node deployments.
  6. Updated SQL parser to support TRUNCATE CLUSTER and VACUUM CLUSTER syntax and supporting truncating and vacuuming the entire cluster.
  7. Updated NodeType action to return more specific type and added similar functionality to Operations API.
  8. Updated Docker-Compose build to use the new architecture.
  9. Updated the documentation to document the new architecture.
  10. Removed the manager crate and all other mentions of the manager.

Copy link
Copy Markdown

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

This PR removes the manager component and implements a decentralized cluster architecture where edge and cloud nodes are responsible for keeping the database schema consistent using the remote object store as the single source of truth. This is a significant architectural change that simplifies the cluster deployment model.

Key Changes:

  • Removed the modelardb_manager crate and all manager-related code
  • Implemented Cluster struct in the server to handle cluster operations between peer nodes
  • Enhanced SQL parser to support TRUNCATE CLUSTER and VACUUM CLUSTER syntax
  • Moved cluster metadata management from manager to the DataFolder module
  • Updated Docker Compose configuration to run multiple edge and cloud nodes without a manager

Reviewed changes

Copilot reviewed 35 out of 36 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
crates/modelardb_server/src/cluster.rs New file implementing cluster operations for peer-to-peer communication
crates/modelardb_storage/src/data_folder/cluster.rs Moved cluster metadata management from manager to DataFolder
crates/modelardb_storage/src/parser.rs Added support for CLUSTER keyword in TRUNCATE and VACUUM statements
crates/modelardb_server/src/remote.rs Added get_flight_info() and cluster-aware table operations
crates/modelardb_server/src/data_folders.rs Updated to create Cluster instead of connecting to manager
crates/modelardb_embedded/src/operations/client.rs Simplified client to connect directly to any node URL
docs/user/README.md Updated documentation to reflect decentralized architecture
docker-compose-cluster.yml Modified to run 2 edge and 2 cloud nodes without manager
crates/modelardb_manager/* Removed entire manager crate

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

@CGodiksen CGodiksen merged commit 0271f22 into main Dec 12, 2025
5 checks passed
@CGodiksen CGodiksen deleted the dev/remove-manager branch December 12, 2025 10:00
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.

Simplify ModelarDB by removing modelardbm

4 participants