Skip to content

Commit d7a4ed1

Browse files
committed
Add timeout + default setting to Arbitrum RPC requests
1 parent 2035584 commit d7a4ed1

File tree

3 files changed

+21
-4
lines changed

3 files changed

+21
-4
lines changed

packages/composites/glv-token/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ This document was generated automatically. Please see [README Generator](../../s
1010
| :-------: | :--------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----: | :-----: | :------------------------------------------: |
1111
|| ARBITRUM_RPC_URL | RPC url of Arbitrum node | string | | |
1212
|| ARBITRUM_CHAIN_ID | The chain id to connect to | number | | `42161` |
13+
| | ARBITRUM_RPC_TIMEOUT_MS | The amount of time the RPC request to the Arbitrum node should wait before timing out. | number | | `5000` |
1314
|| DATASTORE_CONTRACT_ADDRESS | Address of Data Store contract | string | | `0xFD70de6b91282D8017aA4E741e9Ae325CAb992d8` |
1415
|| GLV_READER_CONTRACT_ADDRESS | Address of Glv Reader Contract | string | | `0x6a9505D0B44cFA863d9281EA5B0b34cB36243b45` |
1516
|| TIINGO_ADAPTER_URL | URL of Tiingo EA | string | | |

packages/composites/glv-token/src/config/index.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,12 @@ export const config = new AdapterConfig(
88
type: 'string',
99
required: true,
1010
},
11+
ARBITRUM_RPC_TIMEOUT_MS: {
12+
description:
13+
'The amount of time the RPC request to the Arbitrum node should wait before timing out.',
14+
type: 'number',
15+
default: 5_000,
16+
},
1117
ARBITRUM_CHAIN_ID: {
1218
description: 'The chain id to connect to',
1319
type: 'number',

packages/composites/glv-token/src/transport/base.ts

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,11 @@ export abstract class BaseGlvTransport<
7070
): Promise<void> {
7171
await super.initialize(dependencies, adapterSettings, endpointName, transportName)
7272
this.settings = adapterSettings
73-
this.provider = new ethers.providers.JsonRpcProvider(
74-
adapterSettings.ARBITRUM_RPC_URL,
75-
adapterSettings.ARBITRUM_CHAIN_ID,
76-
)
73+
const conn = {
74+
url: adapterSettings.ARBITRUM_RPC_URL,
75+
timeout: adapterSettings.ARBITRUM_RPC_TIMEOUT_MS,
76+
}
77+
this.provider = new ethers.providers.JsonRpcProvider(conn, adapterSettings.ARBITRUM_CHAIN_ID)
7778
this.requester = dependencies.requester
7879

7980
this.glvReaderContract = new ethers.Contract(
@@ -148,10 +149,13 @@ export abstract class BaseGlvTransport<
148149
const providerDataRequestedUnixMs = Date.now()
149150
const glv_address = param.glv
150151

152+
let start = Date.now()
151153
const glvInfo = await this.glvReaderContract.getGlvInfo(
152154
this.settings.DATASTORE_CONTRACT_ADDRESS,
153155
glv_address,
154156
)
157+
let end = Date.now() - start
158+
logger.debug(`Fetched glv info in ${end}ms`)
155159

156160
const glv: glvInformation = {
157161
glvToken: glvInfo.glv.glvToken,
@@ -190,10 +194,13 @@ export abstract class BaseGlvTransport<
190194
glv_address,
191195
]
192196

197+
start = Date.now()
193198
const [[maximizedPriceRaw], [minimizedPriceRaw]] = await Promise.all([
194199
this.glvReaderContract.getGlvTokenPrice(...glvTokenPriceContractParams, true),
195200
this.glvReaderContract.getGlvTokenPrice(...glvTokenPriceContractParams, false),
196201
])
202+
end = Date.now() - start
203+
logger.info(`Fetched glv token price in ${end}ms`)
197204

198205
const maximizedPrice = Number(utils.formatUnits(maximizedPriceRaw, SIGNED_PRICE_DECIMALS))
199206
const minimizedPrice = Number(utils.formatUnits(minimizedPriceRaw, SIGNED_PRICE_DECIMALS))
@@ -226,6 +233,7 @@ export abstract class BaseGlvTransport<
226233
const priceProviders: Record<string, string[]> = {}
227234
const promises = []
228235

236+
const start = Date.now()
229237
for (let i = 0; i < sources.length; i++) {
230238
const source = sources[i]
231239
const assetPromises = assets.map(async (asset) => {
@@ -270,6 +278,8 @@ export abstract class BaseGlvTransport<
270278
}
271279

272280
await Promise.all(promises)
281+
const end = Date.now() - start
282+
logger.debug(`Fetched prices in ${end}ms`)
273283

274284
this.validateRequiredResponses(priceProviders, sources, assets, dataRequestedTimestamp)
275285

0 commit comments

Comments
 (0)