Merge pull request 'fix crash when request is closed' (#11) from development into master
Reviewed-on: #11
This commit is contained in:
commit
ad082c54d7
3 changed files with 14 additions and 8 deletions
|
@ -19,7 +19,10 @@ export const GET = async ({ request, locals, params }) => {
|
||||||
const metadata = await minio.statObject(BUCKET, upload.thumbnail.fileName);
|
const metadata = await minio.statObject(BUCKET, upload.thumbnail.fileName);
|
||||||
|
|
||||||
const ac = new AbortController();
|
const ac = new AbortController();
|
||||||
ac.signal.onabort = () => object.destroy;
|
ac.signal.onabort = () => {
|
||||||
|
object.destroy();
|
||||||
|
object.removeAllListeners();
|
||||||
|
};
|
||||||
|
|
||||||
const stream = new ReadableStream({
|
const stream = new ReadableStream({
|
||||||
start(controller) {
|
start(controller) {
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import { getUpload } from '$lib/server/database.js';
|
import { getUpload } from '$lib/server/database.js';
|
||||||
import minio, { BUCKET } from '$lib/server/minio';
|
import minio, { BUCKET } from '$lib/server/minio';
|
||||||
import { error } from '@sveltejs/kit';
|
import { error } from '@sveltejs/kit';
|
||||||
|
import { setTimeout } from 'node:timers/promises';
|
||||||
|
|
||||||
export const GET = async ({ params, locals }) => {
|
export const GET = async ({ params, locals }) => {
|
||||||
let id: any = params.id.split('.');
|
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 metadata = await minio.statObject(BUCKET, `${file.uploader.id}/${file.internalName}`);
|
||||||
|
|
||||||
const ac = new AbortController();
|
const ac = new AbortController();
|
||||||
ac.signal.onabort = () => object.destroy;
|
ac.signal.onabort = () => {
|
||||||
|
object.destroy();
|
||||||
|
object.removeAllListeners();
|
||||||
|
};
|
||||||
|
|
||||||
const stream = new ReadableStream({
|
const stream = new ReadableStream({
|
||||||
start(controller) {
|
start(controller) {
|
||||||
|
@ -25,11 +29,7 @@ export const GET = async ({ params, locals }) => {
|
||||||
controller.enqueue(chunk);
|
controller.enqueue(chunk);
|
||||||
});
|
});
|
||||||
object.on('end', () => {
|
object.on('end', () => {
|
||||||
try {
|
|
||||||
controller.close();
|
controller.close();
|
||||||
} catch (e) {
|
|
||||||
console.log('Tried to close closed stream', id);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
cancel() {
|
cancel() {
|
||||||
|
|
|
@ -27,7 +27,10 @@ export const GET = async ({ params, locals }) => {
|
||||||
const metadata = await minio.statObject(BUCKET, `${file.uploader.id}/${file.internalName}`);
|
const metadata = await minio.statObject(BUCKET, `${file.uploader.id}/${file.internalName}`);
|
||||||
|
|
||||||
const ac = new AbortController();
|
const ac = new AbortController();
|
||||||
ac.signal.onabort = () => object.destroy;
|
ac.signal.onabort = () => {
|
||||||
|
object.destroy();
|
||||||
|
object.removeAllListeners();
|
||||||
|
};
|
||||||
|
|
||||||
const stream = new ReadableStream({
|
const stream = new ReadableStream({
|
||||||
start(controller) {
|
start(controller) {
|
||||||
|
|
Loading…
Reference in a new issue