fix(server/database streams): remove event listener on batch completion (#3938)
This commit is contained in:
@@ -36,12 +36,18 @@ const apiRouterFactory = () => {
|
||||
streamId: req.params.streamId,
|
||||
objectIds: getObjectsRequestBody.objects
|
||||
})
|
||||
|
||||
// https://knexjs.org/faq/recipes.html#manually-closing-streams
|
||||
// https://github.com/knex/knex/issues/2324
|
||||
res.on('close', () => {
|
||||
const responseCloseHandler = () => {
|
||||
dbStream.end()
|
||||
dbStream.destroy()
|
||||
}
|
||||
|
||||
dbStream.on('close', () => {
|
||||
res.removeListener('close', responseCloseHandler)
|
||||
})
|
||||
res.on('close', responseCloseHandler)
|
||||
|
||||
const speckleObjStream = new SpeckleObjectsStream(isSimpleTextRequested(req))
|
||||
|
||||
|
||||
@@ -41,12 +41,18 @@ const objectsRouterFactory = () => {
|
||||
streamId: req.params.streamId,
|
||||
objectId: req.params.objectId
|
||||
})
|
||||
|
||||
// https://knexjs.org/faq/recipes.html#manually-closing-streams
|
||||
// https://github.com/knex/knex/issues/2324
|
||||
res.on('close', () => {
|
||||
const responseCloseHandler = () => {
|
||||
dbStream.end()
|
||||
dbStream.destroy()
|
||||
}
|
||||
|
||||
dbStream.on('close', () => {
|
||||
res.removeListener('close', responseCloseHandler)
|
||||
})
|
||||
res.on('close', responseCloseHandler)
|
||||
|
||||
const speckleObjStream = new SpeckleObjectsStream(isSimpleTextRequested(req))
|
||||
const gzipStream = zlib.createGzip()
|
||||
|
||||
@@ -94,12 +94,18 @@ export default (app: Application) => {
|
||||
streamId: req.params.streamId,
|
||||
objectIds: childrenChunk
|
||||
})
|
||||
|
||||
// https://knexjs.org/faq/recipes.html#manually-closing-streams
|
||||
// https://github.com/knex/knex/issues/2324
|
||||
res.on('close', () => {
|
||||
const responseCloseHandler = () => {
|
||||
dbStream.end()
|
||||
dbStream.destroy()
|
||||
}
|
||||
|
||||
dbStream.on('close', () => {
|
||||
res.removeListener('close', responseCloseHandler)
|
||||
})
|
||||
res.on('close', responseCloseHandler)
|
||||
|
||||
await new Promise((resolve, reject) => {
|
||||
dbStream.once('end', resolve)
|
||||
|
||||
@@ -63,12 +63,19 @@ export default (app: express.Express) => {
|
||||
streamId: req.params.streamId,
|
||||
objectId: req.params.objectId
|
||||
})
|
||||
|
||||
// https://knexjs.org/faq/recipes.html#manually-closing-streams
|
||||
// https://github.com/knex/knex/issues/2324
|
||||
res.on('close', () => {
|
||||
const responseCloseHandler = () => {
|
||||
dbStream.end()
|
||||
dbStream.destroy()
|
||||
}
|
||||
|
||||
dbStream.on('close', () => {
|
||||
res.removeListener('close', responseCloseHandler)
|
||||
})
|
||||
res.on('close', responseCloseHandler)
|
||||
|
||||
const speckleObjStream = new SpeckleObjectsStream(simpleText)
|
||||
const gzipStream = zlib.createGzip()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user