Skip to content

Commit 26a2210

Browse files
authored
(EAI-611) chatbot server 500 errs (#592)
1 parent 0bf7a5c commit 26a2210

File tree

6 files changed

+50
-37
lines changed

6 files changed

+50
-37
lines changed

package-lock.json

Lines changed: 42 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/mongodb-chatbot-server/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
"cors": "^2.8.5",
4343
"dotenv": "^16.0.3",
4444
"express": "^4.18.2",
45+
"express-promise-router": "^4.1.1",
4546
"express-rate-limit": "^6.10.0",
4647
"express-slow-down": "^1.6.0",
4748
"gpt3-tokenizer": "^1.1.5",

packages/mongodb-chatbot-server/src/routes/conversations/conversationsRouter.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import { Request, Router, RequestHandler, Response } from "express";
1+
import { Request, RequestHandler, Response } from "express";
2+
import Router from "express-promise-router";
23
import { rateLimit, Options as RateLimitOptions } from "express-rate-limit";
34
import slowDown, { Options as SlowDownOptions } from "express-slow-down";
45
import validateRequestSchema from "../../middleware/validateRequestSchema";

packages/mongodb-chatbot-server/src/utils.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,9 @@ export const sendErrorResponse = ({
5353
message: stripIndent`Responding with ${httpStatus} status and error message: ${errorMessage}.
5454
${errorDetails ? `Error details: ${errorDetails}` : ""}`,
5555
});
56-
return res.status(httpStatus).json({ error: errorMessage });
56+
if (!res.writableEnded) {
57+
return res.status(httpStatus).json({ error: errorMessage });
58+
}
5759
};
5860

5961
export function retryAsyncOperation<T>(

packages/mongodb-rag-core/src/DataStreamer.test.ts

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -80,28 +80,6 @@ describe("Data Streaming", () => {
8080
`data: {"type":"delta","data":"Once upon"}\n\ndata: {"type":"delta","data":" a time there was a"}\n\ndata: {"type":"delta","data":" very long string."}\n\n`
8181
);
8282
});
83-
84-
it("Bails out when a client closes a connection", async () => {
85-
res.emit("close");
86-
expect(dataStreamer.connected).toBe(false);
87-
expect(() =>
88-
dataStreamer.streamData({ type: "delta", data: "test" })
89-
).toThrow(Error);
90-
await expect(async () => {
91-
const stream = {
92-
[Symbol.asyncIterator]() {
93-
return {
94-
async next() {
95-
return {
96-
done: true,
97-
};
98-
},
99-
};
100-
},
101-
} as OpenAiStreamingResponse;
102-
await dataStreamer.stream({ stream });
103-
}).rejects.toThrow(Error);
104-
});
10583
});
10684

10785
function createChatCompletionWithDelta(

packages/mongodb-rag-core/src/DataStreamer.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Response } from "express";
22
import { OpenAiStreamingResponse } from "./llm";
33
import { References } from "./References";
4+
import { logger } from "./logger";
45

56
export function escapeNewlines(str: string): string {
67
return str.replaceAll(`\n`, `\\n`);
@@ -135,11 +136,8 @@ export function makeDataStreamer(): DataStreamer {
135136
throw new Error("Tried to connect SSE, but it was already connected.");
136137
}
137138
sse = makeServerSentEventDispatcher<SomeStreamEvent>(res);
138-
// If the client closes the connection, stop sending events
139139
res.on("close", () => {
140-
if (this.connected) {
141-
this.disconnect();
142-
}
140+
logger.info("SSE connection was closed.");
143141
});
144142
sse.connect();
145143
connected = true;

0 commit comments

Comments
 (0)