Skip to content
Open
1 change: 1 addition & 0 deletions beacon-chain/blockchain/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ go_library(
"//beacon-chain/db:go_default_library",
"//beacon-chain/db/filesystem:go_default_library",
"//beacon-chain/db/filters:go_default_library",
"//beacon-chain/db/kv:go_default_library",
"//beacon-chain/execution:go_default_library",
"//beacon-chain/forkchoice:go_default_library",
"//beacon-chain/forkchoice/doubly-linked-tree:go_default_library",
Expand Down
3 changes: 3 additions & 0 deletions beacon-chain/blockchain/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import (
"github.com/OffchainLabs/prysm/v7/beacon-chain/core/transition"
"github.com/OffchainLabs/prysm/v7/beacon-chain/db"
"github.com/OffchainLabs/prysm/v7/beacon-chain/db/filesystem"
"github.com/OffchainLabs/prysm/v7/beacon-chain/db/kv"
"github.com/OffchainLabs/prysm/v7/beacon-chain/execution"
f "github.com/OffchainLabs/prysm/v7/beacon-chain/forkchoice"
lightClient "github.com/OffchainLabs/prysm/v7/beacon-chain/light-client"
Expand Down Expand Up @@ -300,6 +301,8 @@ func (s *Service) StartFromSavedState(saved state.BeaconState) error {
return errors.Wrap(err, "could not get and save custody group count")
}

kv.EarliestAvailableSlotMetric.Set(float64(earliestAvailableSlot))

if _, _, err := s.cfg.P2P.UpdateCustodyInfo(earliestAvailableSlot, custodySubnetCount); err != nil {
return errors.Wrap(err, "update custody info")
}
Expand Down
Empty file.
1 change: 1 addition & 0 deletions beacon-chain/db/kv/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ go_library(
"kv.go",
"lightclient.go",
"log.go",
"metrics.go",
"migration.go",
"migration_archived_index.go",
"migration_block_slot_index.go",
Expand Down
4 changes: 4 additions & 0 deletions beacon-chain/db/kv/custody.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@ func (s *Store) UpdateCustodyInfo(ctx context.Context, earliestAvailableSlot pri
"groupCount": storedGroupCount,
}).Debug("Custody info")

EarliestAvailableSlotMetric.Set(float64(storedEarliestAvailableSlot))

return storedEarliestAvailableSlot, storedGroupCount, nil
}

Expand Down Expand Up @@ -143,6 +145,8 @@ func (s *Store) UpdateEarliestAvailableSlot(ctx context.Context, earliestAvailab

log.WithField("earliestAvailableSlot", storedEarliestAvailableSlot).Debug("Updated earliest available slot")

EarliestAvailableSlotMetric.Set(float64(storedEarliestAvailableSlot))

return nil
}

Expand Down
14 changes: 14 additions & 0 deletions beacon-chain/db/kv/metrics.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package kv

import (
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promauto"
)

var (
// EarliestAvailableSlotMetric tracks the earliest available slot in the database
EarliestAvailableSlotMetric = promauto.NewGauge(prometheus.GaugeOpts{
Name: "earliest_available_slot_db",
Help: "The earliest available slot tracked by the database",
})
)
1 change: 1 addition & 0 deletions beacon-chain/p2p/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ go_library(
"interfaces.go",
"log.go",
"message_id.go",
"metrics.go",
"monitoring.go",
"options.go",
"pubsub.go",
Expand Down
13 changes: 13 additions & 0 deletions beacon-chain/p2p/custody.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ func (s *Service) EarliestAvailableSlot(ctx context.Context) (primitives.Slot, e
return 0, errors.Wrap(err, "wait for custody info")
}

EarliestAvailableSlotMetric.Set(float64(custodyInfo.earliestAvailableSlot))

return custodyInfo.earliestAvailableSlot, nil
}

Expand Down Expand Up @@ -80,11 +82,15 @@ func (s *Service) UpdateCustodyInfo(earliestAvailableSlot primitives.Slot, custo

close(s.custodyInfoSet)

// Update P2P metric when initializing custody info
EarliestAvailableSlotMetric.Set(float64(earliestAvailableSlot))

return earliestAvailableSlot, custodyGroupCount, nil
}

inMemory := s.custodyInfo
if custodyGroupCount <= inMemory.groupCount {
EarliestAvailableSlotMetric.Set(float64(inMemory.earliestAvailableSlot))
return inMemory.earliestAvailableSlot, inMemory.groupCount, nil
}

Expand All @@ -97,6 +103,7 @@ func (s *Service) UpdateCustodyInfo(earliestAvailableSlot primitives.Slot, custo

if custodyGroupCount <= samplesPerSlot {
inMemory.groupCount = custodyGroupCount
EarliestAvailableSlotMetric.Set(float64(inMemory.earliestAvailableSlot))
return inMemory.earliestAvailableSlot, custodyGroupCount, nil
}

Expand All @@ -107,11 +114,15 @@ func (s *Service) UpdateCustodyInfo(earliestAvailableSlot primitives.Slot, custo

if earliestAvailableSlot < fuluForkSlot {
inMemory.groupCount = custodyGroupCount
EarliestAvailableSlotMetric.Set(float64(inMemory.earliestAvailableSlot))
return inMemory.earliestAvailableSlot, custodyGroupCount, nil
}

inMemory.earliestAvailableSlot = earliestAvailableSlot
inMemory.groupCount = custodyGroupCount

EarliestAvailableSlotMetric.Set(float64(earliestAvailableSlot))

return earliestAvailableSlot, custodyGroupCount, nil
}

Expand All @@ -133,6 +144,7 @@ func (s *Service) UpdateEarliestAvailableSlot(earliestAvailableSlot primitives.S
// Allow decrease (for backfill scenarios)
if earliestAvailableSlot < s.custodyInfo.earliestAvailableSlot {
s.custodyInfo.earliestAvailableSlot = earliestAvailableSlot
EarliestAvailableSlotMetric.Set(float64(earliestAvailableSlot))
return nil
}

Expand Down Expand Up @@ -163,6 +175,7 @@ func (s *Service) UpdateEarliestAvailableSlot(earliestAvailableSlot primitives.S
}

s.custodyInfo.earliestAvailableSlot = earliestAvailableSlot
EarliestAvailableSlotMetric.Set(float64(earliestAvailableSlot))
return nil
}

Expand Down
14 changes: 14 additions & 0 deletions beacon-chain/p2p/metrics.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package p2p

import (
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promauto"
)

var (
// EarliestAvailableSlotMetric tracks the earliest available slot in the p2p service
EarliestAvailableSlotMetric = promauto.NewGauge(prometheus.GaugeOpts{
Name: "earliest_available_slot_p2p",
Help: "The earliest available slot tracked by the p2p service",
})
)
3 changes: 3 additions & 0 deletions changelog/satushh-eas-metric-2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
### Added

- Metric for earliest available slot.
Loading