@across-protocol/sdk 4.3.24 → 4.3.25
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/dist/cjs/providers/solana/retryRpcFactory.js +8 -6
- package/dist/cjs/providers/solana/retryRpcFactory.js.map +1 -1
- package/dist/esm/providers/solana/retryRpcFactory.js +8 -6
- package/dist/esm/providers/solana/retryRpcFactory.js.map +1 -1
- package/dist/types/providers/solana/retryRpcFactory.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/providers/solana/retryRpcFactory.ts +9 -5
|
@@ -41,12 +41,12 @@ var RetrySolanaRpcFactory = (function (_super) {
|
|
|
41
41
|
};
|
|
42
42
|
RetrySolanaRpcFactory.prototype._tryCall = function (transportCall, args) {
|
|
43
43
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
44
|
-
var method,
|
|
44
|
+
var method, retryAttempt, error_1, exponentialBackoff, delayS;
|
|
45
45
|
return tslib_1.__generator(this, function (_a) {
|
|
46
46
|
switch (_a.label) {
|
|
47
47
|
case 0:
|
|
48
48
|
method = args[0].payload.method;
|
|
49
|
-
|
|
49
|
+
retryAttempt = 0;
|
|
50
50
|
_a.label = 1;
|
|
51
51
|
case 1:
|
|
52
52
|
if (!true) return [3, 7];
|
|
@@ -57,19 +57,21 @@ var RetrySolanaRpcFactory = (function (_super) {
|
|
|
57
57
|
case 3: return [2, _a.sent()];
|
|
58
58
|
case 4:
|
|
59
59
|
error_1 = _a.sent();
|
|
60
|
-
if (
|
|
60
|
+
if (retryAttempt++ >= this.retries || this.shouldFailImmediate(method, error_1)) {
|
|
61
61
|
throw error_1;
|
|
62
62
|
}
|
|
63
|
+
exponentialBackoff = this.retryDelaySeconds * Math.pow(2, retryAttempt);
|
|
64
|
+
delayS = this.retryDelaySeconds + exponentialBackoff * Math.random();
|
|
63
65
|
this.logger.debug({
|
|
64
66
|
at: "RetryRpcFactory",
|
|
65
67
|
message: "Retrying Solana RPC call",
|
|
66
68
|
provider: (0, NetworkUtils_1.getOriginFromURL)(this.clusterUrl),
|
|
67
69
|
method: method,
|
|
68
|
-
retryAttempt:
|
|
69
|
-
retryDelaySeconds:
|
|
70
|
+
retryAttempt: retryAttempt,
|
|
71
|
+
retryDelaySeconds: delayS,
|
|
70
72
|
error: error_1 === null || error_1 === void 0 ? void 0 : error_1.toString(),
|
|
71
73
|
});
|
|
72
|
-
return [4, (0, utils_1.delay)(
|
|
74
|
+
return [4, (0, utils_1.delay)(delayS)];
|
|
73
75
|
case 5:
|
|
74
76
|
_a.sent();
|
|
75
77
|
return [3, 6];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retryRpcFactory.js","sourceRoot":"","sources":["../../../../src/providers/solana/retryRpcFactory.ts"],"names":[],"mappings":";;;;AACA,uDAA6D;AAC7D,iEAAsE;AACtE,qCAAoC;AACpC,yDAA4D;AAK5D;IAA2C,iDAAuB;IAMhE,+BACW,OAAe,EACf,iBAAyB;QAFpC,iBAwBC;QArBC,sCAA0F;aAA1F,UAA0F,EAA1F,qBAA0F,EAA1F,IAA0F;YAA1F,qDAA0F;;QAG1F,IAAM,WAAW,GAAG,4BAA4B,CAAC,KAAK,CAAC,CAAC,CAAC,CAGxD,CAAC;mCACO,WAAW;QATX,aAAO,GAAP,OAAO,CAAQ;QACf,uBAAiB,GAAjB,iBAAiB,CAAQ;QAWlC,IAAI,KAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAI,CAAC,OAAO,CAAC,EAAE;YACvD,MAAM,IAAI,KAAK,CAAC,yEAAkE,KAAI,CAAC,OAAO,CAAE,CAAC,CAAC;SACnG;QACD,IAAI,KAAI,CAAC,iBAAiB,GAAG,CAAC,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,4DAAqD,KAAI,CAAC,iBAAiB,CAAE,CAAC,CAAC;SAChG;QAGD,IAAM,qBAAqB,QAAO,mDAA2B,YAA3B,mDAA2B,kCAAI,4BAA4B,YAAC,CAAC;QAC/F,KAAI,CAAC,oBAAoB,GAAG,qBAAqB,CAAC,eAAe,EAAE,CAAC;QACpE,KAAI,CAAC,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC;;IAC7C,CAAC;IAEM,+CAAe,GAAtB;QAAA,iBAIC;QAHC,OAAO;YAAY,cAAiC;iBAAjC,UAAiC,EAAjC,qBAAiC,EAAjC,IAAiC;gBAAjC,yBAAiC;;YAClD,OAAO,KAAI,CAAC,QAAQ,CAAC,cAAM,OAAA,KAAI,CAAC,oBAAoB,OAAzB,KAAI,EAAoC,IAAI,GAA5C,CAA6C,EAAE,IAAI,CAAC,CAAC;QAClF,CAAC,CAAC;IACJ,CAAC;IAQa,wCAAQ,GAAtB,UACE,aAAuC,EACvC,IAA8B;;;;;;wBAEtB,MAAM,GAAK,IAAI,CAAC,CAAC,CAAC,CAAC,OAAiD,OAA9D,CAA+D;wBACzE,
|
|
1
|
+
{"version":3,"file":"retryRpcFactory.js","sourceRoot":"","sources":["../../../../src/providers/solana/retryRpcFactory.ts"],"names":[],"mappings":";;;;AACA,uDAA6D;AAC7D,iEAAsE;AACtE,qCAAoC;AACpC,yDAA4D;AAK5D;IAA2C,iDAAuB;IAMhE,+BACW,OAAe,EACf,iBAAyB;QAFpC,iBAwBC;QArBC,sCAA0F;aAA1F,UAA0F,EAA1F,qBAA0F,EAA1F,IAA0F;YAA1F,qDAA0F;;QAG1F,IAAM,WAAW,GAAG,4BAA4B,CAAC,KAAK,CAAC,CAAC,CAAC,CAGxD,CAAC;mCACO,WAAW;QATX,aAAO,GAAP,OAAO,CAAQ;QACf,uBAAiB,GAAjB,iBAAiB,CAAQ;QAWlC,IAAI,KAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAI,CAAC,OAAO,CAAC,EAAE;YACvD,MAAM,IAAI,KAAK,CAAC,yEAAkE,KAAI,CAAC,OAAO,CAAE,CAAC,CAAC;SACnG;QACD,IAAI,KAAI,CAAC,iBAAiB,GAAG,CAAC,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,4DAAqD,KAAI,CAAC,iBAAiB,CAAE,CAAC,CAAC;SAChG;QAGD,IAAM,qBAAqB,QAAO,mDAA2B,YAA3B,mDAA2B,kCAAI,4BAA4B,YAAC,CAAC;QAC/F,KAAI,CAAC,oBAAoB,GAAG,qBAAqB,CAAC,eAAe,EAAE,CAAC;QACpE,KAAI,CAAC,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC;;IAC7C,CAAC;IAEM,+CAAe,GAAtB;QAAA,iBAIC;QAHC,OAAO;YAAY,cAAiC;iBAAjC,UAAiC,EAAjC,qBAAiC,EAAjC,IAAiC;gBAAjC,yBAAiC;;YAClD,OAAO,KAAI,CAAC,QAAQ,CAAC,cAAM,OAAA,KAAI,CAAC,oBAAoB,OAAzB,KAAI,EAAoC,IAAI,GAA5C,CAA6C,EAAE,IAAI,CAAC,CAAC;QAClF,CAAC,CAAC;IACJ,CAAC;IAQa,wCAAQ,GAAtB,UACE,aAAuC,EACvC,IAA8B;;;;;;wBAEtB,MAAM,GAAK,IAAI,CAAC,CAAC,CAAC,CAAC,OAAiD,OAA9D,CAA+D;wBACzE,YAAY,GAAG,CAAC,CAAC;;;6BAGd,IAAI;;;;wBAEA,WAAM,aAAa,EAAE,EAAA;4BAA5B,WAAO,SAAqB,EAAC;;;wBAE7B,IAAI,YAAY,EAAE,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,OAAK,CAAC,EAAE;4BAC7E,MAAM,OAAK,CAAC;yBACb;wBAGK,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;wBACxE,MAAM,GAAG,IAAI,CAAC,iBAAiB,GAAG,kBAAkB,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;wBAG3E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;4BAChB,EAAE,EAAE,iBAAiB;4BACrB,OAAO,EAAE,0BAA0B;4BACnC,QAAQ,EAAE,IAAA,+BAAgB,EAAC,IAAI,CAAC,UAAU,CAAC;4BAC3C,MAAM,QAAA;4BACN,YAAY,EAAE,YAAY;4BAC1B,iBAAiB,EAAE,MAAM;4BACzB,KAAK,EAAE,OAAK,aAAL,OAAK,uBAAL,OAAK,CAAE,QAAQ,EAAE;yBACzB,CAAC,CAAC;wBAEH,WAAM,IAAA,aAAK,EAAC,MAAM,CAAC,EAAA;;wBAAnB,SAAmB,CAAC;;;;;;;KAGzB;IAQO,mDAAmB,GAA3B,UAA4B,OAAe,EAAE,MAAe;QAG1D,OAAO,KAAK,CAAC;IACf,CAAC;IACH,4BAAC;AAAD,CAAC,AA3FD,CAA2C,0CAAuB,GA2FjE;AA3FY,sDAAqB"}
|
|
@@ -49,12 +49,12 @@ var RetrySolanaRpcFactory = /** @class */ (function (_super) {
|
|
|
49
49
|
*/
|
|
50
50
|
RetrySolanaRpcFactory.prototype._tryCall = function (transportCall, args) {
|
|
51
51
|
return __awaiter(this, void 0, void 0, function () {
|
|
52
|
-
var method,
|
|
52
|
+
var method, retryAttempt, error_1, exponentialBackoff, delayS;
|
|
53
53
|
return __generator(this, function (_a) {
|
|
54
54
|
switch (_a.label) {
|
|
55
55
|
case 0:
|
|
56
56
|
method = args[0].payload.method;
|
|
57
|
-
|
|
57
|
+
retryAttempt = 0;
|
|
58
58
|
_a.label = 1;
|
|
59
59
|
case 1:
|
|
60
60
|
if (!true) return [3 /*break*/, 7];
|
|
@@ -65,20 +65,22 @@ var RetrySolanaRpcFactory = /** @class */ (function (_super) {
|
|
|
65
65
|
case 3: return [2 /*return*/, _a.sent()];
|
|
66
66
|
case 4:
|
|
67
67
|
error_1 = _a.sent();
|
|
68
|
-
if (
|
|
68
|
+
if (retryAttempt++ >= this.retries || this.shouldFailImmediate(method, error_1)) {
|
|
69
69
|
throw error_1;
|
|
70
70
|
}
|
|
71
|
+
exponentialBackoff = this.retryDelaySeconds * Math.pow(2, retryAttempt);
|
|
72
|
+
delayS = this.retryDelaySeconds + exponentialBackoff * Math.random();
|
|
71
73
|
// Log retry attempt if logger is available
|
|
72
74
|
this.logger.debug({
|
|
73
75
|
at: "RetryRpcFactory",
|
|
74
76
|
message: "Retrying Solana RPC call",
|
|
75
77
|
provider: getOriginFromURL(this.clusterUrl),
|
|
76
78
|
method: method,
|
|
77
|
-
retryAttempt:
|
|
78
|
-
retryDelaySeconds:
|
|
79
|
+
retryAttempt: retryAttempt,
|
|
80
|
+
retryDelaySeconds: delayS,
|
|
79
81
|
error: error_1 === null || error_1 === void 0 ? void 0 : error_1.toString(),
|
|
80
82
|
});
|
|
81
|
-
return [4 /*yield*/, delay(
|
|
83
|
+
return [4 /*yield*/, delay(delayS)];
|
|
82
84
|
case 5:
|
|
83
85
|
_a.sent();
|
|
84
86
|
return [3 /*break*/, 6];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retryRpcFactory.js","sourceRoot":"","sources":["../../../../src/providers/solana/retryRpcFactory.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAG5D,2EAA2E;AAC3E,6EAA6E;AAC7E;IAA2C,yCAAuB;IAMhE,+BACW,OAAe,EACf,iBAAyB;QAFpC,iBAwBC;QArBC,sCAA0F;aAA1F,UAA0F,EAA1F,qBAA0F,EAA1F,IAA0F;YAA1F,qDAA0F;;QAE1F,uGAAuG;QACvG,IAAM,WAAW,GAAG,4BAA4B,CAAC,KAAK,CAAC,CAAC,CAAC,CAGxD,CAAC;mCACO,WAAW;QATX,aAAO,GAAP,OAAO,CAAQ;QACf,uBAAiB,GAAjB,iBAAiB,CAAQ;QAUlC,+BAA+B;QAC/B,IAAI,KAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAI,CAAC,OAAO,CAAC,EAAE;YACvD,MAAM,IAAI,KAAK,CAAC,yEAAkE,KAAI,CAAC,OAAO,CAAE,CAAC,CAAC;SACnG;QACD,IAAI,KAAI,CAAC,iBAAiB,GAAG,CAAC,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,4DAAqD,KAAI,CAAC,iBAAiB,CAAE,CAAC,CAAC;SAChG;QAED,qCAAqC;QACrC,IAAM,qBAAqB,QAAO,2BAA2B,YAA3B,2BAA2B,0BAAI,4BAA4B,YAAC,CAAC;QAC/F,KAAI,CAAC,oBAAoB,GAAG,qBAAqB,CAAC,eAAe,EAAE,CAAC;QACpE,KAAI,CAAC,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC;;IAC7C,CAAC;IAEM,+CAAe,GAAtB;QAAA,iBAIC;QAHC,OAAO;YAAY,cAAiC;iBAAjC,UAAiC,EAAjC,qBAAiC,EAAjC,IAAiC;gBAAjC,yBAAiC;;YAClD,OAAO,KAAI,CAAC,QAAQ,CAAC,cAAM,OAAA,KAAI,CAAC,oBAAoB,OAAzB,KAAI,EAAoC,IAAI,GAA5C,CAA6C,EAAE,IAAI,CAAC,CAAC;QAClF,CAAC,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACW,wCAAQ,GAAtB,UACE,aAAuC,EACvC,IAA8B;;;;;;wBAEtB,MAAM,GAAK,IAAI,CAAC,CAAC,CAAC,CAAC,OAAiD,OAA9D,CAA+D;wBACzE,
|
|
1
|
+
{"version":3,"file":"retryRpcFactory.js","sourceRoot":"","sources":["../../../../src/providers/solana/retryRpcFactory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retryRpcFactory.d.ts","sourceRoot":"","sources":["../../../../src/providers/solana/retryRpcFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAGtE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAIjC,qBAAa,qBAAsB,SAAQ,uBAAuB;IAO9D,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,iBAAiB,EAAE,MAAM;IANpC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC;IAE7C,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;gBAGd,OAAO,EAAE,MAAM,EACf,iBAAiB,EAAE,MAAM,EAClC,GAAG,4BAA4B,EAAE,qBAAqB,CAAC,OAAO,2BAA2B,CAAC;IAuBrF,eAAe,IAAI,YAAY;IAMtC;;;;;OAKG;YACW,QAAQ;
|
|
1
|
+
{"version":3,"file":"retryRpcFactory.d.ts","sourceRoot":"","sources":["../../../../src/providers/solana/retryRpcFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAGtE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAIjC,qBAAa,qBAAsB,SAAQ,uBAAuB;IAO9D,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,iBAAiB,EAAE,MAAM;IANpC,SAAS,CAAC,oBAAoB,EAAE,YAAY,CAAC;IAE7C,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;gBAGd,OAAO,EAAE,MAAM,EACf,iBAAiB,EAAE,MAAM,EAClC,GAAG,4BAA4B,EAAE,qBAAqB,CAAC,OAAO,2BAA2B,CAAC;IAuBrF,eAAe,IAAI,YAAY;IAMtC;;;;;OAKG;YACW,QAAQ;IAoCtB;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;CAK5B"}
|
package/package.json
CHANGED
|
@@ -56,29 +56,33 @@ export class RetrySolanaRpcFactory extends SolanaClusterRpcFactory {
|
|
|
56
56
|
args: Parameters<RpcTransport>
|
|
57
57
|
): Promise<TResponse> {
|
|
58
58
|
const { method } = args[0].payload as { method: string; params?: unknown[] };
|
|
59
|
-
let
|
|
59
|
+
let retryAttempt = 0;
|
|
60
60
|
|
|
61
61
|
// eslint-disable-next-line no-constant-condition
|
|
62
62
|
while (true) {
|
|
63
63
|
try {
|
|
64
64
|
return await transportCall();
|
|
65
65
|
} catch (error) {
|
|
66
|
-
if (
|
|
66
|
+
if (retryAttempt++ >= this.retries || this.shouldFailImmediate(method, error)) {
|
|
67
67
|
throw error;
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
+
// Implement a slightly aggressive exponential backoff to account for fierce parallelism.
|
|
71
|
+
const exponentialBackoff = this.retryDelaySeconds * Math.pow(2, retryAttempt);
|
|
72
|
+
const delayS = this.retryDelaySeconds + exponentialBackoff * Math.random();
|
|
73
|
+
|
|
70
74
|
// Log retry attempt if logger is available
|
|
71
75
|
this.logger.debug({
|
|
72
76
|
at: "RetryRpcFactory",
|
|
73
77
|
message: "Retrying Solana RPC call",
|
|
74
78
|
provider: getOriginFromURL(this.clusterUrl),
|
|
75
79
|
method,
|
|
76
|
-
retryAttempt:
|
|
77
|
-
retryDelaySeconds:
|
|
80
|
+
retryAttempt: retryAttempt,
|
|
81
|
+
retryDelaySeconds: delayS,
|
|
78
82
|
error: error?.toString(),
|
|
79
83
|
});
|
|
80
84
|
|
|
81
|
-
await delay(
|
|
85
|
+
await delay(delayS);
|
|
82
86
|
}
|
|
83
87
|
}
|
|
84
88
|
}
|