Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
N
nebula
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
exchain
nebula
Commits
af2cf449
Unverified
Commit
af2cf449
authored
Dec 14, 2022
by
mergify[bot]
Committed by
GitHub
Dec 14, 2022
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #4486 from ethereum-optimism/sc/fd-wait-for-provider
feat(fd): have fault detector wait for providers
parents
b00f81bc
c6c9c7db
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
63 additions
and
0 deletions
+63
-0
proud-socks-sip.md
.changeset/proud-socks-sip.md
+5
-0
silver-kids-search.md
.changeset/silver-kids-search.md
+5
-0
index.ts
packages/common-ts/src/common/index.ts
+1
-0
provider.ts
packages/common-ts/src/common/provider.ts
+39
-0
service.ts
packages/fault-detector/src/service.ts
+13
-0
No files found.
.changeset/proud-socks-sip.md
0 → 100644
View file @
af2cf449
---
'
@eth-optimism/common-ts'
:
patch
---
Adds a function for waiting for ethers providers
.changeset/silver-kids-search.md
0 → 100644
View file @
af2cf449
---
'
@eth-optimism/fault-detector'
:
patch
---
Fault detector will now wait for providers to be connected
packages/common-ts/src/common/index.ts
View file @
af2cf449
export
*
from
'
./logger
'
export
*
from
'
./logger
'
export
*
from
'
./metrics
'
export
*
from
'
./metrics
'
export
*
from
'
./provider
'
packages/common-ts/src/common/provider.ts
0 → 100644
View file @
af2cf449
import
{
Provider
}
from
'
@ethersproject/abstract-provider
'
import
{
sleep
}
from
'
@eth-optimism/core-utils
'
import
{
Logger
}
from
'
./logger
'
/**
* Waits for an Ethers provider to be connected.
*
* @param provider Ethers provider to check.
* @param opts Options for the function.
* @param opts.logger Logger to use.
* @param opts.intervalMs Interval to wait between checks.
* @param opts.name Name of the provider for logs.
*/
export
const
waitForProvider
=
async
(
provider
:
Provider
,
opts
?:
{
logger
?:
Logger
intervalMs
?:
number
name
?:
string
}
)
=>
{
opts
?.
logger
?.
info
(
`waiting for
${
opts
?.
name
||
'
target
'
}
provider
...
`)
let connected = false
while (!connected) {
try {
await provider.getBlockNumber()
connected = true
} catch (e) {
opts?.logger?.info(`
$
{
provider
}
provider
not
connected
,
retrying
...
`)
// Don't spam requests
await sleep(opts?.intervalMs || 15000)
}
}
opts?.logger?.info(`
$
{
opts
?.
name
||
'
target
'
}
provider
connected
`)
}
packages/fault-detector/src/service.ts
View file @
af2cf449
...
@@ -4,6 +4,7 @@ import {
...
@@ -4,6 +4,7 @@ import {
ExpressRouter
,
ExpressRouter
,
Gauge
,
Gauge
,
validators
,
validators
,
waitForProvider
,
}
from
'
@eth-optimism/common-ts
'
}
from
'
@eth-optimism/common-ts
'
import
{
getChainId
,
sleep
,
toRpcHexString
}
from
'
@eth-optimism/core-utils
'
import
{
getChainId
,
sleep
,
toRpcHexString
}
from
'
@eth-optimism/core-utils
'
import
{
CrossChainMessenger
}
from
'
@eth-optimism/sdk
'
import
{
CrossChainMessenger
}
from
'
@eth-optimism/sdk
'
...
@@ -85,6 +86,18 @@ export class FaultDetector extends BaseServiceV2<Options, Metrics, State> {
...
@@ -85,6 +86,18 @@ export class FaultDetector extends BaseServiceV2<Options, Metrics, State> {
}
}
async
init
():
Promise
<
void
>
{
async
init
():
Promise
<
void
>
{
// Connect to L1.
await
waitForProvider
(
this
.
options
.
l1RpcProvider
,
{
logger
:
this
.
logger
,
name
:
'
L1
'
,
})
// Connect to L2.
await
waitForProvider
(
this
.
options
.
l2RpcProvider
,
{
logger
:
this
.
logger
,
name
:
'
L2
'
,
})
this
.
state
.
messenger
=
new
CrossChainMessenger
({
this
.
state
.
messenger
=
new
CrossChainMessenger
({
l1SignerOrProvider
:
this
.
options
.
l1RpcProvider
,
l1SignerOrProvider
:
this
.
options
.
l1RpcProvider
,
l2SignerOrProvider
:
this
.
options
.
l2RpcProvider
,
l2SignerOrProvider
:
this
.
options
.
l2RpcProvider
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment