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:
Binary file not shown.
@@ -611,8 +611,8 @@ SKIPPED = "(empty, skipped)"
|
|||||||
EX_TEMPFAIL = 75 # "try again later" -- systemd logs it, the next timer run retries
|
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]:
|
def run_jobs(cfg, work, fn) -> tuple[int, int, str | None, int]:
|
||||||
ok = failed = 0
|
ok = failed = skipped = 0
|
||||||
quota = None
|
quota = None
|
||||||
stop = threading.Event() # Future.cancel() cannot stop a job a worker already picked up
|
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:
|
try:
|
||||||
result = fut.result()
|
result = fut.result()
|
||||||
if result == SKIPPED:
|
if result == SKIPPED:
|
||||||
print(f"skip {label} (no conversation content)", flush=True)
|
print(f"skip {label} (no conversation content)", flush=True); skipped += 1
|
||||||
else:
|
else:
|
||||||
print(f"ok {label} -> {result}", flush=True); ok += 1
|
print(f"ok {label} -> {result}", flush=True); ok += 1
|
||||||
except (QuotaExhausted, BudgetExhausted) as e:
|
except (QuotaExhausted, BudgetExhausted) as e:
|
||||||
@@ -644,7 +644,7 @@ def run_jobs(cfg, work, fn) -> tuple[int, int, str | None]:
|
|||||||
pass
|
pass
|
||||||
except Exception as e: # keep going; next run retries
|
except Exception as e: # keep going; next run retries
|
||||||
print(f"FAIL {label}: {e}", file=sys.stderr, flush=True); failed += 1
|
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:
|
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), "~")
|
src = str(p).replace(str(HOME), "~")
|
||||||
return process(cfg, llm, vault, state, key, meta, "claude-code", "Code", fp, src, mode)
|
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:
|
if vault and ok:
|
||||||
write_index(cfg, vault, state)
|
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:
|
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))
|
llm, vault = LLM(cfg), (None if args.dry_run else Vault(cfg))
|
||||||
if vault:
|
if vault:
|
||||||
vault.ping()
|
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",
|
lambda _l, m, fp, key: process(cfg, llm, vault, state, key, m, "claude-ai", "Web",
|
||||||
fp, None, args.dry_run))
|
fp, None, args.dry_run))
|
||||||
if vault and ok:
|
if vault and ok:
|
||||||
write_index(cfg, vault, state)
|
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:
|
def main() -> None:
|
||||||
|
|||||||
Reference in New Issue
Block a user