From c17e5a6130282852542e339c6124b8ff83ff75bc Mon Sep 17 00:00:00 2001
From: centra
Date: Wed, 1 Apr 2026 02:07:55 +0900
Subject: [PATCH] Implement FlareDB SQL routing and service CRUD
---
fiberlb/crates/fiberlb-server/src/metadata.rs | 97 +++++-
.../src/services/health_check.rs | 283 +++++++++++++-----
flaredb/crates/flaredb-server/src/main.rs | 3 +-
flaredb/crates/flaredb-server/src/merkle.rs | 7 +-
.../crates/flaredb-server/src/pd_client.rs | 4 +-
.../crates/flaredb-server/src/raft_service.rs | 14 +-
flaredb/crates/flaredb-server/src/rest.rs | 169 +++++++++--
flaredb/crates/flaredb-server/src/service.rs | 40 ++-
.../crates/flaredb-server/src/sql_service.rs | 37 +--
flaredb/crates/flaredb-server/src/store.rs | 4 +-
flaredb/crates/flaredb-sql/src/executor.rs | 35 ++-
flaredb/crates/flaredb-sql/src/parser.rs | 256 ++++++++++++++--
flaredb/crates/flaredb-sql/src/storage.rs | 226 ++++++++++++--
.../src/object_service.rs | 162 +++++++++-
nix/test-cluster/run-cluster.sh | 171 ++++++++++-
15 files changed, 1290 insertions(+), 218 deletions(-)
diff --git a/fiberlb/crates/fiberlb-server/src/metadata.rs b/fiberlb/crates/fiberlb-server/src/metadata.rs
index b623bcb..6d2f4c2 100644
--- a/fiberlb/crates/fiberlb-server/src/metadata.rs
+++ b/fiberlb/crates/fiberlb-server/src/metadata.rs
@@ -156,7 +156,9 @@ impl LbMetadataStore {
)
.execute(pool)
.await
- .map_err(|e| MetadataError::Storage(format!("Failed to initialize Postgres schema: {}", e)))?;
+ .map_err(|e| {
+ MetadataError::Storage(format!("Failed to initialize Postgres schema: {}", e))
+ })?;
Ok(())
}
@@ -169,7 +171,9 @@ impl LbMetadataStore {
)
.execute(pool)
.await
- .map_err(|e| MetadataError::Storage(format!("Failed to initialize SQLite schema: {}", e)))?;
+ .map_err(|e| {
+ MetadataError::Storage(format!("Failed to initialize SQLite schema: {}", e))
+ })?;
Ok(())
}
@@ -196,9 +200,7 @@ impl LbMetadataStore {
.bind(value)
.execute(pool.as_ref())
.await
- .map_err(|e| {
- MetadataError::Storage(format!("Postgres put failed: {}", e))
- })?;
+ .map_err(|e| MetadataError::Storage(format!("Postgres put failed: {}", e)))?;
}
SqlStorageBackend::Sqlite(pool) => {
sqlx::query(
@@ -439,6 +441,10 @@ impl LbMetadataStore {
format!("/fiberlb/healthchecks/{}/{}", pool_id, hc_id)
}
+ fn health_check_id_key(hc_id: &HealthCheckId) -> String {
+ format!("/fiberlb/healthcheck_ids/{}", hc_id)
+ }
+
fn health_check_prefix(pool_id: &PoolId) -> String {
format!("/fiberlb/healthchecks/{}/", pool_id)
}
@@ -865,7 +871,8 @@ impl LbMetadataStore {
MetadataError::Serialization(format!("Failed to serialize health check: {}", e))
})?;
- self.put(&key, &value).await
+ self.put(&key, &value).await?;
+ self.put(&Self::health_check_id_key(&hc.id), &key).await
}
/// Load health check
@@ -886,6 +893,30 @@ impl LbMetadataStore {
}
}
+ /// Load health check by ID using the global ID index.
+ pub async fn load_health_check_by_id(
+ &self,
+ hc_id: &HealthCheckId,
+ ) -> Result