Trying to fix memory leak
This commit is contained in:
@@ -384,7 +384,7 @@ class FileController {
|
||||
|
||||
await this.chunkService.streamVideo(user, fileID, headers, res, req);
|
||||
|
||||
console.log("stream finished");
|
||||
//console.log("stream finished");
|
||||
|
||||
} catch (e) {
|
||||
|
||||
|
||||
@@ -256,14 +256,15 @@ class FileSystemService implements ChunkInterface {
|
||||
|
||||
readStream.pipe(decipher);
|
||||
|
||||
req.on("close", () => {
|
||||
// console.log("req closed");
|
||||
readStream.destroy();
|
||||
})
|
||||
// req.on("close", () => {
|
||||
// // console.log("req closed");
|
||||
// readStream.destroy();
|
||||
// })
|
||||
|
||||
const tempUUID = req.params.uuid;
|
||||
|
||||
await awaitStreamVideo(start, end, differenceStart, decipher, res, tempUUID, allStreamsToErrorCatch);
|
||||
await awaitStreamVideo(start, end, differenceStart, decipher, res, req, tempUUID, allStreamsToErrorCatch);
|
||||
console.log("Video Stream Finished");
|
||||
}
|
||||
|
||||
getPublicDownload = async(fileID: string, tempToken: any, res: Response) => {
|
||||
|
||||
@@ -279,15 +279,15 @@ class MongoService implements ChunkInterface {
|
||||
|
||||
readStream.pipe(decipher);
|
||||
|
||||
req.on("close", () => {
|
||||
// console.log("req closed");
|
||||
readStream.destroy();
|
||||
})
|
||||
// req.on("close", () => {
|
||||
// // console.log("req closed");
|
||||
// readStream.destroy();
|
||||
// })
|
||||
|
||||
|
||||
const tempUUID = req.params.uuid;
|
||||
|
||||
await awaitStreamVideo(start, end, differenceStart, decipher, res, tempUUID, allStreamsToErrorCatch);
|
||||
await awaitStreamVideo(start, end, differenceStart, decipher, res, req, tempUUID, allStreamsToErrorCatch);
|
||||
}
|
||||
|
||||
deleteFile = async(userID: string, fileID: string) => {
|
||||
|
||||
@@ -213,10 +213,10 @@ class S3Service implements ChunkInterface {
|
||||
// console.log("req pause")
|
||||
// })
|
||||
|
||||
req.on("close", () => {
|
||||
// console.log("req closed");
|
||||
s3ReadStream.destroy();
|
||||
})
|
||||
// req.on("close", () => {
|
||||
// // console.log("req closed");
|
||||
// s3ReadStream.destroy();
|
||||
// })
|
||||
|
||||
//req.on("")
|
||||
|
||||
@@ -224,7 +224,7 @@ class S3Service implements ChunkInterface {
|
||||
// console.log("req end");
|
||||
// })
|
||||
|
||||
await awaitStreamVideo(start, end, differenceStart, decipher, res, tempUUID, allStreamsToErrorCatch);
|
||||
await awaitStreamVideo(start, end, differenceStart, decipher, res, req, tempUUID, allStreamsToErrorCatch);
|
||||
}
|
||||
|
||||
getThumbnail = async(user: UserInterface, id: string) => {
|
||||
|
||||
@@ -3,7 +3,7 @@ import tempStorage from "../../../tempStorage/tempStorage";
|
||||
import uuid from "uuid";
|
||||
|
||||
const awaitStreamVideo = (start: number, end:number, differenceStart: number,
|
||||
decipher: any, res: Response, tempUUID: string, streamsToErrorCatch: any[]) => {
|
||||
decipher: any, res: Response, req: Request, tempUUID: string, streamsToErrorCatch: any[]) => {
|
||||
|
||||
const currentUUID = uuid.v4();
|
||||
tempStorage[tempUUID] = currentUUID;
|
||||
@@ -11,7 +11,18 @@ const awaitStreamVideo = (start: number, end:number, differenceStart: number,
|
||||
return new Promise((resolve, reject) => {
|
||||
|
||||
let firstBytesRemoved = false;
|
||||
let sizeCounter = 0;
|
||||
//let sizeCounter = 0;
|
||||
|
||||
req.on("close", () => {
|
||||
streamsToErrorCatch.forEach((stream) => {
|
||||
stream.destroy();
|
||||
})
|
||||
resolve();
|
||||
})
|
||||
|
||||
req.on("end", () => {
|
||||
resolve();
|
||||
})
|
||||
|
||||
decipher.on("data", (data: Buffer | string) => {
|
||||
|
||||
@@ -32,6 +43,8 @@ const awaitStreamVideo = (start: number, end:number, differenceStart: number,
|
||||
//delete tempStorage[tempUUID];
|
||||
}
|
||||
|
||||
//console.log("data", currentUUID);
|
||||
|
||||
//console.log("stream passed", currentUUID);
|
||||
|
||||
// if (tempStorage[tempUUID] !== undefined && tempStorage[tempUUID] !== currentUUID) {
|
||||
@@ -70,7 +83,7 @@ const awaitStreamVideo = (start: number, end:number, differenceStart: number,
|
||||
|
||||
firstBytesRemoved = true;
|
||||
|
||||
sizeCounter += dataBack.length;
|
||||
//sizeCounter += dataBack.length;
|
||||
|
||||
res.write(dataBack);
|
||||
res.flush();
|
||||
@@ -80,7 +93,7 @@ const awaitStreamVideo = (start: number, end:number, differenceStart: number,
|
||||
|
||||
res.write(data);
|
||||
res.flush();
|
||||
sizeCounter += data.length;
|
||||
//sizeCounter += data.length;
|
||||
})
|
||||
|
||||
decipher.on("end", () => {
|
||||
|
||||
Reference in New Issue
Block a user