fix(db): invoke shutdown during runtime teardown

Call Database::shutdown() from async_main graceful shutdown after webhook/tunnel stop.

Add debug logs for libSQL no-op shutdown paths (no replicator and sync-not-supported).
This commit is contained in:
mackaby
2026-03-12 15:08:08 -07:00
committed by Zaki
parent 91e0c2ee62
commit 5677e5e955
2 changed files with 16 additions and 2 deletions
+8 -2
View File
@@ -333,8 +333,14 @@ impl Database for LibSqlBackend {
tracing::debug!("libSQL replicator flushed at frame {}", frame_no);
Ok(())
}
Ok(None) => Ok(()),
Err(libsql::Error::SyncNotSupported(_)) => Ok(()),
Ok(None) => {
tracing::debug!("No libSQL replicator to flush, skipping shutdown sync");
Ok(())
}
Err(libsql::Error::SyncNotSupported(_)) => {
tracing::debug!("libSQL sync not supported, skipping flush on shutdown");
Ok(())
}
Err(error) => Err(DatabaseError::from(error)),
}
}
+8
View File
@@ -672,6 +672,8 @@ async fn async_main() -> anyhow::Result<()> {
.as_ref()
.map(|db| Arc::clone(db) as Arc<dyn ironclaw::db::SettingsStore>);
let db_for_shutdown = components.db.clone();
let deps = AgentDeps {
store: components.db,
llm: components.llm,
@@ -930,6 +932,12 @@ async fn async_main() -> anyhow::Result<()> {
}
}
if let Some(db) = db_for_shutdown {
if let Err(e) = db.shutdown().await {
tracing::warn!("Failed to shutdown database cleanly: {}", e);
}
}
tracing::debug!("Agent shutdown complete");
Ok(())