|
|
|
|
@@ -6470,11 +6470,22 @@ async function handleGetDiscoveredRelays(requestId, port) {
|
|
|
|
|
try {
|
|
|
|
|
const trackerData = ndk?.outboxTracker?.data;
|
|
|
|
|
if (trackerData) {
|
|
|
|
|
// Debug: log what the LRU cache looks like
|
|
|
|
|
const trackerKeys = typeof trackerData.keys === 'function' ? Array.from(trackerData.keys()) :
|
|
|
|
|
(trackerData instanceof Map ? Array.from(trackerData.keys()) : []);
|
|
|
|
|
console.log('[Worker] getDiscoveredRelays: tracker has', trackerKeys.length, 'entries');
|
|
|
|
|
|
|
|
|
|
let pubkeysProcessed = 0;
|
|
|
|
|
let pubkeysWithWriteRelays = 0;
|
|
|
|
|
|
|
|
|
|
const collectForPubkey = (pubkey) => {
|
|
|
|
|
pubkeysProcessed++;
|
|
|
|
|
try {
|
|
|
|
|
const outboxItem = trackerData.get(pubkey);
|
|
|
|
|
const writeRelays = outboxItem?.writeRelays;
|
|
|
|
|
if (!writeRelays) return;
|
|
|
|
|
if (!outboxItem) return;
|
|
|
|
|
const writeRelays = outboxItem.writeRelays;
|
|
|
|
|
if (!writeRelays || writeRelays.size === 0) return;
|
|
|
|
|
pubkeysWithWriteRelays++;
|
|
|
|
|
for (const r of writeRelays) {
|
|
|
|
|
const rUrl = r?.url ? normalizeRelayUrl(r.url) : (typeof r === 'string' ? normalizeRelayUrl(r) : null);
|
|
|
|
|
if (!rUrl) continue;
|
|
|
|
|
@@ -6516,7 +6527,26 @@ async function handleGetDiscoveredRelays(requestId, port) {
|
|
|
|
|
for (const pubkey of trackerData.keys()) {
|
|
|
|
|
collectForPubkey(pubkey);
|
|
|
|
|
}
|
|
|
|
|
iterated = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Strategy 4: try internal storage if LRU cache has it
|
|
|
|
|
if (!iterated) {
|
|
|
|
|
try {
|
|
|
|
|
// Some LRU caches store entries in an internal Map or object
|
|
|
|
|
const internal = trackerData._map || trackerData.cache || trackerData._cache;
|
|
|
|
|
if (internal instanceof Map) {
|
|
|
|
|
for (const [pubkey] of internal) {
|
|
|
|
|
collectForPubkey(pubkey);
|
|
|
|
|
}
|
|
|
|
|
iterated = true;
|
|
|
|
|
}
|
|
|
|
|
} catch (_) {}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
console.log('[Worker] getDiscoveredRelays: processed', pubkeysProcessed, 'pubkeys,', pubkeysWithWriteRelays, 'with write relays, iterated:', iterated, ', relayServesPubkeys size:', relayServesPubkeys.size);
|
|
|
|
|
} else {
|
|
|
|
|
console.log('[Worker] getDiscoveredRelays: no outbox tracker data available');
|
|
|
|
|
}
|
|
|
|
|
} catch (err) {
|
|
|
|
|
console.warn('[Worker] getDiscoveredRelays: outbox tracker inversion failed:', err?.message || err);
|
|
|
|
|
|