Skip to content

Commit 316a49b

Browse files
committed
fix(#1285): use all RPCs defined in fallbackRPCs
1 parent 1f81668 commit 316a49b

3 files changed

Lines changed: 88 additions & 74 deletions

File tree

package-lock.json

Lines changed: 60 additions & 60 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/components/c2d/compute_engine_docker.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -754,7 +754,7 @@ export class C2DEngineDocker extends C2DEngine {
754754

755755
private async cleanUpUnknownLocks(chain: string, currentTimestamp: bigint) {
756756
try {
757-
const nodeAddress = await this.getKeyManager().getEthAddress()
757+
const nodeAddress = this.getKeyManager().getEthAddress()
758758
const jobIds: any[] = []
759759
const tokens: string[] = []
760760
const payer: string[] = []
@@ -765,6 +765,10 @@ export class C2DEngineDocker extends C2DEngine {
765765
'0x0000000000000000000000000000000000000000',
766766
nodeAddress
767767
)
768+
if (!balocks || balocks.length === 0) {
769+
CORE_LOGGER.warn(`Could not find any locks for chain ${chain}, skipping cleanup`)
770+
return
771+
}
768772
for (const lock of balocks) {
769773
const lockExpiry = BigInt(lock.expiry.toString())
770774
if (currentTimestamp > lockExpiry) {

src/utils/blockchain.ts

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import {
33
ethers,
44
Signer,
55
Contract,
6-
JsonRpcApiProvider,
76
JsonRpcProvider,
87
FallbackProvider,
98
isAddress,
@@ -15,18 +14,12 @@ import { getConfiguration } from './config.js'
1514
import { CORE_LOGGER } from './logging/common.js'
1615
import { ConnectionStatus } from '../@types/blockchain.js'
1716
import { ValidateChainId } from '../@types/commands.js'
18-
// import { KNOWN_CONFIDENTIAL_EVMS } from '../utils/address.js'
19-
import { OceanNodeConfig } from '../@types/OceanNode.js'
2017
import { KeyManager } from '../components/KeyManager/index.js'
2118

2219
export class Blockchain {
23-
private config?: OceanNodeConfig // Optional for new constructor
24-
private static signers: Map<string, Signer> = new Map()
25-
private static providers: Map<string, JsonRpcApiProvider> = new Map()
2620
private keyManager: KeyManager
2721
private signer: Signer
2822
private provider: FallbackProvider
29-
private providers: JsonRpcProvider[] = []
3023
private chainId: number
3124
private knownRPCs: string[] = []
3225

@@ -65,24 +58,41 @@ export class Blockchain {
6558

6659
public async getProvider(force: boolean = false): Promise<FallbackProvider> {
6760
if (!this.provider) {
68-
for (const rpc of this.knownRPCs) {
61+
const configs: {
62+
provider: JsonRpcProvider
63+
priority: number
64+
stallTimeout: number
65+
}[] = []
66+
67+
const PRIMARY_RPC_TIMEOUT = 3000
68+
const FALLBACK_RPC_TIMEOUT = 1500
69+
for (let i = 0; i < this.knownRPCs.length; i++) {
70+
const rpc = this.knownRPCs[i]
6971
const rpcProvider = new JsonRpcProvider(rpc)
70-
// filter wrong chains or broken RPCs
7172
if (!force) {
7273
try {
7374
const { chainId } = await rpcProvider.getNetwork()
7475
if (chainId.toString() === this.chainId.toString()) {
75-
this.providers.push(rpcProvider)
76-
break
76+
// primary RPC gets lowest priority = is first to be called
77+
configs.push({
78+
provider: rpcProvider,
79+
priority: i + 1,
80+
stallTimeout: i === 0 ? PRIMARY_RPC_TIMEOUT : FALLBACK_RPC_TIMEOUT
81+
})
7782
}
7883
} catch (error) {
7984
CORE_LOGGER.error(`Error getting network for RPC ${rpc}: ${error}`)
8085
}
8186
} else {
82-
this.providers.push(new JsonRpcProvider(rpc))
87+
configs.push({
88+
provider: rpcProvider,
89+
priority: i + 1,
90+
stallTimeout: i === 0 ? PRIMARY_RPC_TIMEOUT : FALLBACK_RPC_TIMEOUT
91+
})
8392
}
8493
}
85-
this.provider = new FallbackProvider(this.providers)
94+
// quorum=1: accept the first response to avoid calls to all configured rpcs
95+
this.provider = new FallbackProvider(configs, undefined, { quorum: 1 })
8696
}
8797
return this.provider
8898
}

0 commit comments

Comments
 (0)