Skip to content

Commit 3ee19b0

Browse files
committed
Update for changed master base since PR #3837
1 parent 007f8db commit 3ee19b0

17 files changed

+142
-122
lines changed

tools/syncer/helpers/sync_ticker.nim

Lines changed: 79 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212

1313
import
1414
pkg/[chronos, chronicles, eth/common, stew/interval_set],
15-
../../../execution_chain/sync/beacon/worker/[blocks, headers, worker_desc]
15+
../../../execution_chain/sync/beacon/worker/[
16+
blocks, headers, helpers, worker_desc]
1617

1718
logScope:
1819
topics = "beacon ticker"
@@ -43,10 +44,11 @@ type
4344
blkStagedBottom: BlockNumber
4445

4546
state: SyncState
47+
standByMode: bool
4648
nSyncPeers: int
4749
eta: chronos.Duration
4850

49-
TickerRef* = ref object of RootRef
51+
TickerRef = ref object
5052
## Ticker descriptor object
5153
started: Moment
5254
visited: Moment
@@ -59,6 +61,7 @@ type
5961
const
6062
tickerLogInterval = chronos.seconds(2)
6163
tickerLogSuppressMax = chronos.seconds(100)
64+
tickerLogStandByMax = chronos.seconds(200)
6265

6366
proc updater(ctx: BeaconCtxRef): TickerStats =
6467
## Legacy stuff, will be probably be superseded by `metrics`
@@ -86,79 +89,90 @@ proc updater(ctx: BeaconCtxRef): TickerStats =
8689
nBlkUnprocFragm: ctx.blk.unprocessed.chunks,
8790

8891
state: ctx.pool.syncState,
92+
standByMode: ctx.pool.standByMode,
8993
nSyncPeers: ctx.nSyncPeers(),
9094
eta: ctx.pool.syncEta.avg)
9195

9296
proc tickerLogger(t: TickerRef; ctx: BeaconCtxRef) =
9397
let
9498
data = ctx.updater()
9599
now = Moment.now()
100+
elapsed = now - t.visited
96101

97-
if now <= t.visited + tickerLogInterval:
102+
if elapsed <= tickerLogInterval:
98103
return
99104

100-
if data != t.lastStats or
101-
tickerLogSuppressMax < (now - t.visited):
102-
let
103-
B = if data.base == data.latest: "L" else: $data.base
104-
L = if data.latest == data.coupler: "C" else: $data.latest
105-
I = if data.top == 0: "n/a" else : $data.top
106-
C = if data.coupler == data.dangling: "D"
107-
elif data.coupler < high(int64).uint64: $data.coupler
108-
else: "n/a"
109-
D = if data.dangling == data.head: "H" else: $data.dangling
110-
H = if data.head == data.target: "T"
111-
elif data.activeOk: $data.head
112-
else: "?" & $data.head
113-
T = if data.activeOk: $data.target else: "?" & $data.target
114-
F = if data.fin == 0: "n/a"
115-
elif data.fin == data.target and data.activeOk: "T"
116-
elif data.fin == data.head: "H"
117-
elif data.fin == data.dangling: "D"
118-
elif data.fin == data.latest: "L"
119-
elif data.fin == data.base: "B"
120-
else: $data.fin
121-
122-
hS = if data.nHdrStaged == 0: "n/a"
123-
else: $data.hdrStagedTop & "[" & $data.nHdrStaged & "]"
124-
hU = if data.nHdrUnprocFragm == 0 and data.nHdrUnprocessed == 0: "n/a"
125-
elif data.hdrUnprocTop == 0:
126-
"(" & data.nHdrUnprocessed.toSI & "," & $data.nHdrUnprocFragm & ")"
127-
else: $data.hdrUnprocTop & "(" &
128-
data.nHdrUnprocessed.toSI & "," & $data.nHdrUnprocFragm & ")"
129-
hQ = if hS == "n/a": hU
130-
elif hU == "n/a": hS
131-
else: hS & "<-" & hU
132-
133-
bS = if data.nBlkStaged == 0: "n/a"
134-
else: $data.blkStagedBottom & "[" & $data.nBlkStaged & "]"
135-
bU = if data.nBlkUnprocFragm == 0 and data.nBlkUnprocessed == 0: "n/a"
136-
elif data.blkUnprocBottom == high(BlockNumber):
137-
"(" & data.nBlkUnprocessed.toSI & "," & $data.nBlkUnprocFragm & ")"
138-
else: $data.blkUnprocBottom & "(" &
139-
data.nBlkUnprocessed.toSI & "," & $data.nBlkUnprocFragm & ")"
140-
bQ = if bS == "n/a": bU
141-
elif bU == "n/a": bS
142-
else: bS & "<-" & bU
143-
144-
st = case data.state
145-
of idle: "0"
146-
of headers: "h"
147-
of headersCancel: "x"
148-
of headersFinish: "f"
149-
of blocks: "b"
150-
of blocksCancel: "x"
151-
of blocksFinish: "f"
152-
153-
nP = data.nSyncPeers
154-
155-
# With `int64`, there are more than 29*10^10 years range for seconds
156-
up = (now - t.started).toStr
157-
eta = data.eta.toStr
158-
159-
t.lastStats = data
160-
t.visited = now
105+
if data.standByMode:
106+
if elapsed <= tickerLogStandByMax:
107+
return
108+
elif data == t.lastStats and
109+
elapsed <= tickerLogSuppressMax:
110+
return
161111

