@@ -4,13 +4,9 @@ package eth2wrap
44
55import (
66 "context"
7- "encoding/json"
8- "os"
9- "path/filepath"
107 "slices"
118 "strconv"
129 "sync"
13- "time"
1410
1511 eth2api "github.com/attestantio/go-eth2-client/api"
1612 eth2v1 "github.com/attestantio/go-eth2-client/api/v1"
@@ -322,105 +318,6 @@ func (c *DutiesCache) Trim(epoch eth2p0.Epoch) {
322318 c .trimBeforeProposerDuties (epoch - dutiesCacheTrimThreshold )
323319 c .trimBeforeAttesterDuties (epoch - dutiesCacheTrimThreshold )
324320 c .trimBeforeSyncDuties (epoch - dutiesCacheTrimThreshold )
325-
326- c .writeTrimReport (epoch )
327- }
328-
329- // dutiesCacheReport is the structure written to duties_cache_report.json on each Trim call.
330- type dutiesCacheReport struct {
331- Timestamp string `json:"timestamp"`
332- TrimEpoch uint64 `json:"trim_epoch"`
333- Proposer dutiesCacheReportDutyType `json:"proposer"`
334- Attester dutiesCacheReportDutyType `json:"attester"`
335- Sync dutiesCacheReportDutyType `json:"sync"`
336- }
337-
338- type dutiesCacheReportDutyType struct {
339- RequestedIdxs map [uint64 ][]eth2p0.ValidatorIndex `json:"requested_idxs"`
340- Duties map [uint64 ]any `json:"duties"`
341- Metadata map [uint64 ]map [string ]any `json:"metadata"`
342- }
343-
344- // writeTrimReport overwrites duties_cache_report.json with the current DutiesCache state.
345- func (c * DutiesCache ) writeTrimReport (epoch eth2p0.Epoch ) {
346- c .proposerDuties .RLock ()
347- proposerIdxs := make (map [uint64 ][]eth2p0.ValidatorIndex , len (c .proposerDuties .requestedIdxs ))
348- for e , v := range c .proposerDuties .requestedIdxs {
349- proposerIdxs [uint64 (e )] = v
350- }
351- proposerDuties := make (map [uint64 ]any , len (c .proposerDuties .duties ))
352- for e , v := range c .proposerDuties .duties {
353- proposerDuties [uint64 (e )] = v
354- }
355- proposerMeta := make (map [uint64 ]map [string ]any , len (c .proposerDuties .metadata ))
356- for e , v := range c .proposerDuties .metadata {
357- proposerMeta [uint64 (e )] = v
358- }
359- c .proposerDuties .RUnlock ()
360-
361- c .attesterDuties .RLock ()
362- attesterIdxs := make (map [uint64 ][]eth2p0.ValidatorIndex , len (c .attesterDuties .requestedIdxs ))
363- for e , v := range c .attesterDuties .requestedIdxs {
364- attesterIdxs [uint64 (e )] = v
365- }
366- attesterDuties := make (map [uint64 ]any , len (c .attesterDuties .duties ))
367- for e , v := range c .attesterDuties .duties {
368- attesterDuties [uint64 (e )] = v
369- }
370- attesterMeta := make (map [uint64 ]map [string ]any , len (c .attesterDuties .metadata ))
371- for e , v := range c .attesterDuties .metadata {
372- attesterMeta [uint64 (e )] = v
373- }
374- c .attesterDuties .RUnlock ()
375-
376- c .syncDuties .RLock ()
377- syncIdxs := make (map [uint64 ][]eth2p0.ValidatorIndex , len (c .syncDuties .requestedIdxs ))
378- for e , v := range c .syncDuties .requestedIdxs {
379- syncIdxs [uint64 (e )] = v
380- }
381- syncDuties := make (map [uint64 ]any , len (c .syncDuties .duties ))
382- for e , v := range c .syncDuties .duties {
383- syncDuties [uint64 (e )] = v
384- }
385- syncMeta := make (map [uint64 ]map [string ]any , len (c .syncDuties .metadata ))
386- for e , v := range c .syncDuties .metadata {
387- syncMeta [uint64 (e )] = v
388- }
389- c .syncDuties .RUnlock ()
390-
391- report := dutiesCacheReport {
392- Timestamp : time .Now ().UTC ().Format (time .RFC3339 ),
393- TrimEpoch : uint64 (epoch ),
394- Proposer : dutiesCacheReportDutyType {RequestedIdxs : proposerIdxs , Duties : proposerDuties , Metadata : proposerMeta },
395- Attester : dutiesCacheReportDutyType {RequestedIdxs : attesterIdxs , Duties : attesterDuties , Metadata : attesterMeta },
396- Sync : dutiesCacheReportDutyType {RequestedIdxs : syncIdxs , Duties : syncDuties , Metadata : syncMeta },
397- }
398-
399- data , err := json .MarshalIndent (report , "" , " " )
400- if err != nil {
401- log .Warn (context .Background (), "Failed to marshal duties cache report" , err )
402- return
403- }
404-
405- f , err := os .OpenFile ("duties_cache_report.json" , os .O_CREATE | os .O_TRUNC | os .O_WRONLY , 0o644 )
406- if err != nil {
407- log .Warn (context .Background (), "Failed to open duties cache report file" , err )
408- return
409- }
410- defer f .Close ()
411-
412- if _ , err = f .Write (data ); err != nil {
413- log .Warn (context .Background (), "Failed to write duties cache report" , err )
414- return
415- }
416-
417- absPath , err := filepath .Abs ("duties_cache_report.json" )
418- if err != nil {
419- log .Warn (context .Background (), "Failed to resolve duties cache report path" , err )
420- return
421- }
422-
423- log .Info (context .Background (), "Duties cache report written" , z .Str ("path" , absPath ))
424321}
425322
426323// InvalidateCache handles chain reorg, invalidating cached duties.
0 commit comments