@lodestar/reqresp 1.9.0-dev.5b5530b393 → 1.9.0-dev.61c838b84f
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/lib/ReqResp.d.ts +1 -1
- package/lib/ReqResp.js +3 -1
- package/lib/ReqResp.js.map +1 -1
- package/lib/encoders/responseEncode.d.ts +3 -1
- package/lib/encoders/responseEncode.js +4 -1
- package/lib/encoders/responseEncode.js.map +1 -1
- package/lib/encodingStrategies/sszSnappy/encode.d.ts +1 -1
- package/lib/encodingStrategies/sszSnappy/encode.js +3 -17
- package/lib/encodingStrategies/sszSnappy/encode.js.map +1 -1
- package/lib/encodingStrategies/sszSnappy/snappyFrames/common.d.ts +10 -0
- package/lib/encodingStrategies/sszSnappy/snappyFrames/common.js +10 -0
- package/lib/encodingStrategies/sszSnappy/snappyFrames/common.js.map +1 -0
- package/lib/encodingStrategies/sszSnappy/snappyFrames/compress.d.ts +3 -0
- package/lib/encodingStrategies/sszSnappy/snappyFrames/compress.js +50 -0
- package/lib/encodingStrategies/sszSnappy/snappyFrames/compress.js.map +1 -0
- package/lib/encodingStrategies/sszSnappy/snappyFrames/uncompress.js +1 -8
- package/lib/encodingStrategies/sszSnappy/snappyFrames/uncompress.js.map +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.js +2 -2
- package/lib/index.js.map +1 -1
- package/lib/metrics.d.ts +2 -0
- package/lib/metrics.js +18 -2
- package/lib/metrics.js.map +1 -1
- package/lib/request/errors.d.ts +4 -2
- package/lib/request/errors.js +9 -2
- package/lib/request/errors.js.map +1 -1
- package/lib/request/index.d.ts +3 -1
- package/lib/request/index.js +4 -1
- package/lib/request/index.js.map +1 -1
- package/lib/response/errors.d.ts +5 -2
- package/lib/response/errors.js +15 -2
- package/lib/response/errors.js.map +1 -1
- package/lib/response/index.d.ts +3 -1
- package/lib/response/index.js +9 -2
- package/lib/response/index.js.map +1 -1
- package/package.json +11 -9
package/README.md
CHANGED
package/lib/ReqResp.d.ts
CHANGED
|
@@ -67,7 +67,7 @@ export declare class ReqResp {
|
|
|
67
67
|
getRegisteredProtocols(): ProtocolID[];
|
|
68
68
|
start(): Promise<void>;
|
|
69
69
|
stop(): Promise<void>;
|
|
70
|
-
|
|
70
|
+
sendRequest(peerId: PeerId, method: string, versions: number[], encoding: Encoding, body: Uint8Array): AsyncIterable<ResponseIncoming>;
|
|
71
71
|
private getRequestHandler;
|
|
72
72
|
protected onIncomingRequest(_peerId: PeerId, _protocol: ProtocolDescriptor): void;
|
|
73
73
|
protected onIncomingRequestError(_protocol: ProtocolDescriptor, _error: RequestError): void;
|
package/lib/ReqResp.js
CHANGED
|
@@ -90,6 +90,7 @@ export class ReqResp {
|
|
|
90
90
|
setMaxListeners(Infinity, this.controller.signal);
|
|
91
91
|
}
|
|
92
92
|
async stop() {
|
|
93
|
+
this.rateLimiter.stop();
|
|
93
94
|
this.controller.abort();
|
|
94
95
|
}
|
|
95
96
|
// Helper to reduce code duplication
|
|
@@ -110,7 +111,7 @@ export class ReqResp {
|
|
|
110
111
|
protocolIDs.push(protocolID);
|
|
111
112
|
}
|
|
112
113
|
try {
|
|
113
|
-
yield* sendRequest({ logger: this.logger, libp2p: this.libp2p, peerClient }, peerId, protocols, protocolIDs, body, this.controller.signal, this.opts, this.reqCount++);
|
|
114
|
+
yield* sendRequest({ logger: this.logger, libp2p: this.libp2p, metrics: this.metrics, peerClient }, peerId, protocols, protocolIDs, body, this.controller.signal, this.opts, this.reqCount++);
|
|
114
115
|
}
|
|
115
116
|
catch (e) {
|
|
116
117
|
(_e = this.metrics) === null || _e === void 0 ? void 0 : _e.outgoingErrors.inc({ method });
|
|
@@ -141,6 +142,7 @@ export class ReqResp {
|
|
|
141
142
|
try {
|
|
142
143
|
await handleRequest({
|
|
143
144
|
logger: this.logger,
|
|
145
|
+
metrics: this.metrics,
|
|
144
146
|
stream,
|
|
145
147
|
peerId,
|
|
146
148
|
protocol: protocol,
|
package/lib/ReqResp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReqResp.js","sourceRoot":"","sources":["../src/ReqResp.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ReqResp.js","sourceRoot":"","sources":["../src/ReqResp.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,9 @@ import { RpcResponseStatusError } from "../interface.js";
|
|
|
10
10
|
* ```
|
|
11
11
|
* Note: `response` has zero or more chunks (denoted by `<>*`)
|
|
12
12
|
*/
|
|
13
|
-
export declare function responseEncodeSuccess(protocol: Protocol
|
|
13
|
+
export declare function responseEncodeSuccess(protocol: Protocol, cbs: {
|
|
14
|
+
onChunk: (chunkIndex: number) => void;
|
|
15
|
+
}): (source: AsyncIterable<ResponseOutgoing>) => AsyncIterable<Buffer>;
|
|
14
16
|
/**
|
|
15
17
|
* Yields byte chunks for a `<response_chunk>` with a non-zero response code `<result>`
|
|
16
18
|
* denoted as `<error_response>`
|
|
@@ -11,9 +11,12 @@ import { RespStatus } from "../interface.js";
|
|
|
11
11
|
* ```
|
|
12
12
|
* Note: `response` has zero or more chunks (denoted by `<>*`)
|
|
13
13
|
*/
|
|
14
|
-
export function responseEncodeSuccess(protocol) {
|
|
14
|
+
export function responseEncodeSuccess(protocol, cbs) {
|
|
15
15
|
return async function* responseEncodeSuccessTransform(source) {
|
|
16
|
+
let chunkIndex = 0;
|
|
16
17
|
for await (const chunk of source) {
|
|
18
|
+
// Postfix increment, return 0 as first chunk
|
|
19
|
+
cbs.onChunk(chunkIndex++);
|
|
17
20
|
// <result>
|
|
18
21
|
yield Buffer.from([RespStatus.SUCCESS]);
|
|
19
22
|
// <context-bytes> - from altair
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responseEncode.js","sourceRoot":"","sources":["../../src/encoders/responseEncode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAC,kBAAkB,EAAC,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAC,gBAAgB,EAAiE,MAAM,aAAa,CAAC;AAC7G,OAAO,EAAC,UAAU,EAAyB,MAAM,iBAAiB,CAAC;AAEnE;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAAkB;
|
|
1
|
+
{"version":3,"file":"responseEncode.js","sourceRoot":"","sources":["../../src/encoders/responseEncode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAC,kBAAkB,EAAC,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAC,gBAAgB,EAAiE,MAAM,aAAa,CAAC;AAC7G,OAAO,EAAC,UAAU,EAAyB,MAAM,iBAAiB,CAAC;AAEnE;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAAkB,EAClB,GAA4C;IAE5C,OAAO,KAAK,SAAS,CAAC,CAAC,8BAA8B,CAAC,MAAM;QAC1D,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE;YAChC,6CAA6C;YAC7C,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;YAE1B,WAAW;YACX,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;YAExC,gCAAgC;YAChC,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YACnE,IAAI,YAAY,EAAE;gBAChB,MAAM,YAAsB,CAAC;aAC9B;YAED,kDAAkD;YAClD,KAAK,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;SAC3D;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,mBAAmB,CACxC,QAAyC,EACzC,MAA8B,EAC9B,YAAoB;IAEpB,WAAW;IACX,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAE5B,+BAA+B;IAC/B,IAAI,YAAY,EAAE;QAChB,KAAK,CAAC,CAAC,kBAAkB,CAAC,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;KAC5D;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,YAAiC,EAAE,KAAuB;IACjF,QAAQ,YAAY,CAAC,IAAI,EAAE;QACzB,gBAAgB;QAChB,KAAK,gBAAgB,CAAC,KAAK;YACzB,OAAO,IAAI,CAAC;QAEd,4DAA4D;QAC5D,KAAK,gBAAgB,CAAC,UAAU;YAC9B,OAAO,YAAY,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAW,CAAC;KACnF;AACH,CAAC"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* <encoding-dependent-header> | <encoded-payload>
|
|
7
7
|
* ```
|
|
8
8
|
*/
|
|
9
|
-
export declare
|
|
9
|
+
export declare const writeSszSnappyPayload: (bytes: Uint8Array) => AsyncGenerator<Buffer>;
|
|
10
10
|
/**
|
|
11
11
|
* Buffered Snappy writer
|
|
12
12
|
*/
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import varint from "varint";
|
|
2
|
-
import {
|
|
3
|
-
import snappy from "@chainsafe/snappy-stream";
|
|
2
|
+
import { encodeSnappy } from "./snappyFrames/compress.js";
|
|
4
3
|
/**
|
|
5
4
|
* ssz_snappy encoding strategy writer.
|
|
6
5
|
* Yields byte chunks for encoded header and payload as defined in the spec:
|
|
@@ -8,9 +7,7 @@ import snappy from "@chainsafe/snappy-stream";
|
|
|
8
7
|
* <encoding-dependent-header> | <encoded-payload>
|
|
9
8
|
* ```
|
|
10
9
|
*/
|
|
11
|
-
export
|
|
12
|
-
yield* encodeSszSnappy(bodyData);
|
|
13
|
-
}
|
|
10
|
+
export const writeSszSnappyPayload = encodeSszSnappy;
|
|
14
11
|
/**
|
|
15
12
|
* Buffered Snappy writer
|
|
16
13
|
*/
|
|
@@ -19,17 +16,6 @@ export async function* encodeSszSnappy(bytes) {
|
|
|
19
16
|
yield Buffer.from(varint.encode(bytes.length));
|
|
20
17
|
// By first computing and writing the SSZ byte length, the SSZ encoder can then directly
|
|
21
18
|
// write the chunk contents to the stream. Snappy writer compresses frame by frame
|
|
22
|
-
|
|
23
|
-
* Use sync version (default) for compress as it is almost 2x faster than async
|
|
24
|
-
* one and most payloads are "1 chunk" and 100kb payloads (which would mostly be
|
|
25
|
-
* big bellatrix blocks with transactions) are just 2 chunks
|
|
26
|
-
*
|
|
27
|
-
* To use async version (for e.g. on big payloads) instantiate the stream with
|
|
28
|
-
* `createCompressStream({asyncCompress: true})`
|
|
29
|
-
*/
|
|
30
|
-
const stream = snappy.createCompressStream();
|
|
31
|
-
stream.write(bytes);
|
|
32
|
-
stream.end();
|
|
33
|
-
yield* source(stream);
|
|
19
|
+
yield* encodeSnappy(bytes);
|
|
34
20
|
}
|
|
35
21
|
//# sourceMappingURL=encode.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encode.js","sourceRoot":"","sources":["../../../src/encodingStrategies/sszSnappy/encode.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"encode.js","sourceRoot":"","sources":["../../../src/encodingStrategies/sszSnappy/encode.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAC,YAAY,EAAC,MAAM,4BAA4B,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,eAAgE,CAAC;AAEtG;;GAEG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,eAAe,CAAC,KAAa;IAClD,sFAAsF;IACtF,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAE/C,wFAAwF;IACxF,kFAAkF;IAClF,KAAK,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
export declare enum ChunkType {
|
|
3
|
+
IDENTIFIER = 255,
|
|
4
|
+
COMPRESSED = 0,
|
|
5
|
+
UNCOMPRESSED = 1,
|
|
6
|
+
PADDING = 254
|
|
7
|
+
}
|
|
8
|
+
export declare const IDENTIFIER: Buffer;
|
|
9
|
+
export declare const IDENTIFIER_FRAME: Buffer;
|
|
10
|
+
//# sourceMappingURL=common.d.ts.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export var ChunkType;
|
|
2
|
+
(function (ChunkType) {
|
|
3
|
+
ChunkType[ChunkType["IDENTIFIER"] = 255] = "IDENTIFIER";
|
|
4
|
+
ChunkType[ChunkType["COMPRESSED"] = 0] = "COMPRESSED";
|
|
5
|
+
ChunkType[ChunkType["UNCOMPRESSED"] = 1] = "UNCOMPRESSED";
|
|
6
|
+
ChunkType[ChunkType["PADDING"] = 254] = "PADDING";
|
|
7
|
+
})(ChunkType || (ChunkType = {}));
|
|
8
|
+
export const IDENTIFIER = Buffer.from([0x73, 0x4e, 0x61, 0x50, 0x70, 0x59]);
|
|
9
|
+
export const IDENTIFIER_FRAME = Buffer.from([0xff, 0x06, 0x00, 0x00, 0x73, 0x4e, 0x61, 0x50, 0x70, 0x59]);
|
|
10
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/encodingStrategies/sszSnappy/snappyFrames/common.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,uDAAiB,CAAA;IACjB,qDAAiB,CAAA;IACjB,yDAAmB,CAAA;IACnB,iDAAc,CAAA;AAChB,CAAC,EALW,SAAS,KAAT,SAAS,QAKpB;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAC5E,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import snappy from "snappy";
|
|
2
|
+
import crc32c from "@chainsafe/fast-crc32c";
|
|
3
|
+
import { ChunkType, IDENTIFIER_FRAME } from "./common.js";
|
|
4
|
+
// The logic in this file is largely copied (in simplified form) from https://github.com/ChainSafe/node-snappy-stream/
|
|
5
|
+
/**
|
|
6
|
+
* As per the snappy framing format for streams, the size of any uncompressed chunk can be
|
|
7
|
+
* no longer than 65536 bytes.
|
|
8
|
+
*
|
|
9
|
+
* From: https://github.com/google/snappy/blob/main/framing_format.txt#L90:L92
|
|
10
|
+
*/
|
|
11
|
+
const UNCOMPRESSED_CHUNK_SIZE = 65536;
|
|
12
|
+
function checksum(value) {
|
|
13
|
+
var _a, _b;
|
|
14
|
+
const x = crc32c.calculate(value);
|
|
15
|
+
const result = (_b = (_a = Buffer.allocUnsafe) === null || _a === void 0 ? void 0 : _a.call(Buffer, 4)) !== null && _b !== void 0 ? _b : Buffer.alloc(4);
|
|
16
|
+
// As defined in section 3 of https://github.com/google/snappy/blob/master/framing_format.txt
|
|
17
|
+
// And other implementations for reference:
|
|
18
|
+
// Go: https://github.com/golang/snappy/blob/2e65f85255dbc3072edf28d6b5b8efc472979f5a/snappy.go#L97
|
|
19
|
+
// Python: https://github.com/andrix/python-snappy/blob/602e9c10d743f71bef0bac5e4c4dffa17340d7b3/snappy/snappy.py#L70
|
|
20
|
+
// Mask the right hand to (32 - 17) = 15 bits -> 0x7fff, to keep correct 32 bit values.
|
|
21
|
+
// Shift the left hand with >>> for correct 32 bit intermediate result.
|
|
22
|
+
// Then final >>> 0 for 32 bits output
|
|
23
|
+
result.writeUInt32LE((((x >>> 15) | ((x & 0x7fff) << 17)) + 0xa282ead8) >>> 0, 0);
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
export async function* encodeSnappy(bytes) {
|
|
27
|
+
yield IDENTIFIER_FRAME;
|
|
28
|
+
for (let i = 0; i < bytes.length; i += UNCOMPRESSED_CHUNK_SIZE) {
|
|
29
|
+
const chunk = bytes.subarray(i, i + UNCOMPRESSED_CHUNK_SIZE);
|
|
30
|
+
const compressed = snappy.compressSync(chunk);
|
|
31
|
+
if (compressed.length < chunk.length) {
|
|
32
|
+
const size = compressed.length + 4;
|
|
33
|
+
yield Buffer.concat([
|
|
34
|
+
Buffer.from([ChunkType.COMPRESSED, size, size >> 8, size >> 16]),
|
|
35
|
+
checksum(chunk),
|
|
36
|
+
compressed,
|
|
37
|
+
]);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
const size = chunk.length + 4;
|
|
41
|
+
yield Buffer.concat([
|
|
42
|
+
//
|
|
43
|
+
Buffer.from([ChunkType.UNCOMPRESSED, size, size >> 8, size >> 16]),
|
|
44
|
+
checksum(chunk),
|
|
45
|
+
chunk,
|
|
46
|
+
]);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=compress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compress.js","sourceRoot":"","sources":["../../../../src/encodingStrategies/sszSnappy/snappyFrames/compress.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,MAAM,MAAM,wBAAwB,CAAC;AAC5C,OAAO,EAAC,SAAS,EAAE,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAExD,sHAAsH;AAEtH;;;;;GAKG;AACH,MAAM,uBAAuB,GAAG,KAAK,CAAC;AAEtC,SAAS,QAAQ,CAAC,KAAa;;IAC7B,MAAM,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,MAAA,MAAA,MAAM,CAAC,WAAW,uDAAG,CAAC,CAAC,mCAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE1D,6FAA6F;IAC7F,2CAA2C;IAC3C,mGAAmG;IACnG,qHAAqH;IACrH,uFAAuF;IACvF,uEAAuE;IACvE,sCAAsC;IACtC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAElF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,YAAY,CAAC,KAAa;IAC/C,MAAM,gBAAgB,CAAC;IAEvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,uBAAuB,EAAE;QAC9D,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,uBAAuB,CAAC,CAAC;QAC7D,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE;YACpC,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;YACnC,MAAM,MAAM,CAAC,MAAM,CAAC;gBAClB,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;gBAChE,QAAQ,CAAC,KAAK,CAAC;gBACf,UAAU;aACX,CAAC,CAAC;SACJ;aAAM;YACL,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YAC9B,MAAM,MAAM,CAAC,MAAM,CAAC;gBAClB,EAAE;gBACF,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;gBAClE,QAAQ,CAAC,KAAK,CAAC;gBACf,KAAK;aACN,CAAC,CAAC;SACJ;KACF;AACH,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { uncompress } from "snappyjs";
|
|
2
2
|
import { Uint8ArrayList } from "uint8arraylist";
|
|
3
|
-
|
|
3
|
+
import { ChunkType, IDENTIFIER } from "./common.js";
|
|
4
4
|
export class SnappyFramesUncompress {
|
|
5
5
|
constructor() {
|
|
6
6
|
this.buffer = new Uint8ArrayList();
|
|
@@ -58,13 +58,6 @@ export class SnappyFramesUncompress {
|
|
|
58
58
|
};
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
|
-
var ChunkType;
|
|
62
|
-
(function (ChunkType) {
|
|
63
|
-
ChunkType[ChunkType["IDENTIFIER"] = 255] = "IDENTIFIER";
|
|
64
|
-
ChunkType[ChunkType["COMPRESSED"] = 0] = "COMPRESSED";
|
|
65
|
-
ChunkType[ChunkType["UNCOMPRESSED"] = 1] = "UNCOMPRESSED";
|
|
66
|
-
ChunkType[ChunkType["PADDING"] = 254] = "PADDING";
|
|
67
|
-
})(ChunkType || (ChunkType = {}));
|
|
68
61
|
function getFrameSize(buffer, offset) {
|
|
69
62
|
return buffer.get(offset) + (buffer.get(offset + 1) << 8) + (buffer.get(offset + 2) << 16);
|
|
70
63
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uncompress.js","sourceRoot":"","sources":["../../../../src/encodingStrategies/sszSnappy/snappyFrames/uncompress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,EAAC,cAAc,EAAC,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"uncompress.js","sourceRoot":"","sources":["../../../../src/encodingStrategies/sszSnappy/snappyFrames/uncompress.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export { getMetrics, Metrics, MetricsRegister } from "./metrics.js";
|
|
|
3
3
|
export { Encoding as ReqRespEncoding } from "./types.js";
|
|
4
4
|
export * from "./types.js";
|
|
5
5
|
export * from "./interface.js";
|
|
6
|
-
export
|
|
7
|
-
export
|
|
6
|
+
export * from "./response/errors.js";
|
|
7
|
+
export * from "./request/errors.js";
|
|
8
8
|
export { collectExactOne, collectMaxResponse, formatProtocolID, parseProtocolID } from "./utils/index.js";
|
|
9
9
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.js
CHANGED
|
@@ -3,7 +3,7 @@ export { getMetrics } from "./metrics.js";
|
|
|
3
3
|
export { Encoding as ReqRespEncoding } from "./types.js"; // Expose enums renamed
|
|
4
4
|
export * from "./types.js";
|
|
5
5
|
export * from "./interface.js";
|
|
6
|
-
export
|
|
7
|
-
export
|
|
6
|
+
export * from "./response/errors.js";
|
|
7
|
+
export * from "./request/errors.js";
|
|
8
8
|
export { collectExactOne, collectMaxResponse, formatProtocolID, parseProtocolID } from "./utils/index.js";
|
|
9
9
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAc,MAAM,cAAc,CAAC;AAClD,OAAO,EAAC,UAAU,EAA2B,MAAM,cAAc,CAAC;AAClE,OAAO,EAAC,QAAQ,IAAI,eAAe,EAAC,MAAM,YAAY,CAAC,CAAC,uBAAuB;AAC/E,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAc,MAAM,cAAc,CAAC;AAClD,OAAO,EAAC,UAAU,EAA2B,MAAM,cAAc,CAAC;AAClE,OAAO,EAAC,QAAQ,IAAI,eAAe,EAAC,MAAM,YAAY,CAAC,CAAC,uBAAuB;AAC/E,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAC,eAAe,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAC,MAAM,kBAAkB,CAAC"}
|
package/lib/metrics.d.ts
CHANGED
|
@@ -52,6 +52,8 @@ export declare function getMetrics(register: MetricsRegister): {
|
|
|
52
52
|
incomingRequests: Gauge<"method">;
|
|
53
53
|
incomingRequestHandlerTime: Histogram<"method">;
|
|
54
54
|
incomingErrors: Gauge<"method">;
|
|
55
|
+
outgoingResponseTTFB: Histogram<"method">;
|
|
56
|
+
incomingResponseTTFB: Histogram<"method">;
|
|
55
57
|
dialErrors: Gauge<string>;
|
|
56
58
|
};
|
|
57
59
|
export {};
|
package/lib/metrics.js
CHANGED
|
@@ -14,7 +14,8 @@ export function getMetrics(register) {
|
|
|
14
14
|
name: "beacon_reqresp_outgoing_request_roundtrip_time_seconds",
|
|
15
15
|
help: "Histogram of outgoing requests round-trip time",
|
|
16
16
|
labelNames: ["method"],
|
|
17
|
-
|
|
17
|
+
// Spec sets RESP_TIMEOUT = 10 sec
|
|
18
|
+
buckets: [0.1, 0.2, 0.5, 1, 5, 10, 15, 60],
|
|
18
19
|
}),
|
|
19
20
|
outgoingErrors: register.gauge({
|
|
20
21
|
name: "beacon_reqresp_outgoing_requests_error_total",
|
|
@@ -30,13 +31,28 @@ export function getMetrics(register) {
|
|
|
30
31
|
name: "beacon_reqresp_incoming_request_handler_time_seconds",
|
|
31
32
|
help: "Histogram of incoming requests internal handling time",
|
|
32
33
|
labelNames: ["method"],
|
|
33
|
-
|
|
34
|
+
// Spec sets RESP_TIMEOUT = 10 sec
|
|
35
|
+
buckets: [0.1, 0.2, 0.5, 1, 5, 10],
|
|
34
36
|
}),
|
|
35
37
|
incomingErrors: register.gauge({
|
|
36
38
|
name: "beacon_reqresp_incoming_requests_error_total",
|
|
37
39
|
help: "Counts total failed responses handled per method",
|
|
38
40
|
labelNames: ["method"],
|
|
39
41
|
}),
|
|
42
|
+
outgoingResponseTTFB: register.histogram({
|
|
43
|
+
name: "beacon_reqresp_outgoing_response_ttfb_seconds",
|
|
44
|
+
help: "Time to first byte (TTFB) for outgoing responses",
|
|
45
|
+
labelNames: ["method"],
|
|
46
|
+
// Spec sets TTFB_TIMEOUT = 5 sec
|
|
47
|
+
buckets: [0.1, 1, 5],
|
|
48
|
+
}),
|
|
49
|
+
incomingResponseTTFB: register.histogram({
|
|
50
|
+
name: "beacon_reqresp_incoming_response_ttfb_seconds",
|
|
51
|
+
help: "Time to first byte (TTFB) for incoming responses",
|
|
52
|
+
labelNames: ["method"],
|
|
53
|
+
// Spec sets TTFB_TIMEOUT = 5 sec
|
|
54
|
+
buckets: [0.1, 1, 5],
|
|
55
|
+
}),
|
|
40
56
|
dialErrors: register.gauge({
|
|
41
57
|
name: "beacon_reqresp_dial_errors_total",
|
|
42
58
|
help: "Count total dial errors",
|
package/lib/metrics.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"AA2DA;;GAEG;AACH,4EAA4E;AAC5E,MAAM,UAAU,UAAU,CAAC,QAAyB;IAClD,qGAAqG;IAErG,OAAO;QACL,gBAAgB,EAAE,QAAQ,CAAC,KAAK,CAAW;YACzC,IAAI,EAAE,wCAAwC;YAC9C,IAAI,EAAE,uCAAuC;YAC7C,UAAU,EAAE,CAAC,QAAQ,CAAC;SACvB,CAAC;QACF,4BAA4B,EAAE,QAAQ,CAAC,SAAS,CAAW;YACzD,IAAI,EAAE,wDAAwD;YAC9D,IAAI,EAAE,gDAAgD;YACtD,UAAU,EAAE,CAAC,QAAQ,CAAC;YACtB,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"AA2DA;;GAEG;AACH,4EAA4E;AAC5E,MAAM,UAAU,UAAU,CAAC,QAAyB;IAClD,qGAAqG;IAErG,OAAO;QACL,gBAAgB,EAAE,QAAQ,CAAC,KAAK,CAAW;YACzC,IAAI,EAAE,wCAAwC;YAC9C,IAAI,EAAE,uCAAuC;YAC7C,UAAU,EAAE,CAAC,QAAQ,CAAC;SACvB,CAAC;QACF,4BAA4B,EAAE,QAAQ,CAAC,SAAS,CAAW;YACzD,IAAI,EAAE,wDAAwD;YAC9D,IAAI,EAAE,gDAAgD;YACtD,UAAU,EAAE,CAAC,QAAQ,CAAC;YACtB,kCAAkC;YAClC,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SAC3C,CAAC;QACF,cAAc,EAAE,QAAQ,CAAC,KAAK,CAAW;YACvC,IAAI,EAAE,8CAA8C;YACpD,IAAI,EAAE,8CAA8C;YACpD,UAAU,EAAE,CAAC,QAAQ,CAAC;SACvB,CAAC;QACF,gBAAgB,EAAE,QAAQ,CAAC,KAAK,CAAW;YACzC,IAAI,EAAE,wCAAwC;YAC9C,IAAI,EAAE,2CAA2C;YACjD,UAAU,EAAE,CAAC,QAAQ,CAAC;SACvB,CAAC;QACF,0BAA0B,EAAE,QAAQ,CAAC,SAAS,CAAW;YACvD,IAAI,EAAE,sDAAsD;YAC5D,IAAI,EAAE,uDAAuD;YAC7D,UAAU,EAAE,CAAC,QAAQ,CAAC;YACtB,kCAAkC;YAClC,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;SACnC,CAAC;QACF,cAAc,EAAE,QAAQ,CAAC,KAAK,CAAW;YACvC,IAAI,EAAE,8CAA8C;YACpD,IAAI,EAAE,kDAAkD;YACxD,UAAU,EAAE,CAAC,QAAQ,CAAC;SACvB,CAAC;QACF,oBAAoB,EAAE,QAAQ,CAAC,SAAS,CAAW;YACjD,IAAI,EAAE,+CAA+C;YACrD,IAAI,EAAE,kDAAkD;YACxD,UAAU,EAAE,CAAC,QAAQ,CAAC;YACtB,iCAAiC;YACjC,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;SACrB,CAAC;QACF,oBAAoB,EAAE,QAAQ,CAAC,SAAS,CAAW;YACjD,IAAI,EAAE,+CAA+C;YACrD,IAAI,EAAE,kDAAkD;YACxD,UAAU,EAAE,CAAC,QAAQ,CAAC;YACtB,iCAAiC;YACjC,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;SACrB,CAAC;QACF,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC;YACzB,IAAI,EAAE,kCAAkC;YACxC,IAAI,EAAE,yBAAyB;SAChC,CAAC;KACH,CAAC;AACJ,CAAC"}
|
package/lib/request/errors.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LodestarError } from "@lodestar/utils";
|
|
1
|
+
import { LodestarError, LodestarErrorObject } from "@lodestar/utils";
|
|
2
2
|
import { ResponseError } from "../response/index.js";
|
|
3
3
|
import { RpcResponseStatusError } from "../interface.js";
|
|
4
4
|
export declare enum RequestErrorCode {
|
|
@@ -67,8 +67,10 @@ type RequestErrorType = {
|
|
|
67
67
|
} | {
|
|
68
68
|
code: RequestErrorCode.REQUEST_RATE_LIMITED;
|
|
69
69
|
};
|
|
70
|
+
export declare const REQUEST_ERROR_CLASS_NAME = "RequestError";
|
|
70
71
|
export declare class RequestError extends LodestarError<RequestErrorType> {
|
|
71
|
-
constructor(type: RequestErrorType);
|
|
72
|
+
constructor(type: RequestErrorType, message?: string, stack?: string);
|
|
73
|
+
static fromObject(obj: LodestarErrorObject): RequestError;
|
|
72
74
|
}
|
|
73
75
|
/**
|
|
74
76
|
* Parse response status errors into detailed request errors for each status code for easier debugging
|
package/lib/request/errors.js
CHANGED
|
@@ -31,9 +31,16 @@ export var RequestErrorCode;
|
|
|
31
31
|
/** Request rate limited */
|
|
32
32
|
RequestErrorCode["REQUEST_RATE_LIMITED"] = "REQUEST_ERROR_RATE_LIMITED";
|
|
33
33
|
})(RequestErrorCode || (RequestErrorCode = {}));
|
|
34
|
+
export const REQUEST_ERROR_CLASS_NAME = "RequestError";
|
|
34
35
|
export class RequestError extends LodestarError {
|
|
35
|
-
constructor(type) {
|
|
36
|
-
super(type, renderErrorMessage(type));
|
|
36
|
+
constructor(type, message, stack) {
|
|
37
|
+
super(type, message !== null && message !== void 0 ? message : renderErrorMessage(type), stack);
|
|
38
|
+
}
|
|
39
|
+
static fromObject(obj) {
|
|
40
|
+
if (obj.className !== "RequestError") {
|
|
41
|
+
throw new Error(`Expected className to be RequestError, but got ${obj.className}`);
|
|
42
|
+
}
|
|
43
|
+
return new RequestError(obj.type, obj.message, obj.stack);
|
|
37
44
|
}
|
|
38
45
|
}
|
|
39
46
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/request/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/request/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAsB,MAAM,iBAAiB,CAAC;AAEnE,OAAO,EAAC,UAAU,EAAyB,MAAM,iBAAiB,CAAC;AAEnE,MAAM,CAAN,IAAY,gBA6BX;AA7BD,WAAY,gBAAgB;IAC1B,mFAAmF;IACnF,4DAA4D;IAC5D,qEAAiD,CAAA;IACjD,+EAA2D,CAAA;IAC3D,yDAAyD;IACzD,+DAA2C,CAAA;IAC3C,iEAAiE;IACjE,uEAAmD,CAAA;IACnD,wEAAwE;IACxE,+EAA2D,CAAA;IAC3D,4DAA4D;IAC5D,+DAA2C,CAAA;IAC3C,uCAAuC;IACvC,2DAAuC,CAAA;IACvC,iEAAiE;IACjE,qEAAiD,CAAA;IACjD,8CAA8C;IAC9C,iEAA6C,CAAA;IAC7C,mFAAmF;IACnF,uEAAmD,CAAA;IACnD,iDAAiD;IACjD,mEAA+C,CAAA;IAC/C,iCAAiC;IACjC,+DAA2C,CAAA;IAC3C,gDAAgD;IAChD,+DAA2C,CAAA;IAC3C,2BAA2B;IAC3B,uEAAmD,CAAA;AACrD,CAAC,EA7BW,gBAAgB,KAAhB,gBAAgB,QA6B3B;AAkBD,MAAM,CAAC,MAAM,wBAAwB,GAAG,cAAc,CAAC;AAEvD,MAAM,OAAO,YAAa,SAAQ,aAA+B;IAC/D,YAAY,IAAsB,EAAE,OAAgB,EAAE,KAAc;QAClE,KAAK,CAAC,IAAI,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,GAAwB;QACxC,IAAI,GAAG,CAAC,SAAS,KAAK,cAAc,EAAE;YACpC,MAAM,IAAI,KAAK,CAAC,kDAAkD,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;SACpF;QAED,OAAO,IAAI,YAAY,CAAC,GAAG,CAAC,IAAwB,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAChF,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,iCAAiC,CAAC,CAAgB;IAChE,MAAM,EAAC,YAAY,EAAE,MAAM,EAAC,GAAG,CAAC,CAAC;IACjC,QAAQ,MAAM,EAAE;QACd,KAAK,UAAU,CAAC,eAAe;YAC7B,OAAO,EAAC,IAAI,EAAE,gBAAgB,CAAC,eAAe,EAAE,YAAY,EAAC,CAAC;QAChE,KAAK,UAAU,CAAC,YAAY;YAC1B,OAAO,EAAC,IAAI,EAAE,gBAAgB,CAAC,YAAY,EAAE,YAAY,EAAC,CAAC;QAC7D,KAAK,UAAU,CAAC,oBAAoB;YAClC,OAAO,EAAC,IAAI,EAAE,gBAAgB,CAAC,oBAAoB,EAAE,YAAY,EAAC,CAAC;QACrE;YACE,OAAO,EAAC,IAAI,EAAE,gBAAgB,CAAC,oBAAoB,EAAE,YAAY,EAAE,MAAM,EAAC,CAAC;KAC9E;AACH,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,IAAsB;IAChD,QAAQ,IAAI,CAAC,IAAI,EAAE;QACjB,KAAK,gBAAgB,CAAC,eAAe,CAAC;QACtC,KAAK,gBAAgB,CAAC,YAAY,CAAC;QACnC,KAAK,gBAAgB,CAAC,oBAAoB,CAAC;QAC3C,KAAK,gBAAgB,CAAC,oBAAoB;YACxC,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;QAC9C;YACE,OAAO,IAAI,CAAC,IAAI,CAAC;KACpB;AACH,CAAC"}
|
package/lib/request/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { PeerId } from "@libp2p/interface-peer-id";
|
|
|
2
2
|
import { Libp2p } from "libp2p";
|
|
3
3
|
import { Logger } from "@lodestar/utils";
|
|
4
4
|
import { MixedProtocol, ResponseIncoming } from "../types.js";
|
|
5
|
+
import { Metrics } from "../metrics.js";
|
|
5
6
|
import { RequestError, RequestErrorCode } from "./errors.js";
|
|
6
7
|
export { RequestError, RequestErrorCode };
|
|
7
8
|
export declare const DEFAULT_DIAL_TIMEOUT: number;
|
|
@@ -21,6 +22,7 @@ export interface SendRequestOpts {
|
|
|
21
22
|
type SendRequestModules = {
|
|
22
23
|
logger: Logger;
|
|
23
24
|
libp2p: Libp2p;
|
|
25
|
+
metrics: Metrics | null;
|
|
24
26
|
peerClient?: string;
|
|
25
27
|
};
|
|
26
28
|
/**
|
|
@@ -34,5 +36,5 @@ type SendRequestModules = {
|
|
|
34
36
|
* - Any part of the response_chunk fails validation. Throws a typed error (see `SszSnappyError`)
|
|
35
37
|
* - The maximum number of requested chunks are read. Does not throw, returns read chunks only.
|
|
36
38
|
*/
|
|
37
|
-
export declare function sendRequest({ logger, libp2p, peerClient }: SendRequestModules, peerId: PeerId, protocols: MixedProtocol[], protocolIDs: string[], requestBody: Uint8Array, signal?: AbortSignal, opts?: SendRequestOpts, requestId?: number): AsyncIterable<ResponseIncoming>;
|
|
39
|
+
export declare function sendRequest({ logger, libp2p, metrics, peerClient }: SendRequestModules, peerId: PeerId, protocols: MixedProtocol[], protocolIDs: string[], requestBody: Uint8Array, signal?: AbortSignal, opts?: SendRequestOpts, requestId?: number): AsyncIterable<ResponseIncoming>;
|
|
38
40
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/request/index.js
CHANGED
|
@@ -22,7 +22,7 @@ export const DEFAULT_RESP_TIMEOUT = 10 * 1000; // 10 sec
|
|
|
22
22
|
* - Any part of the response_chunk fails validation. Throws a typed error (see `SszSnappyError`)
|
|
23
23
|
* - The maximum number of requested chunks are read. Does not throw, returns read chunks only.
|
|
24
24
|
*/
|
|
25
|
-
export async function* sendRequest({ logger, libp2p, peerClient }, peerId, protocols, protocolIDs, requestBody, signal, opts, requestId = 0) {
|
|
25
|
+
export async function* sendRequest({ logger, libp2p, metrics, peerClient }, peerId, protocols, protocolIDs, requestBody, signal, opts, requestId = 0) {
|
|
26
26
|
var _a, _b, _c, _d, _e;
|
|
27
27
|
if (protocols.length === 0) {
|
|
28
28
|
throw Error("sendRequest must set > 0 protocols");
|
|
@@ -68,6 +68,8 @@ export async function* sendRequest({ logger, libp2p, peerClient }, peerId, proto
|
|
|
68
68
|
throw new RequestError({ code: RequestErrorCode.DIAL_ERROR, error: e });
|
|
69
69
|
}
|
|
70
70
|
});
|
|
71
|
+
// TODO: Does the TTFB timer start on opening stream or after receiving request
|
|
72
|
+
const timerTTFB = metrics === null || metrics === void 0 ? void 0 : metrics.outgoingResponseTTFB.startTimer({ method });
|
|
71
73
|
// Parse protocol selected by the responder
|
|
72
74
|
const protocolId = (_e = stream.stat.protocol) !== null && _e !== void 0 ? _e : "unknown";
|
|
73
75
|
const protocol = protocolsMap.get(protocolId);
|
|
@@ -124,6 +126,7 @@ export async function* sendRequest({ logger, libp2p, peerClient }, peerId, proto
|
|
|
124
126
|
onFirstHeader() {
|
|
125
127
|
// On first byte, cancel the single use TTFB_TIMEOUT, and start RESP_TIMEOUT
|
|
126
128
|
clearTimeout(timeoutTTFB);
|
|
129
|
+
timerTTFB === null || timerTTFB === void 0 ? void 0 : timerTTFB();
|
|
127
130
|
restartRespTimeout();
|
|
128
131
|
},
|
|
129
132
|
onFirstResponseChunk() {
|
package/lib/request/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/request/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,SAAS,CAAC;AAI7B,OAAO,EAAC,YAAY,EAAU,WAAW,EAAE,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAEhF,OAAO,EAAC,iBAAiB,EAAE,eAAe,EAAC,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/request/index.ts"],"names":[],"mappings":"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"}
|
package/lib/response/errors.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LodestarError } from "@lodestar/utils";
|
|
1
|
+
import { LodestarError, LodestarErrorMetaData, LodestarErrorObject } from "@lodestar/utils";
|
|
2
2
|
import { RespStatus, RpcResponseStatusError } from "../interface.js";
|
|
3
3
|
type RpcResponseStatusNotSuccess = Exclude<RespStatus, RespStatus.SUCCESS>;
|
|
4
4
|
export declare enum ResponseErrorCode {
|
|
@@ -9,6 +9,7 @@ type RequestErrorType = {
|
|
|
9
9
|
status: RpcResponseStatusError;
|
|
10
10
|
errorMessage: string;
|
|
11
11
|
};
|
|
12
|
+
export declare const RESPONSE_ERROR_CLASS_NAME = "ResponseError";
|
|
12
13
|
/**
|
|
13
14
|
* Used internally only to signal a response status error. Since the error should never bubble up to the user,
|
|
14
15
|
* the error code and error message does not matter much.
|
|
@@ -16,7 +17,9 @@ type RequestErrorType = {
|
|
|
16
17
|
export declare class ResponseError extends LodestarError<RequestErrorType> {
|
|
17
18
|
status: RpcResponseStatusNotSuccess;
|
|
18
19
|
errorMessage: string;
|
|
19
|
-
constructor(status: RpcResponseStatusNotSuccess, errorMessage: string);
|
|
20
|
+
constructor(status: RpcResponseStatusNotSuccess, errorMessage: string, stack?: string);
|
|
21
|
+
getMetadata(): LodestarErrorMetaData;
|
|
22
|
+
static fromObject(obj: LodestarErrorObject): ResponseError;
|
|
20
23
|
}
|
|
21
24
|
export {};
|
|
22
25
|
//# sourceMappingURL=errors.d.ts.map
|
package/lib/response/errors.js
CHANGED
|
@@ -4,16 +4,29 @@ export var ResponseErrorCode;
|
|
|
4
4
|
(function (ResponseErrorCode) {
|
|
5
5
|
ResponseErrorCode["RESPONSE_STATUS_ERROR"] = "RESPONSE_STATUS_ERROR";
|
|
6
6
|
})(ResponseErrorCode || (ResponseErrorCode = {}));
|
|
7
|
+
export const RESPONSE_ERROR_CLASS_NAME = "ResponseError";
|
|
7
8
|
/**
|
|
8
9
|
* Used internally only to signal a response status error. Since the error should never bubble up to the user,
|
|
9
10
|
* the error code and error message does not matter much.
|
|
10
11
|
*/
|
|
11
12
|
export class ResponseError extends LodestarError {
|
|
12
|
-
constructor(status, errorMessage) {
|
|
13
|
+
constructor(status, errorMessage, stack) {
|
|
13
14
|
const type = { code: ResponseErrorCode.RESPONSE_STATUS_ERROR, status, errorMessage };
|
|
14
|
-
super(type, `RESPONSE_ERROR_${RespStatus[status]}: ${errorMessage}
|
|
15
|
+
super(type, `RESPONSE_ERROR_${RespStatus[status]}: ${errorMessage}`, stack);
|
|
15
16
|
this.status = status;
|
|
16
17
|
this.errorMessage = errorMessage;
|
|
17
18
|
}
|
|
19
|
+
getMetadata() {
|
|
20
|
+
return {
|
|
21
|
+
status: this.status,
|
|
22
|
+
errorMessage: this.errorMessage,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
static fromObject(obj) {
|
|
26
|
+
if (obj.className !== RESPONSE_ERROR_CLASS_NAME) {
|
|
27
|
+
throw new Error(`Expected className to be ResponseError, but got ${obj.className}`);
|
|
28
|
+
}
|
|
29
|
+
return new ResponseError(obj.type.status, obj.type.errorMessage, obj.stack);
|
|
30
|
+
}
|
|
18
31
|
}
|
|
19
32
|
//# sourceMappingURL=errors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/response/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/response/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAA6C,MAAM,iBAAiB,CAAC;AAC1F,OAAO,EAAC,UAAU,EAAyB,MAAM,iBAAiB,CAAC;AAInE,MAAM,CAAN,IAAY,iBAEX;AAFD,WAAY,iBAAiB;IAC3B,oEAA+C,CAAA;AACjD,CAAC,EAFW,iBAAiB,KAAjB,iBAAiB,QAE5B;AAQD,MAAM,CAAC,MAAM,yBAAyB,GAAG,eAAe,CAAC;AAEzD;;;GAGG;AACH,MAAM,OAAO,aAAc,SAAQ,aAA+B;IAGhE,YAAY,MAAmC,EAAE,YAAoB,EAAE,KAAc;QACnF,MAAM,IAAI,GAAG,EAAC,IAAI,EAAE,iBAAiB,CAAC,qBAAqB,EAAE,MAAM,EAAE,YAAY,EAAC,CAAC;QACnF,KAAK,CAAC,IAAI,EAAE,kBAAkB,UAAU,CAAC,MAAM,CAAC,KAAK,YAAY,EAAE,EAAE,KAAK,CAAC,CAAC;QAC5E,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED,WAAW;QACT,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,GAAwB;QACxC,IAAI,GAAG,CAAC,SAAS,KAAK,yBAAyB,EAAE;YAC/C,MAAM,IAAI,KAAK,CAAC,mDAAmD,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;SACrF;QAED,OAAO,IAAI,aAAa,CACtB,GAAG,CAAC,IAAI,CAAC,MAAqC,EAC9C,GAAG,CAAC,IAAI,CAAC,YAAsB,EAC/B,GAAG,CAAC,KAAK,CACV,CAAC;IACJ,CAAC;CACF"}
|
package/lib/response/index.d.ts
CHANGED
|
@@ -3,11 +3,13 @@ import { Stream } from "@libp2p/interface-connection";
|
|
|
3
3
|
import { Logger } from "@lodestar/utils";
|
|
4
4
|
import { Protocol } from "../types.js";
|
|
5
5
|
import { ReqRespRateLimiter } from "../rate_limiter/ReqRespRateLimiter.js";
|
|
6
|
+
import { Metrics } from "../metrics.js";
|
|
6
7
|
import { ResponseError } from "./errors.js";
|
|
7
8
|
export { ResponseError };
|
|
8
9
|
export declare const DEFAULT_REQUEST_TIMEOUT: number;
|
|
9
10
|
export interface HandleRequestOpts {
|
|
10
11
|
logger: Logger;
|
|
12
|
+
metrics: Metrics | null;
|
|
11
13
|
stream: Stream;
|
|
12
14
|
peerId: PeerId;
|
|
13
15
|
protocol: Protocol;
|
|
@@ -30,5 +32,5 @@ export interface HandleRequestOpts {
|
|
|
30
32
|
* 4a. Encode and write `<response_chunks>` to peer
|
|
31
33
|
* 4b. On error, encode and write an error `<response_chunk>` and stop
|
|
32
34
|
*/
|
|
33
|
-
export declare function handleRequest({ logger, stream, peerId, protocol, protocolID, rateLimiter, signal, requestId, peerClient, requestTimeoutMs, }: HandleRequestOpts): Promise<void>;
|
|
35
|
+
export declare function handleRequest({ logger, metrics, stream, peerId, protocol, protocolID, rateLimiter, signal, requestId, peerClient, requestTimeoutMs, }: HandleRequestOpts): Promise<void>;
|
|
34
36
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/response/index.js
CHANGED
|
@@ -19,7 +19,7 @@ export const DEFAULT_REQUEST_TIMEOUT = 5 * 1000; // 5 sec
|
|
|
19
19
|
* 4a. Encode and write `<response_chunks>` to peer
|
|
20
20
|
* 4b. On error, encode and write an error `<response_chunk>` and stop
|
|
21
21
|
*/
|
|
22
|
-
export async function handleRequest({ logger, stream, peerId, protocol, protocolID, rateLimiter, signal, requestId = 0, peerClient = "unknown", requestTimeoutMs, }) {
|
|
22
|
+
export async function handleRequest({ logger, metrics, stream, peerId, protocol, protocolID, rateLimiter, signal, requestId = 0, peerClient = "unknown", requestTimeoutMs, }) {
|
|
23
23
|
const REQUEST_TIMEOUT = requestTimeoutMs !== null && requestTimeoutMs !== void 0 ? requestTimeoutMs : DEFAULT_REQUEST_TIMEOUT;
|
|
24
24
|
const logCtx = { method: protocol.method, client: peerClient, peer: prettyPrintPeerId(peerId), requestId };
|
|
25
25
|
let responseError = null;
|
|
@@ -30,6 +30,8 @@ export async function handleRequest({ logger, stream, peerId, protocol, protocol
|
|
|
30
30
|
(async function* requestHandlerSource() {
|
|
31
31
|
var _a, _b, _c;
|
|
32
32
|
try {
|
|
33
|
+
// TODO: Does the TTFB timer start on opening stream or after receiving request
|
|
34
|
+
const timerTTFB = metrics === null || metrics === void 0 ? void 0 : metrics.outgoingResponseTTFB.startTimer({ method: protocol.method });
|
|
33
35
|
const requestBody = await withTimeout(() => pipe(stream.source, requestDecode(protocol)), REQUEST_TIMEOUT, signal).catch((e) => {
|
|
34
36
|
if (e instanceof TimeoutError) {
|
|
35
37
|
throw e; // Let outter catch {} re-type the error as SERVER_ERROR
|
|
@@ -54,7 +56,12 @@ export async function handleRequest({ logger, stream, peerId, protocol, protocol
|
|
|
54
56
|
// NOTE: Do not log the resp chunk contents, logs get extremely cluttered
|
|
55
57
|
// Note: Not logging on each chunk since after 1 year it hasn't add any value when debugging
|
|
56
58
|
// onChunk(() => logger.debug("Resp sending chunk", logCtx)),
|
|
57
|
-
responseEncodeSuccess(protocol
|
|
59
|
+
responseEncodeSuccess(protocol, {
|
|
60
|
+
onChunk(chunkIndex) {
|
|
61
|
+
if (chunkIndex === 0)
|
|
62
|
+
timerTTFB === null || timerTTFB === void 0 ? void 0 : timerTTFB();
|
|
63
|
+
},
|
|
64
|
+
}));
|
|
58
65
|
}
|
|
59
66
|
catch (e) {
|
|
60
67
|
const status = e instanceof ResponseError ? e.status : RespStatus.SERVER_ERROR;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/response/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,SAAS,CAAC;AAI7B,OAAO,EAAS,YAAY,EAAE,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAC,iBAAiB,EAAC,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAC,aAAa,EAAC,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAC,mBAAmB,EAAE,qBAAqB,EAAC,MAAM,+BAA+B,CAAC;AACzF,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAC,YAAY,EAAE,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/response/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"bugs": {
|
|
12
12
|
"url": "https://github.com/ChainSafe/lodestar/issues"
|
|
13
13
|
},
|
|
14
|
-
"version": "1.9.0-dev.
|
|
14
|
+
"version": "1.9.0-dev.61c838b84f",
|
|
15
15
|
"type": "module",
|
|
16
16
|
"exports": {
|
|
17
17
|
".": {
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
"scripts": {
|
|
42
42
|
"clean": "rm -rf lib && rm -f *.tsbuildinfo",
|
|
43
43
|
"build": "tsc -p tsconfig.build.json",
|
|
44
|
+
"build:watch": "yarn run build --watch",
|
|
44
45
|
"build:release": "yarn clean && yarn run build",
|
|
45
46
|
"check-build": "node -e \"(async function() { await import('./lib/index.js') })()\"",
|
|
46
47
|
"check-types": "tsc",
|
|
@@ -53,23 +54,24 @@
|
|
|
53
54
|
"check-readme": "typescript-docs-verifier"
|
|
54
55
|
},
|
|
55
56
|
"dependencies": {
|
|
56
|
-
"@chainsafe/
|
|
57
|
+
"@chainsafe/fast-crc32c": "^4.1.1",
|
|
57
58
|
"@libp2p/interface-connection": "^3.0.2",
|
|
58
59
|
"@libp2p/interface-peer-id": "^2.0.1",
|
|
59
|
-
"@lodestar/config": "1.9.0-dev.
|
|
60
|
-
"@lodestar/params": "1.9.0-dev.
|
|
61
|
-
"@lodestar/utils": "1.9.0-dev.
|
|
60
|
+
"@lodestar/config": "1.9.0-dev.61c838b84f",
|
|
61
|
+
"@lodestar/params": "1.9.0-dev.61c838b84f",
|
|
62
|
+
"@lodestar/utils": "1.9.0-dev.61c838b84f",
|
|
62
63
|
"it-all": "^3.0.1",
|
|
64
|
+
"snappy": "^7.2.2",
|
|
63
65
|
"snappyjs": "^0.7.0",
|
|
64
|
-
"stream-to-it": "^0.2.4",
|
|
65
66
|
"uint8arraylist": "^2.4.3",
|
|
66
67
|
"varint": "^6.0.0"
|
|
67
68
|
},
|
|
68
69
|
"devDependencies": {
|
|
69
|
-
"@lodestar/
|
|
70
|
+
"@lodestar/logger": "1.9.0-dev.61c838b84f",
|
|
71
|
+
"@lodestar/types": "1.9.0-dev.61c838b84f"
|
|
70
72
|
},
|
|
71
73
|
"peerDependencies": {
|
|
72
|
-
"libp2p": "0.
|
|
74
|
+
"libp2p": "~0.42.2"
|
|
73
75
|
},
|
|
74
76
|
"keywords": [
|
|
75
77
|
"ethereum",
|
|
@@ -79,5 +81,5 @@
|
|
|
79
81
|
"reqresp",
|
|
80
82
|
"blockchain"
|
|
81
83
|
],
|
|
82
|
-
"gitHead": "
|
|
84
|
+
"gitHead": "20999f6991607585930f8991d93f421c9489c69b"
|
|
83
85
|
}
|