fix crash when request is closed

This commit is contained in:
cirroskais 2024-10-04 05:11:12 -04:00
parent baa3dd45dd
commit 6bb97f460d
No known key found for this signature in database
GPG key ID: 5FC73EBF2678E33D
3 changed files with 14 additions and 8 deletions

View file

@ -19,7 +19,10 @@ export const GET = async ({ request, locals, params }) => {
const metadata = await minio.statObject(BUCKET, upload.thumbnail.fileName);
const ac = new AbortController();
ac.signal.onabort = () => object.destroy;
ac.signal.onabort = () => {
object.destroy();
object.removeAllListeners();
};
const stream = new ReadableStream({
start(controller) {

View file

@ -1,6 +1,7 @@
import { getUpload } from '$lib/server/database.js';
import minio, { BUCKET } from '$lib/server/minio';
import { error } from '@sveltejs/kit';
import { setTimeout } from 'node:timers/promises';
export const GET = async ({ params, locals }) => {
let id: any = params.id.split('.');
@ -17,7 +18,10 @@ export const GET = async ({ params, locals }) => {
const metadata = await minio.statObject(BUCKET, `${file.uploader.id}/${file.internalName}`);
const ac = new AbortController();
ac.signal.onabort = () => object.destroy;
ac.signal.onabort = () => {
object.destroy();
object.removeAllListeners();
};
const stream = new ReadableStream({
start(controller) {
@ -25,11 +29,7 @@ export const GET = async ({ params, locals }) => {
controller.enqueue(chunk);
});
object.on('end', () => {
try {
controller.close();
} catch (e) {
console.log('Tried to close closed stream', id);
}
});
},
cancel() {

View file

@ -27,7 +27,10 @@ export const GET = async ({ params, locals }) => {
const metadata = await minio.statObject(BUCKET, `${file.uploader.id}/${file.internalName}`);
const ac = new AbortController();
ac.signal.onabort = () => object.destroy;
ac.signal.onabort = () => {
object.destroy();
object.removeAllListeners();
};
const stream = new ReadableStream({
start(controller) {