debug(session): 添加 handle_message 和 session 恢复的 tracing 日志

用于排查 restart 后 session 恢复和 TTL 刷新问题。
This commit is contained in:
xiaoxixi 2026-04-29 22:51:50 +08:00
parent dcb2d552d9
commit e1681e0424

View File

@ -206,6 +206,7 @@ impl Session {
// Sync message_count to Storage // Sync message_count to Storage
if persist { if persist {
tracing::debug!(session_id = %self.id, last_active_at = %now, message_count = %self.message_count, "Persisting session meta after add_message");
if let Err(e) = self.persist_session_meta().await { if let Err(e) = self.persist_session_meta().await {
tracing::warn!("failed to persist session meta: {}", e); tracing::warn!("failed to persist session meta: {}", e);
} }
@ -891,6 +892,7 @@ impl SessionManager {
// Try to restore from Storage // Try to restore from Storage
match self.storage.get_session(&session_id_str).await { match self.storage.get_session(&session_id_str).await {
Ok(meta) => { Ok(meta) => {
tracing::debug!(session_id = %session_id_str, last_active_at = %meta.last_active_at, message_count = %meta.message_count, "Restoring session from Storage");
let (user_tx, _rx) = mpsc::channel::<WsOutbound>(100); let (user_tx, _rx) = mpsc::channel::<WsOutbound>(100);
let session = Session::from_storage( let session = Session::from_storage(
unified_id.clone(), unified_id.clone(),
@ -1070,11 +1072,14 @@ impl SessionManager {
} else { } else {
// No current session tracked, find active or create new // No current session tracked, find active or create new
let ttl_millis = self.inner.lock().await.session_ttl.as_millis() as i64; let ttl_millis = self.inner.lock().await.session_ttl.as_millis() as i64;
tracing::debug!(channel, chat_id, ttl_millis, "No current_sessions entry, searching Storage for active session");
match self.storage.find_active_session(channel, chat_id, ttl_millis).await { match self.storage.find_active_session(channel, chat_id, ttl_millis).await {
Ok(Some(meta)) => { Ok(Some(meta)) => {
tracing::debug!(session_id = %meta.id, dialog_id = %meta.dialog_id, last_active_at = %meta.last_active_at, "Found active session in Storage");
UnifiedSessionId::new(channel, chat_id, &meta.dialog_id) UnifiedSessionId::new(channel, chat_id, &meta.dialog_id)
} }
Ok(None) | Err(_) => { Ok(None) | Err(_) => {
tracing::debug!("No active session found in Storage, creating new session");
// Create new session // Create new session
let (new_id, _) = self.create_session(channel, chat_id, None, String::new()).await?; let (new_id, _) = self.create_session(channel, chat_id, None, String::new()).await?;
new_id new_id
@ -1082,6 +1087,7 @@ impl SessionManager {
} }
} }
}; };
tracing::debug!(unified_id = %unified_id, "handle_message resolved unified_id");
let session = self.get_or_create_session(&unified_id).await?; let session = self.get_or_create_session(&unified_id).await?;
// Check for slash command // Check for slash command