claude-obsidian: don't count skipped empty sessions as still queued
The first full drain reported "105 written, 0 failed, 9 still queued" when the 9 were empty sessions already recorded as skipped -- nothing was left. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KF322NzozeaFjpgWvh4F4g
This commit is contained in:
@@ -611,8 +611,8 @@ SKIPPED = "(empty, skipped)"
|
||||
EX_TEMPFAIL = 75 # "try again later" -- systemd logs it, the next timer run retries
|
||||
|
||||
|
||||
def run_jobs(cfg, work, fn) -> tuple[int, int, str | None]:
|
||||
ok = failed = 0
|
||||
def run_jobs(cfg, work, fn) -> tuple[int, int, str | None, int]:
|
||||
ok = failed = skipped = 0
|
||||
quota = None
|
||||
stop = threading.Event() # Future.cancel() cannot stop a job a worker already picked up
|
||||
|
||||
@@ -632,7 +632,7 @@ def run_jobs(cfg, work, fn) -> tuple[int, int, str | None]:
|
||||
try:
|
||||
result = fut.result()
|
||||
if result == SKIPPED:
|
||||
print(f"skip {label} (no conversation content)", flush=True)
|
||||
print(f"skip {label} (no conversation content)", flush=True); skipped += 1
|
||||
else:
|
||||
print(f"ok {label} -> {result}", flush=True); ok += 1
|
||||
except (QuotaExhausted, BudgetExhausted) as e:
|
||||
@@ -644,7 +644,7 @@ def run_jobs(cfg, work, fn) -> tuple[int, int, str | None]:
|
||||
pass
|
||||
except Exception as e: # keep going; next run retries
|
||||
print(f"FAIL {label}: {e}", file=sys.stderr, flush=True); failed += 1
|
||||
return ok, failed, quota
|
||||
return ok, failed, quota, skipped
|
||||
|
||||
|
||||
def finish(ok: int, failed: int, quota: str | None, dry_run, remaining: int, ledger: "Ledger | None" = None) -> None:
|
||||
@@ -738,10 +738,10 @@ def cmd_sync(cfg, args) -> None:
|
||||
src = str(p).replace(str(HOME), "~")
|
||||
return process(cfg, llm, vault, state, key, meta, "claude-code", "Code", fp, src, mode)
|
||||
|
||||
ok, failed, quota = run_jobs(cfg, [(w[0].name, *w) for w in work], lambda _l, p, fp, key: one(p, fp, key))
|
||||
ok, failed, quota, skipped = run_jobs(cfg, [(w[0].name, *w) for w in work], lambda _l, p, fp, key: one(p, fp, key))
|
||||
if vault and ok:
|
||||
write_index(cfg, vault, state)
|
||||
finish(ok, failed, quota, mode, total - ok, llm.ledger)
|
||||
finish(ok, failed, quota, mode, total - ok - skipped, llm.ledger)
|
||||
|
||||
|
||||
def cmd_import(cfg, args) -> None:
|
||||
@@ -762,12 +762,12 @@ def cmd_import(cfg, args) -> None:
|
||||
llm, vault = LLM(cfg), (None if args.dry_run else Vault(cfg))
|
||||
if vault:
|
||||
vault.ping()
|
||||
ok, failed, quota = run_jobs(cfg, [((m.get("title") or m["session_id"])[:50], m, fp, key) for m, fp, key in work],
|
||||
ok, failed, quota, skipped = run_jobs(cfg, [((m.get("title") or m["session_id"])[:50], m, fp, key) for m, fp, key in work],
|
||||
lambda _l, m, fp, key: process(cfg, llm, vault, state, key, m, "claude-ai", "Web",
|
||||
fp, None, args.dry_run))
|
||||
if vault and ok:
|
||||
write_index(cfg, vault, state)
|
||||
finish(ok, failed, quota, args.dry_run, total - ok, llm.ledger)
|
||||
finish(ok, failed, quota, args.dry_run, total - ok - skipped, llm.ledger)
|
||||
|
||||
|
||||
def main() -> None:
|
||||
|
||||
Reference in New Issue
Block a user