如何手动结束由 Table#createReadStream() 创建的流?
How to manually end stream created by Table#createReadStream()?
我想在流中处理来自 BigTable table 的数据,但提前结束流。
我将此代码用于 Node.js(稍作修改 https://github.com/googleapis/nodejs-bigtable/blob/master/samples/document-snippets/table.js#L215):
const stream = new BigTable({projectId, keyFilename})
.instance(instanceId)
.table(tableName)
.createReadStream();
stream.on('data', () => {
stream.end();
});
stream.on('end', () => {
console.log('end');
stream.destroy();
});
stream.on('close', () => {
console.log('close');
});
输出为:
end
close
但是这个过程还没有结束。
所以,我相信有些资源没有关闭。
应该如何停播和关闭相关资源?
这看起来可能是客户端库中的错误。我 re-posted 你的问题是 github 问题:
https://github.com/googleapis/nodejs-bigtable/issues/506
更新:此问题已得到修复,https://github.com/googleapis/nodejs-bigtable/pull/507. Client version https://github.com/googleapis/nodejs-bigtable/tree/release-v2.0.4 稍后包含修复。
我想在流中处理来自 BigTable table 的数据,但提前结束流。 我将此代码用于 Node.js(稍作修改 https://github.com/googleapis/nodejs-bigtable/blob/master/samples/document-snippets/table.js#L215):
const stream = new BigTable({projectId, keyFilename})
.instance(instanceId)
.table(tableName)
.createReadStream();
stream.on('data', () => {
stream.end();
});
stream.on('end', () => {
console.log('end');
stream.destroy();
});
stream.on('close', () => {
console.log('close');
});
输出为:
end
close
但是这个过程还没有结束。 所以,我相信有些资源没有关闭。 应该如何停播和关闭相关资源?
这看起来可能是客户端库中的错误。我 re-posted 你的问题是 github 问题: https://github.com/googleapis/nodejs-bigtable/issues/506
更新:此问题已得到修复,https://github.com/googleapis/nodejs-bigtable/pull/507. Client version https://github.com/googleapis/nodejs-bigtable/tree/release-v2.0.4 稍后包含修复。