From b03b84890934e1b1dccf0c3f339da03673f56a1f Mon Sep 17 00:00:00 2001 From: Laan Tungir Date: Tue, 30 Jun 2026 11:07:27 -0400 Subject: [PATCH] Add debug logging: per-relay publish/timeout/reject with elapsed time, batch start/end timing --- www/js/version.json | 6 +++--- www/ndk-worker.js | 13 ++++++++++++- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/www/js/version.json b/www/js/version.json index 452df18..e59584b 100644 --- a/www/js/version.json +++ b/www/js/version.json @@ -1,5 +1,5 @@ { - "VERSION": "v0.7.81", - "VERSION_NUMBER": "0.7.81", - "BUILD_DATE": "2026-06-30T14:55:04.841Z" + "VERSION": "v0.7.82", + "VERSION_NUMBER": "0.7.82", + "BUILD_DATE": "2026-06-30T15:07:27.716Z" } diff --git a/www/ndk-worker.js b/www/ndk-worker.js index 5a994f3..d6f43ee 100644 --- a/www/ndk-worker.js +++ b/www/ndk-worker.js @@ -6233,11 +6233,16 @@ async function handlePublish(requestId, event, port) { latestRelay: null, }); + // Debug: track publish start time for timing analysis + const publishStartTime = Date.now(); + ndkEvent.on('relay:published', (relay) => { const url = relay?.url || String(relay || ''); if (!url) return; + const elapsed = ((Date.now() - publishStartTime) / 1000).toFixed(1); publishedSoFar.add(url); trackRelayWrite(url); + console.log(`[Worker][broadcast] ✅ ${url} published (${elapsed}s) — batch ${currentBatch}/${totalBatches}, ${publishedSoFar.size}/${totalTarget} total`); broadcast({ type: 'broadcastProgress', sessionId: publishSessionId, @@ -6255,11 +6260,14 @@ async function handlePublish(requestId, event, port) { const url = relay?.url || String(relay || ''); if (!url) return; const errMsg = err?.message || String(err) || ''; + const elapsed = ((Date.now() - publishStartTime) / 1000).toFixed(1); const isTimeout = /timeout/i.test(errMsg); if (isTimeout) { timedOutSoFar.add(url); + console.log(`[Worker][broadcast] ⏱️ ${url} TIMEOUT (${elapsed}s) — batch ${currentBatch}/${totalBatches}`); } else { failedSoFar.add(url); + console.log(`[Worker][broadcast] ❌ ${url} REJECTED (${elapsed}s): ${errMsg} — batch ${currentBatch}/${totalBatches}`); } broadcast({ type: 'broadcastProgress', @@ -6348,6 +6356,8 @@ async function handlePublish(requestId, event, port) { for (let bi = 0; bi < batches.length; bi++) { currentBatch = bi + 1; // update before publish so per-relay events include it const batch = batches[bi]; + const batchStartTime = Date.now(); + console.log(`[Worker][broadcast] Batch ${bi + 1}/${totalBatches} starting — ${batch.length} relays: ${batch.slice(0, 5).join(', ')}${batch.length > 5 ? '...' : ''}`); const batchSet = NDKRelaySet.fromRelayUrls(batch, ndk); if (batchSet?.relays) { for (const relay of batchSet.relays) { @@ -6375,7 +6385,8 @@ async function handlePublish(requestId, event, port) { batchCurrent: bi + 1, batchTotal: totalBatches, }); - console.log(`[Worker] Batch ${bi + 1}/${totalBatches} complete — ` + + const batchElapsed = ((Date.now() - batchStartTime) / 1000).toFixed(1); + console.log(`[Worker] Batch ${bi + 1}/${totalBatches} complete (${batchElapsed}s) — ` + `${publishedSoFar.size}/${totalTarget} total succeeded, ` + `${failedSoFar.size + timedOutSoFar.size} failed/timeout so far`); }