From 94a0748d712f3dbf70af1ea18d0ddb10cfb99866 Mon Sep 17 00:00:00 2001 From: Audric Ackermann Date: Wed, 2 Jun 2021 15:19:03 +1000 Subject: [PATCH] add some logs to opengroup retry --- ts/interactions/message.ts | 3 +-- ts/opengroup/opengroupV2/ApiAuth.ts | 8 ++++---- ts/opengroup/opengroupV2/OpenGroupAPIV2.ts | 8 ++++++-- ts/opengroup/opengroupV2/OpenGroupAPIV2CompactPoll.ts | 2 +- ts/opengroup/opengroupV2/OpenGroupServerPoller.ts | 9 ++++++++- ts/session/onions/onionPath.ts | 8 ++++++-- ts/session/onions/onionSend.ts | 1 + 7 files changed, 27 insertions(+), 12 deletions(-) diff --git a/ts/interactions/message.ts b/ts/interactions/message.ts index 96d31e07f..4766a8300 100644 --- a/ts/interactions/message.ts +++ b/ts/interactions/message.ts @@ -109,7 +109,7 @@ export async function removeSenderFromModerator(sender: string, convoId: string) const pubKeyToRemove = PubKey.cast(sender); const convo = ConversationController.getInstance().getOrThrow(convoId); - // FXIME audric removeModerator not working serverside + // FIXME audric removeModerator not working serverside const roomInfo = convo.toOpenGroupV2(); const res = await ApiV2.removeModerator(pubKeyToRemove, roomInfo); if (!res) { @@ -130,7 +130,6 @@ export async function addSenderAsModerator(sender: string, convoId: string) { const pubKeyToRemove = PubKey.cast(sender); const convo = ConversationController.getInstance().getOrThrow(convoId); - // FXIME audric addModerator not working serverside const roomInfo = convo.toOpenGroupV2(); const res = await ApiV2.addModerator(pubKeyToRemove, roomInfo); if (!res) { diff --git a/ts/opengroup/opengroupV2/ApiAuth.ts b/ts/opengroup/opengroupV2/ApiAuth.ts index 36d5f4f41..b19ab8027 100644 --- a/ts/opengroup/opengroupV2/ApiAuth.ts +++ b/ts/opengroup/opengroupV2/ApiAuth.ts @@ -48,24 +48,24 @@ export async function getAuthToken({ await allowOnlyOneAtATime(`getAuthToken${serverUrl}:${roomId}`, async () => { try { window?.log?.info( - `Triggering getAuthToken with serverUrl:'${serverUrl}'; roomId:'${roomId}'` + `Triggering getAuthToken with serverUrl:'${serverUrl}'; roomId: '${roomId}'` ); const token = await requestNewAuthToken({ serverUrl, roomId }); if (!token) { window?.log?.warn('invalid new auth token', token); return; } - window?.log?.info(`Got AuthToken for serverUrl:'${serverUrl}'; roomId:'${roomId}'`); + window?.log?.info(`Got AuthToken for serverUrl:'${serverUrl}'; roomId: '${roomId}'`); const claimedToken = await claimAuthToken(token, serverUrl, roomId); if (!claimedToken) { window?.log?.warn('Failed to claim token', claimedToken); } else { - window?.log?.info(`Claimed AuthToken for serverUrl:'${serverUrl}'; roomId:'${roomId}'`); + window?.log?.info(`Claimed AuthToken for serverUrl:'${serverUrl}'; roomId: '${roomId}'`); } // still save it to the db. just to mark it as to be refreshed later roomDetails.token = claimedToken || ''; await saveV2OpenGroupRoom(roomDetails); - window?.log?.info(`AuthToken saved to DB for serverUrl:'${serverUrl}'; roomId:'${roomId}'`); + window?.log?.info(`AuthToken saved to DB for serverUrl:'${serverUrl}'; roomId: '${roomId}'`); } catch (e) { window?.log?.error('Failed to getAuthToken', e); throw e; diff --git a/ts/opengroup/opengroupV2/OpenGroupAPIV2.ts b/ts/opengroup/opengroupV2/OpenGroupAPIV2.ts index 3f2118be9..3f2c3f67d 100644 --- a/ts/opengroup/opengroupV2/OpenGroupAPIV2.ts +++ b/ts/opengroup/opengroupV2/OpenGroupAPIV2.ts @@ -338,12 +338,16 @@ export const getMemberCount = async ( }; const result = await exports.sendApiV2Request(request); if (parseStatusCodeFromOnionRequest(result) !== 200) { - window?.log?.warn('getMemberCount failed invalid status code'); + window?.log?.warn( + `getMemberCount failed invalid status code for serverUrl:'${roomInfos.serverUrl}' roomId:'${roomInfos.roomId}'` + ); return; } const count = parseMemberCount(result); if (count === undefined) { - window?.log?.warn('getMemberCount failed invalid count'); + window?.log?.warn( + `getMemberCount failed invalid count for serverUrl:'${roomInfos.serverUrl}' roomId:'${roomInfos.roomId}'` + ); return; } diff --git a/ts/opengroup/opengroupV2/OpenGroupAPIV2CompactPoll.ts b/ts/opengroup/opengroupV2/OpenGroupAPIV2CompactPoll.ts index e2379cd76..a7342b2e2 100644 --- a/ts/opengroup/opengroupV2/OpenGroupAPIV2CompactPoll.ts +++ b/ts/opengroup/opengroupV2/OpenGroupAPIV2CompactPoll.ts @@ -203,7 +203,7 @@ const getCompactPollRequest = async ( roomRequestContent.from_message_server_id = lastMessageFetchedServerID; } else { window?.log?.info( - "We've been away for a long time... Only fetching last messages of room" + `We've been away for a long time... Only fetching last messages of room '${roomId}'` ); } diff --git a/ts/opengroup/opengroupV2/OpenGroupServerPoller.ts b/ts/opengroup/opengroupV2/OpenGroupServerPoller.ts index a2a23cc63..9c2367e75 100644 --- a/ts/opengroup/opengroupV2/OpenGroupServerPoller.ts +++ b/ts/opengroup/opengroupV2/OpenGroupServerPoller.ts @@ -70,6 +70,7 @@ export class OpenGroupServerPoller { constructor(roomInfos: Array) { autoBind(this); + if (!roomInfos?.length) { throw new Error('Empty roomInfos list'); } @@ -80,9 +81,12 @@ export class OpenGroupServerPoller { throw new Error('All rooms must be for the same serverUrl'); } // first verify the rooms we got are all from on the same server - + window?.log?.info(`Creating a new OpenGroupServerPoller for url ${firstUrl}`); this.serverUrl = firstUrl; roomInfos.forEach(r => { + window?.log?.info( + `Adding room on construct for url serverUrl: ${firstUrl}, roomId:'${r.roomId}' to poller:${this.serverUrl}` + ); this.roomIdsToPoll.add(r.roomId); }); @@ -114,6 +118,9 @@ export class OpenGroupServerPoller { window?.log?.info('skipping addRoomToPoll of already polled room:', room); return; } + window?.log?.info( + `Adding room on addRoomToPoll for url serverUrl: ${this.serverUrl}, roomId:'${room.roomId}' to poller:${this.serverUrl}` + ); this.roomIdsToPoll.add(room.roomId); // if we are not already polling right now, trigger a polling diff --git a/ts/session/onions/onionPath.ts b/ts/session/onions/onionPath.ts index 210aa432b..40670e24e 100644 --- a/ts/session/onions/onionPath.ts +++ b/ts/session/onions/onionPath.ts @@ -360,8 +360,12 @@ async function buildNewOnionPathsWorker() { 'LokiSnodeAPI::buildNewOnionPaths - Too few nodes to build an onion path! Refreshing pool and retrying' ); await SnodePool.refreshRandomPool(); - // FIXME this is a recursive call limited to only one call at a time. This cannot work - await buildNewOnionPathsOneAtATime(); + // this is a recursive call limited to only one call at a time. we use the timeout + // here to make sure we retry this call if we cannot get enough otherNodes + + setTimeout(async () => { + await buildNewOnionPathsOneAtATime(); + }, 100); return; } diff --git a/ts/session/onions/onionSend.ts b/ts/session/onions/onionSend.ts index d768ecd88..307e05feb 100644 --- a/ts/session/onions/onionSend.ts +++ b/ts/session/onions/onionSend.ts @@ -14,6 +14,7 @@ import { PROTOCOLS } from '../constants'; import { toHex } from '../utils/String'; import pRetry from 'p-retry'; +// FIXME audric we should soon be able to get rid of that const FILESERVER_HOSTS = [ 'file-dev.lokinet.org', 'file.lokinet.org',