@lodestar/reqresp 1.8.0 → 1.9.0-dev.06226b5f17

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.
Files changed (97) hide show
  1. package/README.md +19 -7
  2. package/lib/ReqResp.d.ts +7 -7
  3. package/lib/ReqResp.js +4 -2
  4. package/lib/ReqResp.js.map +1 -1
  5. package/lib/encoders/requestDecode.d.ts +2 -2
  6. package/lib/encoders/requestDecode.js +3 -3
  7. package/lib/encoders/requestDecode.js.map +1 -1
  8. package/lib/encoders/requestEncode.d.ts +2 -2
  9. package/lib/encoders/requestEncode.js +2 -4
  10. package/lib/encoders/requestEncode.js.map +1 -1
  11. package/lib/encoders/responseDecode.d.ts +4 -4
  12. package/lib/encoders/responseDecode.js +7 -2
  13. package/lib/encoders/responseDecode.js.map +1 -1
  14. package/lib/encoders/responseEncode.d.ts +5 -3
  15. package/lib/encoders/responseEncode.js +7 -32
  16. package/lib/encoders/responseEncode.js.map +1 -1
  17. package/lib/encodingStrategies/index.d.ts +3 -3
  18. package/lib/encodingStrategies/index.js +2 -2
  19. package/lib/encodingStrategies/index.js.map +1 -1
  20. package/lib/encodingStrategies/sszSnappy/decode.d.ts +3 -3
  21. package/lib/encodingStrategies/sszSnappy/decode.js +1 -14
  22. package/lib/encodingStrategies/sszSnappy/decode.js.map +1 -1
  23. package/lib/encodingStrategies/sszSnappy/encode.d.ts +1 -2
  24. package/lib/encodingStrategies/sszSnappy/encode.js +2 -23
  25. package/lib/encodingStrategies/sszSnappy/encode.js.map +1 -1
  26. package/lib/index.d.ts +3 -3
  27. package/lib/index.js +2 -2
  28. package/lib/index.js.map +1 -1
  29. package/lib/metrics.d.ts +2 -0
  30. package/lib/metrics.js +18 -2
  31. package/lib/metrics.js.map +1 -1
  32. package/lib/rate_limiter/ReqRespRateLimiter.d.ts +1 -1
  33. package/lib/rate_limiter/ReqRespRateLimiter.js.map +1 -1
  34. package/lib/request/errors.d.ts +9 -16
  35. package/lib/request/errors.js +10 -11
  36. package/lib/request/errors.js.map +1 -1
  37. package/lib/request/index.d.ts +4 -2
  38. package/lib/request/index.js +16 -18
  39. package/lib/request/index.js.map +1 -1
  40. package/lib/response/errors.d.ts +5 -2
  41. package/lib/response/errors.js +15 -2
  42. package/lib/response/errors.js.map +1 -1
  43. package/lib/response/index.d.ts +6 -4
  44. package/lib/response/index.js +19 -7
  45. package/lib/response/index.js.map +1 -1
  46. package/lib/types.d.ts +62 -79
  47. package/lib/types.js +0 -8
  48. package/lib/types.js.map +1 -1
  49. package/lib/utils/bufferedSource.d.ts +1 -1
  50. package/lib/utils/bufferedSource.js.map +1 -1
  51. package/lib/utils/collectExactOne.js +2 -2
  52. package/lib/utils/collectExactOne.js.map +1 -1
  53. package/lib/utils/protocolId.d.ts +2 -2
  54. package/lib/utils/protocolId.js.map +1 -1
  55. package/package.json +11 -10
  56. package/lib/protocols/BeaconBlockAndBlobsSidecarByRoot.d.ts +0 -4
  57. package/lib/protocols/BeaconBlockAndBlobsSidecarByRoot.js +0 -27
  58. package/lib/protocols/BeaconBlockAndBlobsSidecarByRoot.js.map +0 -1
  59. package/lib/protocols/BeaconBlocksByRange.d.ts +0 -5
  60. package/lib/protocols/BeaconBlocksByRange.js +0 -38
  61. package/lib/protocols/BeaconBlocksByRange.js.map +0 -1
  62. package/lib/protocols/BeaconBlocksByRoot.d.ts +0 -5
  63. package/lib/protocols/BeaconBlocksByRoot.js +0 -38
  64. package/lib/protocols/BeaconBlocksByRoot.js.map +0 -1
  65. package/lib/protocols/BlobsSidecarsByRange.d.ts +0 -4
  66. package/lib/protocols/BlobsSidecarsByRange.js +0 -27
  67. package/lib/protocols/BlobsSidecarsByRange.js.map +0 -1
  68. package/lib/protocols/Goodbye.d.ts +0 -4
  69. package/lib/protocols/Goodbye.js +0 -21
  70. package/lib/protocols/Goodbye.js.map +0 -1
  71. package/lib/protocols/LightClientBootstrap.d.ts +0 -4
  72. package/lib/protocols/LightClientBootstrap.js +0 -30
  73. package/lib/protocols/LightClientBootstrap.js.map +0 -1
  74. package/lib/protocols/LightClientFinalityUpdate.d.ts +0 -4
  75. package/lib/protocols/LightClientFinalityUpdate.js +0 -29
  76. package/lib/protocols/LightClientFinalityUpdate.js.map +0 -1
  77. package/lib/protocols/LightClientOptimisticUpdate.d.ts +0 -4
  78. package/lib/protocols/LightClientOptimisticUpdate.js +0 -29
  79. package/lib/protocols/LightClientOptimisticUpdate.js.map +0 -1
  80. package/lib/protocols/LightClientUpdatesByRange.d.ts +0 -4
  81. package/lib/protocols/LightClientUpdatesByRange.js +0 -28
  82. package/lib/protocols/LightClientUpdatesByRange.js.map +0 -1
  83. package/lib/protocols/Metadata.d.ts +0 -5
  84. package/lib/protocols/Metadata.js +0 -31
  85. package/lib/protocols/Metadata.js.map +0 -1
  86. package/lib/protocols/Ping.d.ts +0 -4
  87. package/lib/protocols/Ping.js +0 -20
  88. package/lib/protocols/Ping.js.map +0 -1
  89. package/lib/protocols/Status.d.ts +0 -4
  90. package/lib/protocols/Status.js +0 -24
  91. package/lib/protocols/Status.js.map +0 -1
  92. package/lib/protocols/index.d.ts +0 -13
  93. package/lib/protocols/index.js +0 -13
  94. package/lib/protocols/index.js.map +0 -1
  95. package/lib/protocols/utils.d.ts +0 -7
  96. package/lib/protocols/utils.js +0 -9
  97. package/lib/protocols/utils.js.map +0 -1
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;AACrC,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,OAAO,EAAC,iBAAiB,EAAE,aAAa,EAAC,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAC,gBAAgB,EAAE,YAAY,EAAuB,MAAM,qBAAqB,CAAC;AACzF,OAAO,EAAC,eAAe,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAC,MAAM,kBAAkB,CAAC"}
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
- buckets: [0.1, 0.2, 0.5, 1, 5, 15, 60],
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
- buckets: [0.1, 0.2, 0.5, 1, 5],
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",
@@ -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;SACvC,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,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;SAC/B,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,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC;YACzB,IAAI,EAAE,kCAAkC;YACxC,IAAI,EAAE,yBAAyB;SAChC,CAAC;KACH,CAAC;AACJ,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"}
@@ -12,7 +12,7 @@ export declare class ReqRespRateLimiter {
12
12
  private lastSeenRequestsByPeer;
13
13
  constructor(opts?: ReqRespRateLimiterOpts | undefined);
14
14
  get enabled(): boolean;
15
- initRateLimits<Req>(protocolID: ProtocolID, rateLimits: InboundRateLimitQuota<Req>): void;
15
+ initRateLimits(protocolID: ProtocolID, rateLimits: InboundRateLimitQuota): void;
16
16
  allows(peerId: PeerId, protocolID: string, requestCount: number): boolean;
17
17
  prune(peerId: PeerId): void;
18
18
  start(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"ReqRespRateLimiter.js","sourceRoot":"","sources":["../../src/rate_limiter/ReqRespRateLimiter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ReqRespRateLimiter.js","sourceRoot":"","sources":["../../src/rate_limiter/ReqRespRateLimiter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AAErD,0GAA0G;AAC1G,MAAM,oCAAoC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAE5D,oEAAoE;AACpE,MAAM,uBAAuB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAI9C,MAAM,OAAO,kBAAkB;IAS7B,YAA6B,IAA6B;;QAA7B,SAAI,GAAJ,IAAI,CAAyB;QARzC,wBAAmB,GAAG,IAAI,GAAG,EAAuC,CAAC;QACrE,sBAAiB,GAAG,IAAI,GAAG,EAAqC,CAAC;QAClF,+CAA+C;QACvC,oBAAe,GAA+B,SAAS,CAAC;QAM9D,IAAI,CAAC,mBAAmB,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,mBAAmB,mCAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,sBAAsB,GAAG,IAAI,GAAG,EAAE,CAAC;IAC1C,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;IACtC,CAAC;IAED,cAAc,CAAC,UAAsB,EAAE,UAAiC;QACtE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,OAAO;SACR;QAED,IAAI,UAAU,CAAC,MAAM,EAAE;YACrB,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAC1B,UAAU,EACV,eAAe,CAAC,SAAS,CAAS;gBAChC,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,WAAW;gBAC1C,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,mBAAmB;aAC1D,CAAC,CACH,CAAC;SACH;QAED,IAAI,UAAU,CAAC,KAAK,EAAE;YACpB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CACxB,UAAU,EACV,eAAe,CAAC,SAAS,CAAO;gBAC9B,WAAW,EAAE,UAAU,CAAC,KAAK,CAAC,WAAW;gBACzC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,mBAAmB;aACzD,CAAC,CACH,CAAC;SACH;IACH,CAAC;IAED,MAAM,CAAC,MAAc,EAAE,UAAkB,EAAE,YAAoB;;QAC7D,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,OAAO,IAAI,CAAC;SACb;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAEvD,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxD,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAErD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,EAAE;YACvG,MAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,WAAW,mDAAG,MAAM,EAAE,UAAU,CAAC,CAAC;YAC7C,OAAO,KAAK,CAAC;SACd;aAAM;YACL,OAAO,IAAI,CAAC;SACb;IACH,CAAC;IAED,KAAK,CAAC,MAAc;QAClB,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,oCAAoC,CAAC,CAAC;IACnH,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE;YACtC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SACrC;IACH,CAAC;IAEO,gBAAgB,CAAC,SAAiB;QACxC,gDAAgD;QAChD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,EAAE;YACtD,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;SAC9B;QACD,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC;IAEO,sBAAsB;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,EAAE;YAC7E,IAAI,GAAG,GAAG,YAAY,IAAI,uBAAuB,EAAE;gBACjD,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;aAClC;SACF;IACH,CAAC;CACF"}
@@ -1,10 +1,10 @@
1
- import { LodestarError } from "@lodestar/utils";
2
- import { Encoding } from "../types.js";
1
+ import { LodestarError, LodestarErrorObject } from "@lodestar/utils";
3
2
  import { ResponseError } from "../response/index.js";
4
3
  import { RpcResponseStatusError } from "../interface.js";
5
4
  export declare enum RequestErrorCode {
6
5
  /** `<response_chunk>` had `<result>` === INVALID_REQUEST */
7
6
  INVALID_REQUEST = "REQUEST_ERROR_INVALID_REQUEST",
7
+ INVALID_RESPONSE_SSZ = "REQUEST_ERROR_INVALID_RESPONSE_SSZ",
8
8
  /** `<response_chunk>` had `<result>` === SERVER_ERROR */
9
9
  SERVER_ERROR = "REQUEST_ERROR_SERVER_ERROR",
10
10
  /** `<response_chunk>` had `<result>` === RESOURCE_UNAVAILABLE */
@@ -33,6 +33,9 @@ export declare enum RequestErrorCode {
33
33
  type RequestErrorType = {
34
34
  code: RequestErrorCode.INVALID_REQUEST;
35
35
  errorMessage: string;
36
+ } | {
37
+ code: RequestErrorCode.INVALID_RESPONSE_SSZ;
38
+ errorMessage: string;
36
39
  } | {
37
40
  code: RequestErrorCode.SERVER_ERROR;
38
41
  errorMessage: string;
@@ -64,20 +67,10 @@ type RequestErrorType = {
64
67
  } | {
65
68
  code: RequestErrorCode.REQUEST_RATE_LIMITED;
66
69
  };
67
- export type RequestErrorMetadata = {
68
- method: string;
69
- encoding: Encoding;
70
- peer: string;
71
- };
72
- /**
73
- * Same error types as RequestError but without metadata.
74
- * Top level function sendRequest() must rethrow RequestInternalError with metadata
75
- */
76
- export declare class RequestInternalError extends LodestarError<RequestErrorType> {
77
- constructor(type: RequestErrorType);
78
- }
79
- export declare class RequestError extends LodestarError<RequestErrorType & RequestErrorMetadata> {
80
- constructor(type: RequestErrorType, metadata: RequestErrorMetadata);
70
+ export declare const REQUEST_ERROR_CLASS_NAME = "RequestError";
71
+ export declare class RequestError extends LodestarError<RequestErrorType> {
72
+ constructor(type: RequestErrorType, message?: string, stack?: string);
73
+ static fromObject(obj: LodestarErrorObject): RequestError;
81
74
  }
82
75
  /**
83
76
  * Parse response status errors into detailed request errors for each status code for easier debugging
@@ -5,6 +5,7 @@ export var RequestErrorCode;
5
5
  // Declaring specific values of RpcResponseStatusError for error clarity downstream
6
6
  /** `<response_chunk>` had `<result>` === INVALID_REQUEST */
7
7
  RequestErrorCode["INVALID_REQUEST"] = "REQUEST_ERROR_INVALID_REQUEST";
8
+ RequestErrorCode["INVALID_RESPONSE_SSZ"] = "REQUEST_ERROR_INVALID_RESPONSE_SSZ";
8
9
  /** `<response_chunk>` had `<result>` === SERVER_ERROR */
9
10
  RequestErrorCode["SERVER_ERROR"] = "REQUEST_ERROR_SERVER_ERROR";
10
11
  /** `<response_chunk>` had `<result>` === RESOURCE_UNAVAILABLE */
@@ -30,18 +31,16 @@ export var RequestErrorCode;
30
31
  /** Request rate limited */
31
32
  RequestErrorCode["REQUEST_RATE_LIMITED"] = "REQUEST_ERROR_RATE_LIMITED";
32
33
  })(RequestErrorCode || (RequestErrorCode = {}));
33
- /**
34
- * Same error types as RequestError but without metadata.
35
- * Top level function sendRequest() must rethrow RequestInternalError with metadata
36
- */
37
- export class RequestInternalError extends LodestarError {
38
- constructor(type) {
39
- super(type);
40
- }
41
- }
34
+ export const REQUEST_ERROR_CLASS_NAME = "RequestError";
42
35
  export class RequestError extends LodestarError {
43
- constructor(type, metadata) {
44
- super({ ...metadata, ...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);
45
44
  }
46
45
  }
47
46
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/request/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAG9C,OAAO,EAAC,UAAU,EAAyB,MAAM,iBAAiB,CAAC;AAEnE,MAAM,CAAN,IAAY,gBA4BX;AA5BD,WAAY,gBAAgB;IAC1B,mFAAmF;IACnF,4DAA4D;IAC5D,qEAAiD,CAAA;IACjD,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,EA5BW,gBAAgB,KAAhB,gBAAgB,QA4B3B;AAwBD;;;GAGG;AACH,MAAM,OAAO,oBAAqB,SAAQ,aAA+B;IACvE,YAAY,IAAsB;QAChC,KAAK,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,aAAsD;IACtF,YAAY,IAAsB,EAAE,QAA8B;QAChE,KAAK,CAAC,EAAC,GAAG,QAAQ,EAAE,GAAG,IAAI,EAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,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"}
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"}
@@ -1,7 +1,8 @@
1
1
  import { PeerId } from "@libp2p/interface-peer-id";
2
2
  import { Libp2p } from "libp2p";
3
3
  import { Logger } from "@lodestar/utils";
4
- import { MixedProtocolDefinition } from "../types.js";
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<Req, Resp>({ logger, libp2p, peerClient }: SendRequestModules, peerId: PeerId, protocols: MixedProtocolDefinition[], protocolIDs: string[], requestBody: Req, signal?: AbortSignal, opts?: SendRequestOpts, requestId?: number): AsyncIterable<Resp>;
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
@@ -4,7 +4,7 @@ import { prettyPrintPeerId, abortableSource } from "../utils/index.js";
4
4
  import { ResponseError } from "../response/index.js";
5
5
  import { requestEncode } from "../encoders/requestEncode.js";
6
6
  import { responseDecode } from "../encoders/responseDecode.js";
7
- import { RequestError, RequestErrorCode, RequestInternalError, responseStatusErrorToRequestError, } from "./errors.js";
7
+ import { RequestError, RequestErrorCode, responseStatusErrorToRequestError } from "./errors.js";
8
8
  export { RequestError, RequestErrorCode };
9
9
  // Default spec values from https://github.com/ethereum/consensus-specs/blob/v1.2.0/specs/phase0/p2p-interface.md#configuration
10
10
  export const DEFAULT_DIAL_TIMEOUT = 5 * 1000; // 5 sec
@@ -22,8 +22,8 @@ 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) {
26
- var _a, _b, _c, _d, _e, _f;
25
+ export async function* sendRequest({ logger, libp2p, metrics, peerClient }, peerId, protocols, protocolIDs, requestBody, signal, opts, requestId = 0) {
26
+ var _a, _b, _c, _d, _e;
27
27
  if (protocols.length === 0) {
28
28
  throw Error("sendRequest must set > 0 protocols");
29
29
  }
@@ -31,10 +31,9 @@ export async function* sendRequest({ logger, libp2p, peerClient }, peerId, proto
31
31
  const REQUEST_TIMEOUT = (_b = opts === null || opts === void 0 ? void 0 : opts.requestTimeoutMs) !== null && _b !== void 0 ? _b : DEFAULT_REQUEST_TIMEOUT;
32
32
  const TTFB_TIMEOUT = (_c = opts === null || opts === void 0 ? void 0 : opts.ttfbTimeoutMs) !== null && _c !== void 0 ? _c : DEFAULT_TTFB_TIMEOUT;
33
33
  const RESP_TIMEOUT = (_d = opts === null || opts === void 0 ? void 0 : opts.respTimeoutMs) !== null && _d !== void 0 ? _d : DEFAULT_RESP_TIMEOUT;
34
- const peerIdStr = peerId.toString();
35
34
  const peerIdStrShort = prettyPrintPeerId(peerId);
36
- const { method, encoding } = protocols[0];
37
- const logCtx = { method, encoding, client: peerClient, peer: peerIdStrShort, requestId };
35
+ const { method, encoding, version } = protocols[0];
36
+ const logCtx = { method, version, encoding, client: peerClient, peer: peerIdStrShort, requestId };
38
37
  if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
39
38
  throw new ErrorAborted("sendRequest");
40
39
  }
@@ -63,18 +62,20 @@ export async function* sendRequest({ logger, libp2p, peerClient }, peerId, proto
63
62
  return conn;
64
63
  }, DIAL_TIMEOUT, signal).catch((e) => {
65
64
  if (e instanceof TimeoutError) {
66
- throw new RequestInternalError({ code: RequestErrorCode.DIAL_TIMEOUT });
65
+ throw new RequestError({ code: RequestErrorCode.DIAL_TIMEOUT });
67
66
  }
68
67
  else {
69
- throw new RequestInternalError({ code: RequestErrorCode.DIAL_ERROR, error: e });
68
+ throw new RequestError({ code: RequestErrorCode.DIAL_ERROR, error: e });
70
69
  }
71
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 });
72
73
  // Parse protocol selected by the responder
73
74
  const protocolId = (_e = stream.stat.protocol) !== null && _e !== void 0 ? _e : "unknown";
74
75
  const protocol = protocolsMap.get(protocolId);
75
76
  if (!protocol)
76
77
  throw Error(`dialProtocol selected unknown protocolId ${protocolId}`);
77
- logger.debug("Req sending request", { ...logCtx, body: (_f = protocol.renderRequestBody) === null || _f === void 0 ? void 0 : _f.call(protocol, requestBody) });
78
+ logger.debug("Req sending request", logCtx);
78
79
  // Spec: The requester MUST close the write side of the stream once it finishes writing the request message
79
80
  // Impl: stream.sink is closed automatically by js-libp2p-mplex when piped source is exhausted
80
81
  // REQUEST_TIMEOUT: Non-spec timeout from sending request until write stream closed by responder
@@ -83,10 +84,10 @@ export async function* sendRequest({ logger, libp2p, peerClient }, peerId, proto
83
84
  // Must close the stream read side (stream.source) manually AND the write side
84
85
  stream.abort(e);
85
86
  if (e instanceof TimeoutError) {
86
- throw new RequestInternalError({ code: RequestErrorCode.REQUEST_TIMEOUT });
87
+ throw new RequestError({ code: RequestErrorCode.REQUEST_TIMEOUT });
87
88
  }
88
89
  else {
89
- throw new RequestInternalError({ code: RequestErrorCode.REQUEST_ERROR, error: e });
90
+ throw new RequestError({ code: RequestErrorCode.REQUEST_ERROR, error: e });
90
91
  }
91
92
  });
92
93
  logger.debug("Req request sent", logCtx);
@@ -113,11 +114,11 @@ export async function* sendRequest({ logger, libp2p, peerClient }, peerId, proto
113
114
  yield* pipe(abortableSource(stream.source, [
114
115
  {
115
116
  signal: ttfbTimeoutController.signal,
116
- getError: () => new RequestInternalError({ code: RequestErrorCode.TTFB_TIMEOUT }),
117
+ getError: () => new RequestError({ code: RequestErrorCode.TTFB_TIMEOUT }),
117
118
  },
118
119
  {
119
120
  signal: respTimeoutController.signal,
120
- getError: () => new RequestInternalError({ code: RequestErrorCode.RESP_TIMEOUT }),
121
+ getError: () => new RequestError({ code: RequestErrorCode.RESP_TIMEOUT }),
121
122
  },
122
123
  ]),
123
124
  // Transforms `Buffer` chunks to yield `ResponseBody` chunks
@@ -125,6 +126,7 @@ export async function* sendRequest({ logger, libp2p, peerClient }, peerId, proto
125
126
  onFirstHeader() {
126
127
  // On first byte, cancel the single use TTFB_TIMEOUT, and start RESP_TIMEOUT
127
128
  clearTimeout(timeoutTTFB);
129
+ timerTTFB === null || timerTTFB === void 0 ? void 0 : timerTTFB();
128
130
  restartRespTimeout();
129
131
  },
130
132
  onFirstResponseChunk() {
@@ -149,12 +151,8 @@ export async function* sendRequest({ logger, libp2p, peerClient }, peerId, proto
149
151
  }
150
152
  catch (e) {
151
153
  logger.verbose("Req error", logCtx, e);
152
- const metadata = { method, encoding, peer: peerIdStr };
153
154
  if (e instanceof ResponseError) {
154
- throw new RequestError(responseStatusErrorToRequestError(e), metadata);
155
- }
156
- else if (e instanceof RequestInternalError) {
157
- throw new RequestError(e.type, metadata);
155
+ throw new RequestError(responseStatusErrorToRequestError(e));
158
156
  }
159
157
  else {
160
158
  throw e;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/request/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/request/index.ts"],"names":[],"mappings":"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"}
@@ -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
@@ -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,EAAC,MAAM,iBAAiB,CAAC;AAC9C,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;;;GAGG;AACH,MAAM,OAAO,aAAc,SAAQ,aAA+B;IAGhE,YAAY,MAAmC,EAAE,YAAoB;QACnE,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,CAAC,CAAC;QACrE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;CACF"}
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"}
@@ -1,16 +1,18 @@
1
1
  import { PeerId } from "@libp2p/interface-peer-id";
2
2
  import { Stream } from "@libp2p/interface-connection";
3
3
  import { Logger } from "@lodestar/utils";
4
- import { ProtocolDefinition } from "../types.js";
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
- export interface HandleRequestOpts<Req, Resp> {
10
+ export interface HandleRequestOpts {
10
11
  logger: Logger;
12
+ metrics: Metrics | null;
11
13
  stream: Stream;
12
14
  peerId: PeerId;
13
- protocol: ProtocolDefinition<Req, Resp>;
15
+ protocol: Protocol;
14
16
  protocolID: string;
15
17
  rateLimiter: ReqRespRateLimiter;
16
18
  signal?: AbortSignal;
@@ -30,5 +32,5 @@ export interface HandleRequestOpts<Req, Resp> {
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<Req, Resp>({ logger, stream, peerId, protocol, protocolID, rateLimiter, signal, requestId, peerClient, requestTimeoutMs, }: HandleRequestOpts<Req, Resp>): 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
@@ -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;
@@ -28,8 +28,10 @@ export async function handleRequest({ logger, stream, peerId, protocol, protocol
28
28
  // This syntax allows to recycle stream.sink to send success and error chunks without returning
29
29
  // in case request whose body is a List fails at chunk_i > 0, without breaking out of the for..await..of
30
30
  (async function* requestHandlerSource() {
31
- var _a, _b, _c, _d;
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
@@ -38,18 +40,28 @@ export async function handleRequest({ logger, stream, peerId, protocol, protocol
38
40
  throw new ResponseError(RespStatus.INVALID_REQUEST, e.message);
39
41
  }
40
42
  });
41
- logger.debug("Req received", { ...logCtx, body: (_a = protocol.renderRequestBody) === null || _a === void 0 ? void 0 : _a.call(protocol, requestBody) });
42
- const requestCount = (_d = (_c = (_b = protocol === null || protocol === void 0 ? void 0 : protocol.inboundRateLimits) === null || _b === void 0 ? void 0 : _b.getRequestCount) === null || _c === void 0 ? void 0 : _c.call(_b, requestBody)) !== null && _d !== void 0 ? _d : 1;
43
+ logger.debug("Req received", logCtx);
44
+ // Max count by request for byRange and byRoot
45
+ const requestCount = (_c = (_b = (_a = protocol === null || protocol === void 0 ? void 0 : protocol.inboundRateLimits) === null || _a === void 0 ? void 0 : _a.getRequestCount) === null || _b === void 0 ? void 0 : _b.call(_a, requestBody)) !== null && _c !== void 0 ? _c : 1;
43
46
  if (!rateLimiter.allows(peerId, protocolID, requestCount)) {
44
- throw new RequestError({ code: RequestErrorCode.REQUEST_RATE_LIMITED }, { peer: peerId.toString(), method: protocol.method, encoding: protocol.encoding });
47
+ throw new RequestError({ code: RequestErrorCode.REQUEST_RATE_LIMITED });
45
48
  }
49
+ const requestChunk = {
50
+ data: requestBody,
51
+ version: protocol.version,
52
+ };
46
53
  yield* pipe(
47
54
  // TODO: Debug the reason for type conversion here
48
- protocol.handler(requestBody, peerId),
55
+ protocol.handler(requestChunk, peerId),
49
56
  // NOTE: Do not log the resp chunk contents, logs get extremely cluttered
50
57
  // Note: Not logging on each chunk since after 1 year it hasn't add any value when debugging
51
58
  // onChunk(() => logger.debug("Resp sending chunk", logCtx)),
52
- responseEncodeSuccess(protocol));
59
+ responseEncodeSuccess(protocol, {
60
+ onChunk(chunkIndex) {
61
+ if (chunkIndex === 0)
62
+ timerTTFB === null || timerTTFB === void 0 ? void 0 : timerTTFB();
63
+ },
64
+ }));
53
65
  }
54
66
  catch (e) {
55
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":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/response/index.ts"],"names":[],"mappings":"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"}