aws / aws/aws-lambda-nodejs-runtime-interface-client

Override `highWaterMark` didn't work

オープン
#94 コメント 5 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
TypeScript
スター
224
フォーク
60
PR マージ指標
30日以内にマージされた PR はありません

説明

The following code will send the data `BEFORE` 6s:

```js
const util = require('node:util');
const HANDLER_HIGHWATERMARK = Symbol.for(
'aws.lambda.runtime.handler.streaming.highWaterMark',
);

const handler = async (event, responseStream, context) => {
responseStream.setContentType('text/html; charset=utf-8');

responseStream.write("Thinking...");
responseStream.write("a".repeat(64 * 1024));

setTimeout(function() {
responseStream.write("b".repeat(64 * 1024));
}, 3000);

setTimeout(function() {
responseStream.write("After 6s");
responseStream.end();
}, 6000);
};

handler[HANDLER_HIGHWATERMARK] = 512;

exports.handler = awslambda.streamifyResponse(handler, {
highWaterMark: 512
}
);
```

The following code will only send data `AFTER` 6s.

```js
const util = require('node:util');
const HANDLER_HIGHWATERMARK = Symbol.for(
'aws.lambda.runtime.handler.streaming.highWaterMark',
);

const handler = async (event, responseStream, context) => {
responseStream.setContentType('text/html; charset=utf-8');

responseStream.write("Thinking...");
responseStream.write("a".repeat(1 * 1024));

setTimeout(function() {
responseStream.write("b".repeat(1 * 1024));
}, 3000);

setTimeout(function() {
responseStream.write("After 6s");
responseStream.end();
}, 6000);
};

handler[HANDLER_HIGHWATERMARK] = 512;

exports.handler = awslambda.streamifyResponse(handler, {
highWaterMark: 512
}
);
```

From what I tested, the default `highWaterMark` is `64Kb`, but there is no way to override it to be lower, I tried two different ways to do it.

This causes weird issues where I can't send some tiny text and then wait 6s to send more data, it will be sent as a single chunk only after 6s.

This issue was initially discovered at https://github.com/H4ad/serverless-adapter/issues/166

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。