mirror of
https://github.com/outbackdingo/optimclaw.git
synced 2026-08-25 14:53:34 +00:00
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:
@@ -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)),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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(())
|
||||
|
||||
Reference in New Issue
Block a user