Skip to content
This repository was archived by the owner on Oct 18, 2023. It is now read-only.

Commit 5aa463d

Browse files
authored
Merge pull request #546 from libsql/lmdb-meta-storage
lmdb meta storage
2 parents ebb8829 + 2f27a77 commit 5aa463d

File tree

6 files changed

+166
-97
lines changed

6 files changed

+166
-97
lines changed

Cargo.lock

Lines changed: 103 additions & 59 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

libsqlx-server/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,15 @@ async-trait = "0.1.71"
1111
axum = "0.6.18"
1212
base64 = "0.21.2"
1313
bincode = "1.3.3"
14+
bytemuck = { version = "1.13.1", features = ["derive"] }
1415
bytes = { version = "1.4.0", features = ["serde"] }
1516
bytesize = { version = "1.2.0", features = ["serde"] }
1617
clap = { version = "4.3.11", features = ["derive"] }
1718
color-eyre = "0.6.2"
1819
either = "1.8.1"
1920
futures = "0.3.28"
21+
heed = { version = "0.20.0-alpha.3", features = ["serde-bincode"] }
22+
heed-types = "0.20.0-alpha.3"
2023
hmac = "0.12.1"
2124
humantime = "2.1.0"
2225
hyper = { version = "0.14.27", features = ["h2", "server"] }
@@ -31,7 +34,6 @@ serde = { version = "1.0.166", features = ["derive", "rc"] }
3134
serde_json = "1.0.100"
3235
sha2 = "0.10.7"
3336
sha3 = "0.10.8"
34-
sled = "0.34.7"
3537
tempfile = "3.6.0"
3638
thiserror = "1.0.43"
3739
tokio = { version = "1.29.1", features = ["full"] }

libsqlx-server/src/http/admin.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,6 @@ async fn list_allocs(
185185
.handler()
186186
.store()
187187
.list_allocs()
188-
.await
189188
.into_iter()
190189
.map(|cfg| AllocView { id: cfg.db_name })
191190
.collect();

libsqlx-server/src/main.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,14 @@ async fn main() -> Result<()> {
9393

9494
let mut join_set = JoinSet::new();
9595

96-
let store = Arc::new(Store::new(&config.db_path));
96+
97+
let meta_path = config.db_path.join("meta");
98+
tokio::fs::create_dir_all(&meta_path).await?;
99+
let env = heed::EnvOpenOptions::new()
100+
.max_dbs(1000)
101+
.map_size(100 * 1024 * 1024)
102+
.open(meta_path)?;
103+
let store = Arc::new(Store::new(env.clone()));
97104
let manager = Arc::new(Manager::new(config.db_path.clone(), store.clone(), 100));
98105
let bus = Arc::new(Bus::new(config.cluster.id, manager.clone()));
99106

libsqlx-server/src/manager.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ impl Manager {
4141
return Some(sender.clone());
4242
}
4343

44-
if let Some(config) = self.meta_store.meta(&database_id).await {
44+
if let Some(config) = self.meta_store.meta(&database_id) {
4545
let path = self.db_path.join("dbs").join(database_id.to_string());
4646
tokio::fs::create_dir_all(&path).await.unwrap();
4747
let (alloc_sender, inbox) = mpsc::channel(MAX_ALLOC_MESSAGE_QUEUE_LEN);
@@ -73,12 +73,12 @@ impl Manager {
7373
meta: &AllocConfig,
7474
dispatcher: Arc<dyn Dispatch>,
7575
) {
76-
self.store().allocate(database_id, meta).await;
76+
self.store().allocate(&database_id, meta);
7777
self.schedule(database_id, dispatcher).await;
7878
}
7979

8080
pub async fn deallocate(&self, database_id: DatabaseId) {
81-
self.meta_store.deallocate(database_id).await;
81+
self.meta_store.deallocate(&database_id);
8282
self.cache.remove(&database_id).await;
8383
let db_path = self.db_path.join("dbs").join(database_id.to_string());
8484
tokio::fs::remove_dir_all(db_path).await.unwrap();

0 commit comments

Comments
 (0)