Skip to content
This repository was archived by the owner on Jan 24, 2024. It is now read-only.

Commit 153473a

Browse files
committed
ref impl: no ctx in driver struct
1 parent be0ae50 commit 153473a

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

opnode/l2/driver.go

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import (
1414
)
1515

1616
type EngineDriver struct {
17-
Ctx context.Context
1817
Log log.Logger
1918
// API bindings to execution engine
2019
RPC DriverAPI
@@ -73,10 +72,10 @@ func (e *EngineDriver) UpdateHead(l1Head eth.BlockID, l2Head eth.BlockID) {
7372
e.l2Head = l2Head
7473
}
7574

76-
func (e *EngineDriver) RequestHeadUpdate() error {
75+
func (e *EngineDriver) RequestHeadUpdate(ctx context.Context) error {
7776
e.headLock.Lock()
7877
defer e.headLock.Unlock()
79-
refL1, refL2, _, err := e.SyncRef.RefByL2Num(e.Ctx, nil, &e.Genesis)
78+
refL1, refL2, _, err := e.SyncRef.RefByL2Num(ctx, nil, &e.Genesis)
8079
if err != nil {
8180
return err
8281
}
@@ -85,7 +84,7 @@ func (e *EngineDriver) RequestHeadUpdate() error {
8584
return nil
8685
}
8786

88-
func (e *EngineDriver) Drive(dl Downloader, l1Heads <-chan eth.HeadSignal) ethereum.Subscription {
87+
func (e *EngineDriver) Drive(ctx context.Context, dl Downloader, l1Heads <-chan eth.HeadSignal) ethereum.Subscription {
8988
e.driveLock.Lock()
9089
defer e.driveLock.Unlock()
9190
if e.driveSub != nil {
@@ -130,14 +129,16 @@ func (e *EngineDriver) Drive(dl Downloader, l1Heads <-chan eth.HeadSignal) ether
130129

131130
for {
132131
select {
133-
case <-e.Ctx.Done():
134-
return e.Ctx.Err()
132+
case <-ctx.Done():
133+
return ctx.Err()
135134
case <-quit:
136135
return nil
137136
case <-l2HeadPollTicker.C:
138-
if err := e.RequestHeadUpdate(); err != nil {
137+
ctx, cancel := context.WithTimeout(ctx, time.Second*4)
138+
if err := e.RequestHeadUpdate(ctx); err != nil {
139139
e.Log.Error("failed to fetch L2 head info", "err", err)
140140
}
141+
cancel()
141142
continue
142143
case l1HeadSig := <-l1Heads:
143144
if e.l1Head == l1HeadSig.Self {
@@ -146,7 +147,7 @@ func (e *EngineDriver) Drive(dl Downloader, l1Heads <-chan eth.HeadSignal) ether
146147
}
147148
if e.l1Head == l1HeadSig.Parent {
148149
// Simple extend, a linear life is easy
149-
if l2ID, err := DriverStep(e.Ctx, e.Log, e.RPC, dl, l1HeadSig.Self, e.l2Head, e.l2Finalized.Hash); err != nil {
150+
if l2ID, err := DriverStep(ctx, e.Log, e.RPC, dl, l1HeadSig.Self, e.l2Head, e.l2Finalized.Hash); err != nil {
150151
e.Log.Error("Failed to extend L2 chain with new L1 block", "l1", l1HeadSig.Self, "l2", e.l2Head, "err", err)
151152
// Retry sync later
152153
e.l1Target = l1HeadSig.Self
@@ -176,7 +177,7 @@ func (e *EngineDriver) Drive(dl Downloader, l1Heads <-chan eth.HeadSignal) ether
176177
continue
177178
}
178179
e.Log.Debug("finding next sync step, engine syncing", "l2", e.l2Head, "l1", e.l1Head)
179-
refL1, refL2, err := FindSyncStart(e.Ctx, e.SyncRef, &e.Genesis)
180+
refL1, refL2, err := FindSyncStart(ctx, e.SyncRef, &e.Genesis)
180181
if err != nil {
181182
e.Log.Error("Failed to find sync starting point", "err", err)
182183
continue
@@ -185,7 +186,7 @@ func (e *EngineDriver) Drive(dl Downloader, l1Heads <-chan eth.HeadSignal) ether
185186
e.Log.Debug("Engine is already synced, aborting sync", "l1_head", e.l1Head, "l2_head", e.l2Head)
186187
continue
187188
}
188-
if l2ID, err := DriverStep(e.Ctx, e.Log, e.RPC, dl, refL1, refL2, e.l2Finalized.Hash); err != nil {
189+
if l2ID, err := DriverStep(ctx, e.Log, e.RPC, dl, refL1, refL2, e.l2Finalized.Hash); err != nil {
189190
e.Log.Error("Failed to sync L2 chain with new L1 block", "l1", refL1, "onto_l2", refL2, "err", err)
190191
continue
191192
} else {

0 commit comments

Comments
 (0)