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({
message: rawMessage,
isSyncMessage,
abortSignal: null,
});
window.log.debug('sendSingleMessage took ', Date.now() - start);

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

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

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

@ -203,20 +203,23 @@ describe('MessageQueue', () => {
.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
return PromiseUtils.poll(done => {
if (messageSentHandlerFailedStub.callCount === 1) {
try {
expect(messageSentHandlerFailedStub.callCount).to.be.equal(1);
expect(messageSentHandlerFailedStub.lastCall.args[0].identifier).to.be.equal(
message.identifier
);
expect(messageSentHandlerFailedStub.lastCall.args[1].message).to.equal('failure');
done();
} catch (e) {
done(e);
return PromiseUtils.poll(
done => {
if (messageSentHandlerFailedStub.callCount === 1) {
try {
expect(messageSentHandlerFailedStub.callCount).to.be.equal(1);
expect(messageSentHandlerFailedStub.lastCall.args[0].identifier).to.be.equal(
message.identifier
);
expect(messageSentHandlerFailedStub.lastCall.args[1].message).to.equal('failure');
done();
} catch (e) {
done(e);
}
}
}
}, {interval:5});
},
{ interval: 5 }
);
});
});
});

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

Loading…
Cancel
Save