fix: keep the postgres backfill from disabling telemetry or locking the table
This commit is contained in:
@@ -104,15 +104,20 @@ class SQLiteRecorder:
|
||||
return
|
||||
try:
|
||||
existing = {row[1] for row in self._conn.execute("PRAGMA table_info(llm_calls)")}
|
||||
for column, decl in _BACKFILL_COLUMNS:
|
||||
if column in existing:
|
||||
continue
|
||||
self._conn.execute(f"ALTER TABLE llm_calls ADD COLUMN {column} {decl}")
|
||||
self._conn.commit()
|
||||
except sqlite3.Error as exc:
|
||||
# duplicate column: 多进程共库时后到者必然撞上,属预期竞态,视为成功
|
||||
if "duplicate column" not in str(exc).lower():
|
||||
logger.warning("SQLite 遥测补列失败(写入将逐行降级): {}", exc)
|
||||
logger.warning("SQLite 遥测列探测失败(写入将逐行降级): {}", exc)
|
||||
return
|
||||
for column, decl in _BACKFILL_COLUMNS:
|
||||
if column in existing:
|
||||
continue
|
||||
# 逐列独立 try: 一列撞上 duplicate 不得让后面的列漏补
|
||||
try:
|
||||
self._conn.execute(f"ALTER TABLE llm_calls ADD COLUMN {column} {decl}")
|
||||
self._conn.commit()
|
||||
except sqlite3.Error as exc:
|
||||
# duplicate column: 多进程共库时后到者必然撞上,属预期竞态,视为成功
|
||||
if "duplicate column" not in str(exc).lower():
|
||||
logger.warning("SQLite 遥测补列失败(写入将逐行降级): {}", exc)
|
||||
|
||||
async def record_llm_call(self, **fields: object) -> None:
|
||||
"""写一行遥测;字段集合即 20 字段冻结签名(ports.TelemetryRecorder)。"""
|
||||
|
||||
Reference in New Issue
Block a user