Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
2ec7429
Optimize hosted Postgres latency harness
serrrfirat Jul 5, 2026
0943ae2
cycle 6: cover trigger latency path
serrrfirat Jul 5, 2026
c317e71
cycle 8: expose control-plane latency path
serrrfirat Jul 5, 2026
643bed5
cycle 9: latency score control-plane
serrrfirat Jul 5, 2026
f0aca03
cycle 10: latency score hosted substrate
serrrfirat Jul 5, 2026
370b4f2
cycle 11: latency score query indexes
serrrfirat Jul 5, 2026
a45b1ff
cycle 12: stabilize libsql trigger baseline
serrrfirat Jul 5, 2026
7bac66c
cycle 13: latency score postgres stat
serrrfirat Jul 5, 2026
4977a1b
cycle 14: latency score hosted migrations
serrrfirat Jul 5, 2026
0d39cb8
cycle 15: latency score root migration guard
serrrfirat Jul 5, 2026
5540a3d
cycle 16: stress postgres mixed user flow
serrrfirat Jul 5, 2026
aaf70ef
cycle 17: latency score resource governor workers
serrrfirat Jul 5, 2026
c9e854c
cycle 18: latency score libsql connect retry
serrrfirat Jul 5, 2026
4971330
cycle 19: measure turn state growth
serrrfirat Jul 5, 2026
3f33994
cycle 20: add append row turn state
serrrfirat Jul 5, 2026
d9ff02a
cycle 21: score turn lifecycle blob
serrrfirat Jul 5, 2026
988641e
cycle 22: wire postgres row turn state
serrrfirat Jul 5, 2026
00f0b20
cycle 23: record high concurrency latency
serrrfirat Jul 5, 2026
657558e
cycle 24: add diagnostic backend filter
serrrfirat Jul 5, 2026
dac02a5
cycle 25: add webui session latency path
serrrfirat Jul 5, 2026
423de44
cycle 26: target loop checkpoint row delta
serrrfirat Jul 5, 2026
68314da
cycle 27: target lifecycle row deltas
serrrfirat Jul 5, 2026
5c77f3c
cycle 28: latency score dev-pass
serrrfirat Jul 5, 2026
25e11f7
cycle 29: latency score dev-pass
serrrfirat Jul 5, 2026
5c4615f
cycle 30: latency score dev-pass
serrrfirat Jul 5, 2026
c7913f7
cycle 31: latency score dev-pass
serrrfirat Jul 5, 2026
d742aa0
cycle 32: latency score dev-pass
serrrfirat Jul 5, 2026
1f8fb04
cycle 34: latency score dev-pass
serrrfirat Jul 5, 2026
598d724
cycle 35: latency score dev-pass
serrrfirat Jul 5, 2026
ba28cc0
cycle 36: latency score dev-pass
serrrfirat Jul 5, 2026
511fdd0
cycle 37: latency score no-improve
serrrfirat Jul 5, 2026
2ca6b8b
cycle 38: group commit turn deltas
serrrfirat Jul 5, 2026
5ab38f3
cycle 39: index row snapshot deltas
serrrfirat Jul 5, 2026
da3a274
Use RootFilesystem-backed resource governor
serrrfirat Jul 5, 2026
9f81fd2
cycle 42: libsql turn lifecycle p95 30.9ms
serrrfirat Jul 5, 2026
fab13d8
cycle 43: bound row-store terminal cache
serrrfirat Jul 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2,425 changes: 2,425 additions & 0 deletions LOG.md

Large diffs are not rendered by default.

12 changes: 11 additions & 1 deletion crates/ironclaw_filesystem/src/backend.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,10 @@
use async_trait::async_trait;
use ironclaw_host_api::VirtualPath;

use crate::{CasExpectation, Entry, FilesystemError, RecordVersion, SeqNo, VersionedEntry};
use crate::{
CasExpectation, Entry, FilesystemError, FilesystemOperation, RecordVersion, SeqNo,
VersionedEntry,
};

/// Multi-key transactional handle returned by [`RootFilesystem::begin`].
///
Expand All @@ -40,6 +43,13 @@ pub trait StorageTxn: Send {

async fn delete(&mut self, path: &VirtualPath) -> Result<(), FilesystemError>;

async fn reserve_sequence(&mut self, path: &VirtualPath) -> Result<SeqNo, FilesystemError> {
Err(FilesystemError::Unsupported {
path: path.clone(),
operation: FilesystemOperation::ReserveSeq,
})
}

async fn commit(self: Box<Self>) -> Result<(), FilesystemError>;

async fn rollback(self: Box<Self>);
Expand Down
23 changes: 14 additions & 9 deletions crates/ironclaw_filesystem/src/libsql.rs
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ where
{
// Match the legacy libSQL backend's connection policy: every
// operation gets its own connection, concurrent writers wait on
// SQLite locks, and transient file-open races get a short retry
// SQLite locks, and transient file-open/setup races get a short retry
// budget before surfacing as infrastructure errors.
let mut last_error = None;
for attempt in 0..LIBSQL_CONNECT_ATTEMPTS {
Expand All @@ -157,12 +157,15 @@ where
// `execute_batch` runs each statement and discards the rows
// PRAGMAs like `busy_timeout` return, which is exactly what
// we want — we only care about the side effect.
conn.execute_batch(LIBSQL_CONNECTION_PRAGMAS)
.await
.map_err(|error| {
infrastructure_libsql_error(FilesystemOperation::Stat, error)
})?;
return Ok(conn);
match conn.execute_batch(LIBSQL_CONNECTION_PRAGMAS).await {
Ok(_) => return Ok(conn),
Err(error) => {
last_error = Some(error);
if attempt + 1 < LIBSQL_CONNECT_ATTEMPTS {
tokio::time::sleep(connect_backoff(attempt)).await;
}
}
}
}
Err(error) => {
last_error = Some(error);
Expand All @@ -176,11 +179,13 @@ where
let reason = match last_error {
Some(error) => {
format!(
"failed to create libSQL connection after {LIBSQL_CONNECT_ATTEMPTS} attempts: {error}"
"failed to create or initialize libSQL connection after {LIBSQL_CONNECT_ATTEMPTS} attempts: {error}"
)
}
None => {
format!("failed to create libSQL connection after {LIBSQL_CONNECT_ATTEMPTS} attempts")
format!(
"failed to create or initialize libSQL connection after {LIBSQL_CONNECT_ATTEMPTS} attempts"
)
}
};
Err(crate::db::infrastructure_error(
Expand Down
Loading
Loading