Explorer
/proc/thread-self/root/tmp/queue_recovery_ready.py
← Zurück ↓ Download
import sqlite3,json
from pathlib import Path
from datetime import datetime,timezone
DB='/opt/struktur/youtube-research/knowledge.db'; LOG=Path('/opt/struktur/reports/aa049-worker-events.jsonl'); now=datetime.now(timezone.utc).isoformat(); out=[]
c=sqlite3.connect(DB,timeout=30,isolation_level=None); c.row_factory=sqlite3.Row; c.execute('pragma busy_timeout=30000')
try:
 c.execute('begin immediate')
 for qid in (1092,1268):
  r=c.execute('select * from graphiti_import_queue where id=?',(qid,)).fetchone()
  if not r or r['graphiti_status']!='lease_expired' or r['lock_owner'] is not None or r['lease_expires_at'] is not None or r['graphiti_episode_id'] is not None: raise RuntimeError('guard_failed:'+str(qid))
  cur=c.execute("update graphiti_import_queue set graphiti_status='queued',next_attempt_at=NULL,updated_at=? where id=? and graphiti_status='lease_expired' and lock_owner is null and lease_expires_at is null and graphiti_episode_id is null",(now,qid))
  if cur.rowcount!=1: raise RuntimeError('update_failed:'+str(qid))
  out.append({'event':'LEASE_RECOVERY_READY','queue_id':qid,'at_utc':now,'new_status':'queued','attempt_count':r['attempt_count'],'graphiti_attempts':r['graphiti_attempts'],'identity_preserved':True,'writer':'regular_aa049_queue_service'})
 c.execute('commit')
except:
 c.rollback(); c.close(); raise
c.close()
with LOG.open('a',encoding='utf8') as f:
 for x in out:f.write(json.dumps(x,ensure_ascii=False)+'\n')
print(json.dumps(out,ensure_ascii=False,indent=2))