mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2024-12-25 12:57:18 +00:00
aad64d113a
* WIP: Dummy db clean service * [WIP. NOT READY FOR REVIEW] Add DB cleanup routine that cleans block vote cache * Add missing bazel config * Put DB clean behind a CLI flag * Address review comments * Fix error handling
44 lines
1.1 KiB
Go
44 lines
1.1 KiB
Go
package db
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/boltdb/bolt"
|
|
)
|
|
|
|
// GetCleanedFinalizedSlot returns the most recent finalized slot when we did a DB clean up.
|
|
func (db *BeaconDB) GetCleanedFinalizedSlot() (uint64, error) {
|
|
var lastFinalizedSlot uint64
|
|
|
|
err := db.view(func(tx *bolt.Tx) error {
|
|
cleanupHistory := tx.Bucket(cleanupHistoryBucket)
|
|
|
|
slotEnc := cleanupHistory.Get(cleanedFinalizedSlotKey)
|
|
// If last cleaned slot number is not found, we will return 0 instead
|
|
if slotEnc == nil {
|
|
return nil
|
|
}
|
|
|
|
lastFinalizedSlot = decodeToSlotNumber(slotEnc)
|
|
return nil
|
|
})
|
|
|
|
return lastFinalizedSlot, err
|
|
}
|
|
|
|
// SaveCleanedFinalizedSlot writes the slot when we did DB cleanup so we can start from here in future cleanup tasks.
|
|
func (db *BeaconDB) SaveCleanedFinalizedSlot(slot uint64) error {
|
|
slotEnc := encodeSlotNumber(slot)
|
|
|
|
err := db.update(func(tx *bolt.Tx) error {
|
|
cleanupHistory := tx.Bucket(cleanupHistoryBucket)
|
|
|
|
if err := cleanupHistory.Put(cleanedFinalizedSlotKey, slotEnc); err != nil {
|
|
return errors.New("failed to store cleaned finalized slot in DB")
|
|
}
|
|
|
|
return nil
|
|
})
|
|
return err
|
|
}
|