Trying to fix memory leak

This commit is contained in:
subnub
2020-05-11 17:48:17 -04:00
parent b0e5316885
commit 2481fc8a7f
5 changed files with 34 additions and 20 deletions
+1 -1
View File
@@ -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) => {
+5 -5
View File
@@ -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", () => {