Spaces:
Running
Running
SilverElixir commited on
Commit ·
afada05
1
Parent(s): 27a3176
Private temp dir for state fallback instead of shared tmp
Browse files- lumen_chat_state.py +5 -2
lumen_chat_state.py
CHANGED
|
@@ -61,8 +61,11 @@ _STATE_DIR = Path(os.getenv("STATE_DIR", "/app")).resolve()
|
|
| 61 |
try:
|
| 62 |
_STATE_DIR.mkdir(parents=True, exist_ok=True)
|
| 63 |
except Exception as _state_dir_exc:
|
| 64 |
-
log.warning('[setup] STATE_DIR %s is not writable (%s), using a temp directory instead.', _STATE_DIR, _state_dir_exc)
|
| 65 |
-
|
|
|
|
|
|
|
|
|
|
| 66 |
STATE_FILE_PATH = _STATE_DIR / "chat_state.json"
|
| 67 |
GLOBAL_QUOTA_FILE = _STATE_DIR / "global_quota.json"
|
| 68 |
# Per-chat ключи вместо одного блоба: меньше payload и blast radius при сбое.
|
|
|
|
| 61 |
try:
|
| 62 |
_STATE_DIR.mkdir(parents=True, exist_ok=True)
|
| 63 |
except Exception as _state_dir_exc:
|
| 64 |
+
log.warning('[setup] STATE_DIR %s is not writable (%s), using a private temp directory instead.', _STATE_DIR, _state_dir_exc)
|
| 65 |
+
# Приватный подкаталог с 0o700: сырой gettempdir() читаем соседям по машине,
|
| 66 |
+
# а там истории чатов (аудит M4, 10.2026).
|
| 67 |
+
_STATE_DIR = Path(tempfile.mkdtemp(prefix="lumen-state-"))
|
| 68 |
+
os.chmod(_STATE_DIR, 0o700)
|
| 69 |
STATE_FILE_PATH = _STATE_DIR / "chat_state.json"
|
| 70 |
GLOBAL_QUOTA_FILE = _STATE_DIR / "global_quota.json"
|
| 71 |
# Per-chat ключи вместо одного блоба: меньше payload и blast radius при сбое.
|