112+
let
113+
B = if data.base == data.latest: "L" else: $data.base
114+
L = if data.latest == data.coupler: "C" else: $data.latest
115+
I = if data.top == 0: "n/a" else : $data.top
116+
C = if data.coupler == data.dangling: "D"
117+
elif data.coupler < high(int64).uint64: $data.coupler
118+
else: "n/a"
119+
D = if data.dangling == data.head: "H" else: $data.dangling
120+
H = if data.head == data.target: "T"
121+
elif data.activeOk: $data.head
122+
else: "?" & $data.head
123+
T = if data.activeOk: $data.target else: "?" & $data.target
124+
F = if data.fin == 0: "n/a"
125+
elif data.fin == data.target and data.activeOk: "T"
126+
elif data.fin == data.head: "H"
127+
elif data.fin == data.dangling: "D"
128+
elif data.fin == data.latest: "L"
129+
elif data.fin == data.base: "B"
130+
else: $data.fin
131+
132+
hS = if data.nHdrStaged == 0: "n/a"
133+
else: $data.hdrStagedTop & "[" & $data.nHdrStaged & "]"
134+
hU = if data.nHdrUnprocFragm == 0 and data.nHdrUnprocessed == 0: "n/a"
135+
elif data.hdrUnprocTop == 0:
136+
"(" & data.nHdrUnprocessed.toSI & "," & $data.nHdrUnprocFragm & ")"
137+
else: $data.hdrUnprocTop & "(" &
138+
data.nHdrUnprocessed.toSI & "," & $data.nHdrUnprocFragm & ")"
139+
hQ = if hS == "n/a": hU
140+
elif hU == "n/a": hS
141+
else: hS & "<-" & hU
142+
143+
bS = if data.nBlkStaged == 0: "n/a"
144+
else: $data.blkStagedBottom & "[" & $data.nBlkStaged & "]"
145+
bU = if data.nBlkUnprocFragm == 0 and data.nBlkUnprocessed == 0: "n/a"
146+
elif data.blkUnprocBottom == high(BlockNumber):
147+
"(" & data.nBlkUnprocessed.toSI & "," & $data.nBlkUnprocFragm & ")"
148+
else: $data.blkUnprocBottom & "(" &
149+
data.nBlkUnprocessed.toSI & "," & $data.nBlkUnprocFragm & ")"
150+
bQ = if bS == "n/a": bU
151+
elif bU == "n/a": bS
152+
else: bS & "<-" & bU
153+
154+
st = case data.state
155+
of idle: "0"
156+
of headers: "h"
157+
of headersCancel: "x"
158+
of headersFinish: "f"
159+
of blocks: "b"
160+
of blocksCancel: "x"
161+
of blocksFinish: "f"
162+
163+
nP = data.nSyncPeers
164+
165+
# With `int64`, there are more than 29*10^10 years range for seconds
166+
up = (now - t.started).toStr
167+
eta = data.eta.toStr
168+
169+
t.lastStats = data
170+
t.visited = now
171+
172+
if data.standByMode:
173+
debug "Sync stand-by mode", up, eta, nP, B, L,
174+
D, H, T, F
175+
else:
162176
case data.state
163177
of idle:
164178
debug "Sync state idle", up, eta, nP, B, L,
@@ -176,7 +190,7 @@ proc tickerLogger(t: TickerRef; ctx: BeaconCtxRef) =
176190
# Public function
177191
# ------------------------------------------------------------------------------
178192

179-
proc syncTicker*(): BackgroundTicker =
193+
proc syncTicker*(): Ticker =
180194
let desc = TickerRef(started: Moment.now())
181195
return proc(ctx: BeaconCtxRef) =
182196
desc.tickerLogger(ctx)

tools/syncer/replay/replay_desc.nim

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,10 @@ type
3333
ReplayEndUpFn* = proc() {.gcsafe, raises: [].}
3434
## Terminator control directive for runner/dispatcher
3535

36-
ReplayGetSyncPeerFn* = GetSyncPeerFn[BeaconCtxData,BeaconBuddyData]
36+
ReplayGetSyncPeerFn* = GetSyncPeerFn[BeaconCtxData,BeaconPeerData]
3737
## Shortcut
3838

39-
ReplayNSyncPeersFn* = NSyncPeersFn[BeaconCtxData,BeaconBuddyData]
39+
ReplayNSyncPeersFn* = NSyncPeersFn[BeaconCtxData,BeaconPeerData]
4040
## Shortcut
4141

4242
ReplayRef* = ref object of BeaconHandlersSyncRef

