/
milestones.go
31 lines (25 loc) · 1.11 KB
/
milestones.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package tangle
import (
"github.com/gohornet/hornet/pkg/model/storage"
)
func (t *Tangle) processValidMilestone(cachedMilestone *storage.CachedMilestone, requested bool) {
defer cachedMilestone.Release(true) // milestone -1
t.Events.ReceivedNewMilestone.Trigger(cachedMilestone) // milestone pass +1
confirmedMsIndex := t.syncManager.ConfirmedMilestoneIndex()
msIndex := cachedMilestone.Milestone().Index
if t.syncManager.SetLatestMilestoneIndex(msIndex) {
t.Events.LatestMilestoneChanged.Trigger(cachedMilestone) // milestone pass +1
t.Events.LatestMilestoneIndexChanged.Trigger(msIndex)
}
t.milestoneSolidifierWorkerPool.TrySubmit(msIndex, false)
if msIndex > confirmedMsIndex {
t.LogInfof("Valid milestone detected! Index: %d", msIndex)
t.requester.RequestMilestoneParents(cachedMilestone.Retain()) // milestone pass +1
} else if requested {
pruningIndex := t.storage.SnapshotInfo().PruningIndex
if msIndex < pruningIndex {
// this should not happen. we requested a milestone that is below pruning index
t.LogPanicf("Synced too far back! Index: %d, PruningIndex: %d", msIndex, pruningIndex)
}
}
}