Skip to content

Commit

Permalink
[FIX] 409's take the description sent by the server - added a duplica…
Browse files Browse the repository at this point in the history
…te enum with the proper name to code symmetry.
  • Loading branch information
aricart committed May 4, 2022
1 parent eb836b8 commit 0808bfc
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 12 deletions.
1 change: 1 addition & 0 deletions nats-base-client/error.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ export enum ErrorCode {
JetStream404NoMessages = "404",
JetStream408RequestTimeout = "408",
JetStream409MaxAckPendingExceeded = "409",
JetStream409MaxWaitingExceeded = "409",
JetStreamNotEnabled = "503",

// emitted by the server
Expand Down
9 changes: 5 additions & 4 deletions nats-base-client/jsutil.ts
Original file line number Diff line number Diff line change
Expand Up @@ -104,13 +104,14 @@ export function checkJsErrorCode(
case 404:
// 404 for jetstream will provide different messages ensure we
// keep whatever the server returned
return new NatsError(description, "404");
return new NatsError(description, ErrorCode.JetStream404NoMessages);
case 408:
return new NatsError(description, ErrorCode.JetStream408RequestTimeout);
case 409:
return NatsError.errorForCode(
ErrorCode.JetStream409MaxAckPendingExceeded,
new Error(description),
// the description can be exceeded max waiting or max ack pending
return new NatsError(
description,
ErrorCode.JetStream409MaxWaitingExceeded,
);
case 503:
return NatsError.errorForCode(
Expand Down
14 changes: 6 additions & 8 deletions tests/jetstream_test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3065,25 +3065,23 @@ Deno.test("jetstream - pull error: max_waiting", async () => {
async function expectError(
expires: number,
code: ErrorCode,
message?: string,
) {
): Promise<NatsError> {
const d = deferred<NatsError>();
try {
await js.pull(stream, "me", expires);
} catch (err) {
d.resolve(err);
assertEquals(err.code, code);
if (message) {
assertEquals(err.message, message);
}
}
return d;
}
await Promise.all([
const errors = await Promise.all([
expectError(
3000,
ErrorCode.JetStream408RequestTimeout,
"408 request canceled",
),
// this a server bug, it should be a 408
expectError(3000, ErrorCode.JetStream408RequestTimeout),
expectError(3000, ErrorCode.JetStream409MaxWaitingExceeded),
]);

await cleanup(ns, nc);
Expand Down

0 comments on commit 0808bfc

Please sign in to comment.