From 5a83ee0c6cb3abeaf36a238592f3ecd57c1e46d6 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 13 Mar 2026 13:13:40 -0500 Subject: [PATCH] fix: add PYTHONUNBUFFERED=1 for real-time logging MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Python buffers stdout when running as systemd service (no TTY) - This prevented journalctl from showing real-time turn captures - Added Environment='PYTHONUNBUFFERED=1' to disable buffering - Now shows '✅ Turn N (role) → Qdrant' in real-time via journalctl -f Fixes issue where watcher captured turns but only logged on restart. --- CHANGELOG.md | 30 ++++++++++++++++++++++++++++++ watcher/mem-qdrant-watcher.service | 1 + 2 files changed, 31 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a130132..4ffb792 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,36 @@ All notable changes to this project will be documented in this file. +## [v1.4] - 2026-03-13 + +### Fixed + +#### Real-Time Logging Not Visible in journalctl + +**Error:** Watcher was capturing turns to Qdrant but `journalctl -u mem-qdrant-watcher -f` showed no output between restarts. + +**Root Cause:** +- Python buffers stdout when not connected to a TTY (systemd service) +- `print()` statements in the watcher were buffered, not flushed +- Logs only appeared on service restart when buffer was flushed + +**Impact:** Impossible to monitor real-time capture status, difficult to debug + +**Fix:** +- Added `Environment="PYTHONUNBUFFERED=1"` to systemd service file +- This disables Python's stdout buffering, forcing immediate flush + +**Changed Files:** +- `watcher/mem-qdrant-watcher.service` - Added PYTHONUNBUFFERED environment variable + +**Validation:** +```bash +journalctl -u mem-qdrant-watcher -f +# Now shows: ✅ Turn 170 (assistant) → Qdrant (in real-time) +``` + +--- + ## [v1.3] - 2026-03-10 ### Fixed diff --git a/watcher/mem-qdrant-watcher.service b/watcher/mem-qdrant-watcher.service index 2adb653..b60a679 100644 --- a/watcher/mem-qdrant-watcher.service +++ b/watcher/mem-qdrant-watcher.service @@ -11,6 +11,7 @@ Environment="QDRANT_COLLECTION=memories_tr" Environment="OLLAMA_URL=http://localhost:11434" Environment="EMBEDDING_MODEL=snowflake-arctic-embed2" Environment="USER_ID=rob" +Environment="PYTHONUNBUFFERED=1" ExecStart=/usr/bin/python3 /root/.openclaw/workspace/.local_projects/openclaw-true-recall-base/watcher/realtime_qdrant_watcher.py --daemon Restart=always RestartSec=5