tools/syncer/replay/replay_runner/runner_desc.nim

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,21 +39,21 @@ const
3939
type
4040
ReplayWaitError* = tuple
4141
## Capture exception or error context for waiting/polling instance
42-
excp: BeaconErrorType
42+
excp: ErrorType
4343
name: string
4444
msg: string
4545

4646
# --------- internal context types ---------
4747

48-
ReplayBuddyRef* = ref object of BeaconBuddyRef
49-
## Replacement of `BeaconBuddyRef` in `runPeer()` and `runPool()`
48+
ReplayPeerRef* = ref object of BeaconPeerRef
49+
## Replacement of `BeacomPeerRef` in `runPeer()` and `runPool()`
5050
isNew*: bool ## Set in `getOrNewPeer()` when created
5151
run*: ReplayRunnerRef ## Back-reference for convenience
5252
frameID*: Opt[uint] ## Begin/end frame
5353
message*: ReplayPayloadRef ## Data message channel
5454

5555
ReplayDaemonRef* = ref object
56-
## Daemeon job frame (similar to `ReplayBuddyRef`)
56+
## Daemeon job frame (similar to `ReplayPeerRef`)
5757
run*: ReplayRunnerRef ## Back-reference for convenience
5858
frameID*: Opt[uint] ## Begin/end frame
5959
message*: ReplayPayloadRef ## Data message channel
@@ -73,7 +73,7 @@ type
7373

7474
# Local state
7575
daemon*: ReplayDaemonRef ## Currently active daemon, or `nil`
76-
peers*: Table[Hash,ReplayBuddyRef] ## Begin/End for base frames
76+
peers*: Table[Hash,ReplayPeerRef] ## Begin/End for base frames
7777
nSyncPeers*: int ## Track active peer instances
7878
failTmoMax*: chronos.Duration ## Keep track of largest timeout
7979

@@ -85,7 +85,7 @@ type
8585
# ------------------------------------------------------------------------------
8686

8787
proc replayGetSyncPeerFn*(run: ReplayRunnerRef): ReplayGetSyncPeerFn =
88-
result = proc(peerID: Hash): BeaconBuddyRef =
88+
result = proc(peerID: Hash): BeaconPeerRef =
8989
run.peers.withValue(peerID,val):
9090
return val[]
9191

tools/syncer/replay/replay_runner/runner_dispatch/dispatch_blocks.nim

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ proc toBnRange(
4343

4444
proc toStr(
4545
lst: openArray[Hash32];
46-
buddy: BeaconBuddyRef;
46+
buddy: BeaconPeerRef;
4747
info: static[string];
4848
): string =
4949
buddy.ctx.toBnRange(lst, info).toStr
@@ -85,13 +85,13 @@ func getBeaconError(e: ReplayWaitError): BeaconError =
8585
# ------------------------------------------------------------------------------
8686

8787
proc fetchBodiesHandler*(
88-
buddy: BeaconBuddyRef;
88+
buddy: BeaconPeerRef;
8989
req: BlockBodiesRequest;
9090
): Future[Result[FetchBodiesData,BeaconError]]
9191
{.async: (raises: []).} =
9292
const info = "&fetchBodies"
9393

94-
let buddy = ReplayBuddyRef(buddy)
94+
let buddy = ReplayPeerRef(buddy)
9595

9696
var data: ReplayFetchBodies
9797
buddy.withInstr(typeof data, rlxBaseNum=true, ignLatestNum=true, info):
@@ -118,15 +118,15 @@ proc fetchBodiesHandler*(
118118

119119

120120
proc importBlockHandler*(
121-
buddy: BeaconBuddyRef;
121+
buddy: BeaconPeerRef;
122122
ethBlock: EthBlock;
123123
effPeerID: Hash;
124124
): Future[Result[Duration,BeaconError]]
125125
{.async: (raises: []).} =
126126
const info = "&importBlock"
127127

128128
let
129-
buddy = ReplayBuddyRef(buddy)
129+
buddy = ReplayPeerRef(buddy)
130130
n = buddy.iNum
131131
peer = buddy.peerStr
132132
peerID = buddy.peerIdStr

tools/syncer/replay/replay_runner/runner_dispatch/dispatch_headers.nim

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,14 +55,14 @@ func getBeaconError(e: ReplayWaitError): BeaconError =
5555
# ------------------------------------------------------------------------------
5656

5757
proc fetchHeadersHandler*(
58-
buddy: BeaconBuddyRef;
58+
buddy: BeaconPeerRef;
5959
req: BlockHeadersRequest;
6060
bn: BlockNumber;
6161
): Future[Result[FetchHeadersData,BeaconError]]
6262
{.async: (raises: []).} =
6363
## Replacement for `getBlockHeaders()` handler.
6464
const info = "&fetchHeaders"
65-
let buddy = ReplayBuddyRef(buddy)
65+
let buddy = ReplayPeerRef(buddy)
6666

6767
var data: ReplayFetchHeaders
6868
buddy.withInstr(typeof data, rlxBaseNum=false, ignLatestNum=false, info):

0 commit comments

Comments
 (0)