fix: Replace silent panics on bind and index creation with daemon_error.log writes

This commit is contained in:
Riz Ashraf committed 2026-09-19 05:20:11 +01:00
1 parent 2fdb03c302
commit 28761ceb41
1 file changed
+20 -2
+20 -2
View File
@@ -407,7 +407,16 @@ fn run_server(state: Arc<MemoryState>) -> Result<(), Box<dyn std::error::Error>>
let addr = std::env::var("MCP_PORT").unwrap_or_else(|_| "3000".to_string()); let addr = std::env::var("MCP_PORT").unwrap_or_else(|_| "3000".to_string());
let addr: std::net::SocketAddr = format!("127.0.0.1:{}", addr).parse().unwrap(); let addr: std::net::SocketAddr = format!("127.0.0.1:{}", addr).parse().unwrap();
let listener = tokio::net::TcpListener::bind(addr).await.unwrap(); let listener = match tokio::net::TcpListener::bind(addr).await {
Ok(l) => l,
Err(e) => {
let log_path = dirs::home_dir()
.unwrap_or_default()
.join(".gemini/mcp_memory/daemon_error.log");
let _ = std::fs::write(&log_path, format!("Failed to bind to {}: {}\n", addr, e));
return Ok(());
}
};
if let Err(e) = axum::serve(listener, app.into_make_service()).await { if let Err(e) = axum::serve(listener, app.into_make_service()).await {
let log_path = dirs::home_dir() let log_path = dirs::home_dir()
.unwrap_or_default() .unwrap_or_default()
@@ -745,7 +754,16 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
let state = Arc::new(MemoryState { let state = Arc::new(MemoryState {
graph: Store::new("knowledge_graph_master", db.clone()), graph: Store::new("knowledge_graph_master", db.clone()),
base_dir: base.clone(), base_dir: base.clone(),
search_index: RwLock::new(crate::search::MemoryIndex::new(&base).unwrap()), search_index: RwLock::new(match crate::search::MemoryIndex::new(&base) {
Ok(idx) => idx,
Err(e) => {
let log_path = dirs::home_dir()
.unwrap_or_default()
.join(".gemini/mcp_memory/daemon_error.log");
let _ = std::fs::write(&log_path, format!("Failed to create MemoryIndex: {}\n", e));
std::process::exit(1);
}
}),
ledger: Store::new("audit_ledger", db.clone()), ledger: Store::new("audit_ledger", db.clone()),
sticky: Store::new("sticky_notes", db.clone()), sticky: Store::new("sticky_notes", db.clone()),
tasks: Store::new("tasks", db.clone()), tasks: Store::new("tasks", db.clone()),