Skip to content

Commit

Permalink
fix: make keeper storage work
Browse files Browse the repository at this point in the history
  • Loading branch information
will@2012 committed Apr 18, 2024
1 parent 37d56eb commit 287aefc
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 4 deletions.
11 changes: 10 additions & 1 deletion core/proof_keeper.go
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@ func (keeper *proofKeeper) eventLoop() {
for {
select {
case r := <-keeper.opts.watchStartKeepCh:
log.Info("keep proof", "record", r)
var (
hasTruncatedMeta bool
curProofID uint64
Expand All @@ -138,7 +139,6 @@ func (keeper *proofKeeper) eventLoop() {
}
}

log.Info("keep proof", "record", r)
proofRecord, err := keeper.queryProposedProof(r)
if err == nil {
if hasTruncatedMeta || !putKeeperMetaRecordOnce {
Expand Down Expand Up @@ -175,6 +175,7 @@ func (keeper *proofKeeper) getKeeperMetaRecordList() []keeperMetaRecord {
}
metaList = append(metaList, m)
}
log.Info("Succeed to get meta list", "list", metaList)
return metaList
}

Expand Down Expand Up @@ -205,6 +206,7 @@ func (keeper *proofKeeper) truncateKeeperMetaRecordHeadIfNeeded(blockID uint64)
if err != nil {
log.Crit("Failed to truncate keeper meta head", "err", err)
}
log.Info("Succeed to truncate keeper meta", "block_id", blockID, "has_truncated", hasTruncated)
return hasTruncated
}

Expand All @@ -222,9 +224,11 @@ func (keeper *proofKeeper) putKeeperMetaRecord(m *keeperMetaRecord) {
func (keeper *proofKeeper) truncateProofDataRecordHeadIfNeeded(blockID uint64) {
latestProofDataRecord := keeper.getLatestProofDataRecord()
if latestProofDataRecord == nil {
log.Info("Skip to truncate proof data due to proof data is empty")
return
}
if blockID > latestProofDataRecord.BlockID {
log.Info("Skip to truncate proof data due to block id is newer")
return
}

Expand All @@ -243,31 +247,36 @@ func (keeper *proofKeeper) truncateProofDataRecordHeadIfNeeded(blockID uint64) {
proofID = proofID - 1
}
rawdb.TruncateProofDataHead(keeper.proofDataDB, truncateProofID)
log.Info("Succeed to truncate proof data", "block_id", blockID, "truncate_proof_id", truncateProofID)
}

func (keeper *proofKeeper) getLatestProofDataRecord() *proofDataRecord {
latestProofData := rawdb.GetLatestProofData(keeper.proofDataDB)
if latestProofData == nil {
log.Info("Skip get latest proof data record due to empty")
return nil
}
var data proofDataRecord
err := json.Unmarshal(latestProofData, &data)
if err != nil {
log.Crit("Failed to unmarshal proof data", "err", err)
}
log.Info("Succeed to get latest proof data", "record", data)
return &data
}

func (keeper *proofKeeper) getProofDataRecord(proofID uint64) *proofDataRecord {
latestProofData := rawdb.GetProofData(keeper.proofDataDB, proofID)
if latestProofData == nil {
log.Info("Skip get proof data record due not found", "proof_id", proofID)
return nil
}
var data proofDataRecord
err := json.Unmarshal(latestProofData, &data)
if err != nil {
log.Crit("Failed to unmarshal proof data", "err", err)
}
log.Info("Succeed to get proof data", "record", data)
return &data
}

Expand Down
10 changes: 7 additions & 3 deletions core/rawdb/accessors_proof.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import (
)

const (
blockNumberLength = 32
blockNumberLength = 8 // uint64 is 8bytes
)

// Keeper Meta
Expand Down Expand Up @@ -35,6 +35,7 @@ func GetLatestProofData(f *ResettableFreezer) []byte {
}
blob, err := f.Ancient(proposeProofTable, proofTable.items.Load())
if err != nil {
log.Error("Failed to get latest proof data", "latest_proof_id", proofTable.items.Load(), "error", err)
return nil
}
return blob
Expand All @@ -56,9 +57,12 @@ func TruncateProofDataHead(f *ResettableFreezer, proofID uint64) {
f.freezer.TruncateHead(proofID)
}

func PutProofData(db ethdb.AncientWriter, id uint64, proof []byte) {
func PutProofData(db ethdb.AncientWriter, proofID uint64, proof []byte) {
db.ModifyAncients(func(op ethdb.AncientWriteOp) error {
op.AppendRaw(proposeProofTable, id-1, proof)
err := op.AppendRaw(proposeProofTable, proofID-1, proof)
if err != nil {
log.Error("Failed to put proof data", "proof_id", proofID, "error", err)
}
return nil
})
}

0 comments on commit 287aefc

Please sign in to comment.