fix: groupInvite tracks abort signal to cancel request

pull/3281/head
Audric Ackermann 3 months ago
parent f0141b5894
commit d59ecbb471
No known key found for this signature in database

@ -348,6 +348,7 @@ export class MessageQueueCl {
const { effectiveTimestamp } = await MessageSender.sendSingleMessage({ const { effectiveTimestamp } = await MessageSender.sendSingleMessage({
message: rawMessage, message: rawMessage,
isSyncMessage, isSyncMessage,
abortSignal: null,
}); });
window.log.debug('sendSingleMessage took ', Date.now() - start); window.log.debug('sendSingleMessage took ', Date.now() - start);

@ -236,8 +236,10 @@ async function sendSingleMessage({
retryMinTimeout = 100, retryMinTimeout = 100,
attempts = 3, attempts = 3,
isSyncMessage, isSyncMessage,
abortSignal,
}: { }: {
message: OutgoingRawMessage; message: OutgoingRawMessage;
abortSignal: MergedAbortSignal | null;
attempts?: number; attempts?: number;
retryMinTimeout?: number; // in ms retryMinTimeout?: number; // in ms
isSyncMessage: boolean; isSyncMessage: boolean;
@ -301,7 +303,7 @@ async function sendSingleMessage({
associatedWith: destination, associatedWith: destination,
allow401s: false, allow401s: false,
method: 'sequence', method: 'sequence',
abortSignal: null, abortSignal,
}); });
await handleBatchResultWithSubRequests({ batchResult, subRequests, destination }); await handleBatchResultWithSubRequests({ batchResult, subRequests, destination });

@ -555,6 +555,7 @@ export async function USER_callRecipient(recipient: string) {
const { wrappedEnvelope } = await MessageSender.sendSingleMessage({ const { wrappedEnvelope } = await MessageSender.sendSingleMessage({
message: rawPreOffer, message: rawPreOffer,
isSyncMessage: false, isSyncMessage: false,
abortSignal: null,
}); });
void PnServer.notifyPnServer(wrappedEnvelope, recipient); void PnServer.notifyPnServer(wrappedEnvelope, recipient);

@ -245,6 +245,7 @@ class GroupInviteJob extends PersistedJob<GroupInvitePersistedData> {
MessageSender.sendSingleMessage({ MessageSender.sendSingleMessage({
message: rawMessage, message: rawMessage,
isSyncMessage: false, isSyncMessage: false,
abortSignal: controller.signal,
}), }),
10 * DURATION.SECONDS, 10 * DURATION.SECONDS,
controller controller

@ -203,20 +203,23 @@ describe('MessageQueue', () => {
.then(() => messageQueueStub.processPending(device)); .then(() => messageQueueStub.processPending(device));
// The cb is only invoke is all reties fails. Here we poll until the messageSentHandlerFailed was invoked as this is what we want to do // The cb is only invoke is all reties fails. Here we poll until the messageSentHandlerFailed was invoked as this is what we want to do
return PromiseUtils.poll(done => { return PromiseUtils.poll(
if (messageSentHandlerFailedStub.callCount === 1) { done => {
try { if (messageSentHandlerFailedStub.callCount === 1) {
expect(messageSentHandlerFailedStub.callCount).to.be.equal(1); try {
expect(messageSentHandlerFailedStub.lastCall.args[0].identifier).to.be.equal( expect(messageSentHandlerFailedStub.callCount).to.be.equal(1);
message.identifier expect(messageSentHandlerFailedStub.lastCall.args[0].identifier).to.be.equal(
); message.identifier
expect(messageSentHandlerFailedStub.lastCall.args[1].message).to.equal('failure'); );
done(); expect(messageSentHandlerFailedStub.lastCall.args[1].message).to.equal('failure');
} catch (e) { done();
done(e); } catch (e) {
done(e);
}
} }
} },
}, {interval:5}); { interval: 5 }
);
}); });
}); });
}); });

@ -88,6 +88,7 @@ describe('MessageSender', () => {
attempts: 3, attempts: 3,
retryMinTimeout: 10, retryMinTimeout: 10,
isSyncMessage: false, isSyncMessage: false,
abortSignal: null,
}); });
await expectAsyncToThrow(promise, 'Failed to encrypt'); await expectAsyncToThrow(promise, 'Failed to encrypt');
expect(sessionMessageAPISendStub.callCount).to.equal(0); expect(sessionMessageAPISendStub.callCount).to.equal(0);
@ -100,6 +101,7 @@ describe('MessageSender', () => {
attempts: 3, attempts: 3,
retryMinTimeout: 10, retryMinTimeout: 10,
isSyncMessage: false, isSyncMessage: false,
abortSignal: null,
}); });
expect(doSnodeBatchRequestStub.callCount).to.equal(1); expect(doSnodeBatchRequestStub.callCount).to.equal(1);
}); });
@ -114,6 +116,7 @@ describe('MessageSender', () => {
attempts, attempts,
retryMinTimeout: 10, retryMinTimeout: 10,
isSyncMessage: false, isSyncMessage: false,
abortSignal: null,
}); });
await expect(promise).is.rejectedWith('API error'); await expect(promise).is.rejectedWith('API error');
expect(doSnodeBatchRequestStub.callCount).to.equal(attempts); expect(doSnodeBatchRequestStub.callCount).to.equal(attempts);
@ -127,6 +130,7 @@ describe('MessageSender', () => {
attempts: 3, attempts: 3,
retryMinTimeout: 10, retryMinTimeout: 10,
isSyncMessage: false, isSyncMessage: false,
abortSignal: null,
}); });
expect(doSnodeBatchRequestStub.callCount).to.equal(2); expect(doSnodeBatchRequestStub.callCount).to.equal(2);
}); });
@ -160,6 +164,7 @@ describe('MessageSender', () => {
attempts: 3, attempts: 3,
retryMinTimeout: 10, retryMinTimeout: 10,
isSyncMessage: false, isSyncMessage: false,
abortSignal: null,
}); });
const args = doSnodeBatchRequestStub.getCall(0).args; const args = doSnodeBatchRequestStub.getCall(0).args;
@ -203,6 +208,7 @@ describe('MessageSender', () => {
attempts: 3, attempts: 3,
retryMinTimeout: 10, retryMinTimeout: 10,
isSyncMessage: false, isSyncMessage: false,
abortSignal: null,
}); });
const firstArg = doSnodeBatchRequestStub.getCall(0).args[0]; const firstArg = doSnodeBatchRequestStub.getCall(0).args[0];
@ -255,6 +261,7 @@ describe('MessageSender', () => {
attempts: 3, attempts: 3,
retryMinTimeout: 10, retryMinTimeout: 10,
isSyncMessage: false, isSyncMessage: false,
abortSignal: null,
}); });
const firstArg = doSnodeBatchRequestStub.getCall(0).args[0]; const firstArg = doSnodeBatchRequestStub.getCall(0).args[0];

Loading…
Cancel
Save