@sentio/sdk 4.4.0-rc.1 → 4.4.0
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/eth/provider.d.ts.map +1 -1
- package/dist/eth/provider.js +74 -2
- package/dist/eth/provider.js.map +1 -1
- package/package.json +3 -3
- package/src/eth/provider.ts +79 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/eth/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,OAAO,EAAW,MAAM,QAAQ,CAAA;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AAEzE,OAAO,MAAM,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAK1C,eAAO,MAAM,aAAa,iBAA2C,CAAA;AAcrE,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,eAAe,CAqCjE;
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/eth/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,OAAO,EAAW,MAAM,QAAQ,CAAA;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AAEzE,OAAO,MAAM,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAK1C,eAAO,MAAM,aAAa,iBAA2C,CAAA;AAcrE,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,eAAe,CAqCjE;AA4GD,qBAAa,2BAA4B,SAAQ,eAAe;;IAC9D,QAAQ,EAAE,MAAM,CAAA;gBAcJ,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,SAAI;IAMxE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAwF7C,KAAK,CAAC,OAAO,EAAE,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAsD3F,WAAW,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,GAAG,KAAK;IAiBzE,QAAQ;CAGT"}
|
package/dist/eth/provider.js
CHANGED
|
@@ -42,6 +42,74 @@ export function getProvider(chainId) {
|
|
|
42
42
|
providers.set(key, provider);
|
|
43
43
|
return provider;
|
|
44
44
|
}
|
|
45
|
+
// Default upper bound for a single RPC promise to settle, queue wait included.
|
|
46
|
+
// Deliberately above any sane queue+request latency and far below "stuck forever".
|
|
47
|
+
const DEFAULT_RPC_CALL_TIMEOUT_MS = 120_000;
|
|
48
|
+
// Read per call so tests (and operators) can adjust without a module reload.
|
|
49
|
+
function rpcCallTimeoutMs() {
|
|
50
|
+
const n = Number(process.env['RPC_CALL_TIMEOUT_MS']);
|
|
51
|
+
return Number.isFinite(n) && n > 0 ? n : DEFAULT_RPC_CALL_TIMEOUT_MS;
|
|
52
|
+
}
|
|
53
|
+
// Keep the diagnostic bounded: `what` may describe params with large calldata.
|
|
54
|
+
const TIMEOUT_WHAT_MAX = 120;
|
|
55
|
+
function timeoutError(ms, what) {
|
|
56
|
+
const bounded = what.length > TIMEOUT_WHAT_MAX ? `${what.slice(0, TIMEOUT_WHAT_MAX)}…(${what.length} chars)` : what;
|
|
57
|
+
const e = new Error(`rpc request did not settle within ${ms}ms: ${bounded}`);
|
|
58
|
+
e.code = 'TIMEOUT';
|
|
59
|
+
return e;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Run `task` on `executor` such that BOTH of these settle within the deadline:
|
|
63
|
+
*
|
|
64
|
+
* - the returned (outward) promise — a request whose transport dies without
|
|
65
|
+
* ever settling (half-dead keep-alive connection, a rejection lost inside a
|
|
66
|
+
* lower layer) must not hang its awaiters. For eth_call this is amplified by
|
|
67
|
+
* the in-flight promise cache: the pending promise is cached by tag, so one
|
|
68
|
+
* dead request would pin every later identical call, surviving even
|
|
69
|
+
* process-level retries (the replayed block issues the same call and awaits
|
|
70
|
+
* the same zombie promise);
|
|
71
|
+
* - the queue task itself — PQueue must always get its concurrency slot back.
|
|
72
|
+
* Racing only the outward promise would leave the never-settling task owning
|
|
73
|
+
* its slot forever, and after `concurrency` such zombies every later call
|
|
74
|
+
* could only time out in the queue.
|
|
75
|
+
*
|
|
76
|
+
* A task that only starts after the deadline rejects immediately, releasing
|
|
77
|
+
* the slot without touching the transport. A task still running when its
|
|
78
|
+
* remaining budget expires is abandoned; the orphaned transport promise gets a
|
|
79
|
+
* swallow-handler so a late rejection is never unhandled.
|
|
80
|
+
*
|
|
81
|
+
* The timeout error carries code 'TIMEOUT' so the existing eth_call retry
|
|
82
|
+
* path treats it exactly like an ethers transport timeout.
|
|
83
|
+
*/
|
|
84
|
+
function boundedTask(executor, what, task) {
|
|
85
|
+
const ms = rpcCallTimeoutMs();
|
|
86
|
+
const enqueued = Date.now();
|
|
87
|
+
const settled = executor.add(() => {
|
|
88
|
+
const remaining = ms - (Date.now() - enqueued);
|
|
89
|
+
if (remaining <= 0) {
|
|
90
|
+
return Promise.reject(timeoutError(ms, what));
|
|
91
|
+
}
|
|
92
|
+
const running = task();
|
|
93
|
+
let timer;
|
|
94
|
+
const deadline = new Promise((_, reject) => {
|
|
95
|
+
timer = setTimeout(() => {
|
|
96
|
+
running.catch(() => { });
|
|
97
|
+
reject(timeoutError(ms, what));
|
|
98
|
+
}, remaining);
|
|
99
|
+
// A pending deadline must never keep the process alive on its own.
|
|
100
|
+
timer.unref?.();
|
|
101
|
+
});
|
|
102
|
+
return Promise.race([running, deadline]).finally(() => clearTimeout(timer));
|
|
103
|
+
});
|
|
104
|
+
// Bound the outward promise as well: with a saturated queue the task may not
|
|
105
|
+
// even have started by the deadline, but callers must still see settlement.
|
|
106
|
+
let timer;
|
|
107
|
+
const deadline = new Promise((_, reject) => {
|
|
108
|
+
timer = setTimeout(() => reject(timeoutError(ms, what)), ms);
|
|
109
|
+
timer.unref?.();
|
|
110
|
+
});
|
|
111
|
+
return Promise.race([settled, deadline]).finally(() => clearTimeout(timer));
|
|
112
|
+
}
|
|
45
113
|
function getTag(prefix, value) {
|
|
46
114
|
return (prefix +
|
|
47
115
|
':' +
|
|
@@ -88,7 +156,7 @@ export class QueuedStaticJsonRpcProvider extends JsonRpcProvider {
|
|
|
88
156
|
}
|
|
89
157
|
async send(method, params) {
|
|
90
158
|
if (method !== 'eth_call' || params.length > 2) {
|
|
91
|
-
return await this.executor
|
|
159
|
+
return await boundedTask(this.executor, method, () => super.send(method, params));
|
|
92
160
|
}
|
|
93
161
|
const tag = getTag(method, params);
|
|
94
162
|
const block = params[params.length - 1];
|
|
@@ -97,7 +165,11 @@ export class QueuedStaticJsonRpcProvider extends JsonRpcProvider {
|
|
|
97
165
|
miss_count.add(1);
|
|
98
166
|
const handler = metricsStorage.getStore();
|
|
99
167
|
const queued = Date.now();
|
|
100
|
-
|
|
168
|
+
// The bounded description (not the full tag): the tag embeds calldata.
|
|
169
|
+
const what = `eth_call to=${params[0]?.to} block=${block}`;
|
|
170
|
+
// boundedTask keeps the CACHED promise settleable: the cache must never
|
|
171
|
+
// hold a promise that can stay pending forever.
|
|
172
|
+
perform = boundedTask(this.executor, what, () => {
|
|
101
173
|
const started = Date.now();
|
|
102
174
|
processMetrics.processor_rpc_queue_duration.record(started - queued, {
|
|
103
175
|
chain_id: this._network.chainId.toString(),
|
package/dist/eth/provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/eth/provider.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/eth/provider.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sentio/sdk",
|
|
3
|
-
"version": "4.4.0
|
|
3
|
+
"version": "4.4.0",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -97,8 +97,8 @@
|
|
|
97
97
|
"typechain": "^8.3.2",
|
|
98
98
|
"utility-types": "^3.11.0",
|
|
99
99
|
"yaml": "^2.3.4",
|
|
100
|
-
"@sentio/protos": "4.4.0
|
|
101
|
-
"@sentio/runtime": "^4.4.0
|
|
100
|
+
"@sentio/protos": "4.4.0",
|
|
101
|
+
"@sentio/runtime": "^4.4.0"
|
|
102
102
|
},
|
|
103
103
|
"peerDependencies": {
|
|
104
104
|
"tsdown": "^0.22.3"
|
package/src/eth/provider.ts
CHANGED
|
@@ -60,6 +60,79 @@ export function getProvider(chainId?: EthChainId): JsonRpcProvider {
|
|
|
60
60
|
return provider
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
+
// Default upper bound for a single RPC promise to settle, queue wait included.
|
|
64
|
+
// Deliberately above any sane queue+request latency and far below "stuck forever".
|
|
65
|
+
const DEFAULT_RPC_CALL_TIMEOUT_MS = 120_000
|
|
66
|
+
|
|
67
|
+
// Read per call so tests (and operators) can adjust without a module reload.
|
|
68
|
+
function rpcCallTimeoutMs(): number {
|
|
69
|
+
const n = Number(process.env['RPC_CALL_TIMEOUT_MS'])
|
|
70
|
+
return Number.isFinite(n) && n > 0 ? n : DEFAULT_RPC_CALL_TIMEOUT_MS
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// Keep the diagnostic bounded: `what` may describe params with large calldata.
|
|
74
|
+
const TIMEOUT_WHAT_MAX = 120
|
|
75
|
+
|
|
76
|
+
function timeoutError(ms: number, what: string): Error & { code: string } {
|
|
77
|
+
const bounded = what.length > TIMEOUT_WHAT_MAX ? `${what.slice(0, TIMEOUT_WHAT_MAX)}…(${what.length} chars)` : what
|
|
78
|
+
const e = new Error(`rpc request did not settle within ${ms}ms: ${bounded}`) as Error & { code: string }
|
|
79
|
+
e.code = 'TIMEOUT'
|
|
80
|
+
return e
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Run `task` on `executor` such that BOTH of these settle within the deadline:
|
|
85
|
+
*
|
|
86
|
+
* - the returned (outward) promise — a request whose transport dies without
|
|
87
|
+
* ever settling (half-dead keep-alive connection, a rejection lost inside a
|
|
88
|
+
* lower layer) must not hang its awaiters. For eth_call this is amplified by
|
|
89
|
+
* the in-flight promise cache: the pending promise is cached by tag, so one
|
|
90
|
+
* dead request would pin every later identical call, surviving even
|
|
91
|
+
* process-level retries (the replayed block issues the same call and awaits
|
|
92
|
+
* the same zombie promise);
|
|
93
|
+
* - the queue task itself — PQueue must always get its concurrency slot back.
|
|
94
|
+
* Racing only the outward promise would leave the never-settling task owning
|
|
95
|
+
* its slot forever, and after `concurrency` such zombies every later call
|
|
96
|
+
* could only time out in the queue.
|
|
97
|
+
*
|
|
98
|
+
* A task that only starts after the deadline rejects immediately, releasing
|
|
99
|
+
* the slot without touching the transport. A task still running when its
|
|
100
|
+
* remaining budget expires is abandoned; the orphaned transport promise gets a
|
|
101
|
+
* swallow-handler so a late rejection is never unhandled.
|
|
102
|
+
*
|
|
103
|
+
* The timeout error carries code 'TIMEOUT' so the existing eth_call retry
|
|
104
|
+
* path treats it exactly like an ethers transport timeout.
|
|
105
|
+
*/
|
|
106
|
+
function boundedTask<T>(executor: PQueue, what: string, task: () => Promise<T>): Promise<T> {
|
|
107
|
+
const ms = rpcCallTimeoutMs()
|
|
108
|
+
const enqueued = Date.now()
|
|
109
|
+
const settled = executor.add(() => {
|
|
110
|
+
const remaining = ms - (Date.now() - enqueued)
|
|
111
|
+
if (remaining <= 0) {
|
|
112
|
+
return Promise.reject(timeoutError(ms, what))
|
|
113
|
+
}
|
|
114
|
+
const running = task()
|
|
115
|
+
let timer: NodeJS.Timeout | undefined
|
|
116
|
+
const deadline = new Promise<never>((_, reject) => {
|
|
117
|
+
timer = setTimeout(() => {
|
|
118
|
+
running.catch(() => {})
|
|
119
|
+
reject(timeoutError(ms, what))
|
|
120
|
+
}, remaining)
|
|
121
|
+
// A pending deadline must never keep the process alive on its own.
|
|
122
|
+
timer.unref?.()
|
|
123
|
+
})
|
|
124
|
+
return Promise.race([running, deadline]).finally(() => clearTimeout(timer))
|
|
125
|
+
})
|
|
126
|
+
// Bound the outward promise as well: with a saturated queue the task may not
|
|
127
|
+
// even have started by the deadline, but callers must still see settlement.
|
|
128
|
+
let timer: NodeJS.Timeout | undefined
|
|
129
|
+
const deadline = new Promise<never>((_, reject) => {
|
|
130
|
+
timer = setTimeout(() => reject(timeoutError(ms, what)), ms)
|
|
131
|
+
timer.unref?.()
|
|
132
|
+
})
|
|
133
|
+
return Promise.race([settled, deadline]).finally(() => clearTimeout(timer)) as Promise<T>
|
|
134
|
+
}
|
|
135
|
+
|
|
63
136
|
function getTag(prefix: string, value: any): string {
|
|
64
137
|
return (
|
|
65
138
|
prefix +
|
|
@@ -116,7 +189,7 @@ export class QueuedStaticJsonRpcProvider extends JsonRpcProvider {
|
|
|
116
189
|
|
|
117
190
|
async send(method: string, params: Array<any>): Promise<any> {
|
|
118
191
|
if (method !== 'eth_call' || params.length > 2) {
|
|
119
|
-
return await this.executor
|
|
192
|
+
return await boundedTask(this.executor, method, () => super.send(method, params))
|
|
120
193
|
}
|
|
121
194
|
const tag = getTag(method, params)
|
|
122
195
|
const block = params[params.length - 1]
|
|
@@ -125,7 +198,11 @@ export class QueuedStaticJsonRpcProvider extends JsonRpcProvider {
|
|
|
125
198
|
miss_count.add(1)
|
|
126
199
|
const handler = metricsStorage.getStore()
|
|
127
200
|
const queued: number = Date.now()
|
|
128
|
-
|
|
201
|
+
// The bounded description (not the full tag): the tag embeds calldata.
|
|
202
|
+
const what = `eth_call to=${params[0]?.to} block=${block}`
|
|
203
|
+
// boundedTask keeps the CACHED promise settleable: the cache must never
|
|
204
|
+
// hold a promise that can stay pending forever.
|
|
205
|
+
perform = boundedTask(this.executor, what, () => {
|
|
129
206
|
const started = Date.now()
|
|
130
207
|
processMetrics.processor_rpc_queue_duration.record(started - queued, {
|
|
131
208
|
chain_id: this._network.chainId.toString(),
|