Upload file lên GCP nhưng bị memory leak
Chào mọi người, e đang gặp vấn đề là upload lên GCP nhưng khi upload xog thì bị dính memory leak
let streamFile = createReadStream();
streamFile
.pipe(transformer)
.on('error', () => reject(error))
.pipe(
file.createWriteStream({
public: IsPublicImage,
metadata: { contentType: mimetype },
resumable: false,
}),
)
.on('finish', async () => {
streamFile.deytroy();
file = null;
transformer = null;
streamFile = null;
return IsPublicImage
? resolve(`pathObject(fileName)`)
: resolve(fileName);
})
.on('error', () => reject(error)),
```
Mọi người cho e hỏi có cách nào upload lên GCP mà không bị memory leak không ạ, e cảm ơn
1 CÂU TRẢ LỜI
Bạn tách phần release ở chỗ handle finish ra thành 1 hàm gọi là release() {...}. Rồi gọi trong cả các chỗ bị error. Ngoài ra bạn kiểm tra kỹ lại xem on('finish') có đúng khi sử dụng trong trường hợp này không.
mình có thử rồi mà vẫn k được bác ạ, thử chuyển finish -> end luôn rồi.
@thuongne123 Thử console log xem nó có vào không đã nhé
@quangnv1311 Sợ rằng có thể nó không thể finish hoặc end nên bị stuck mãi ở đó mà mình không biết.
@quangnv1311 finish thì vào end thì k. console xem thử readStream thì cũng báo destroyed.
@thuongne123 Thế bạn chắc chắn là bị memory leak chưa nhỉ. Bạn đang check memory leak bằng cách nào.
@quangnv1311 mình check Monitoring trên GCP, khi upload đoạn này, memory dựng đứng và clear, còn các request bth thì vẫn clear