[lbry] claimtrie: try to make ExpiresAt inlinable

This commit is contained in:
Brannon King 2021-12-27 17:17:44 -05:00
parent b87ee2b51e
commit 50d678b007
2 changed files with 27 additions and 15 deletions

View file

@ -7,7 +7,6 @@ import (
"github.com/lbryio/lbcd/chaincfg/chainhash" "github.com/lbryio/lbcd/chaincfg/chainhash"
"github.com/lbryio/lbcd/claimtrie/change" "github.com/lbryio/lbcd/claimtrie/change"
"github.com/lbryio/lbcd/claimtrie/param"
"github.com/lbryio/lbcd/wire" "github.com/lbryio/lbcd/wire"
) )
@ -58,15 +57,6 @@ func (c *Claim) setStatus(status Status) *Claim {
return c return c
} }
func (c *Claim) ExpireAt() int32 {
if c.AcceptedAt+param.ActiveParams.OriginalClaimExpirationTime > param.ActiveParams.ExtendedClaimExpirationForkHeight {
return c.AcceptedAt + param.ActiveParams.ExtendedClaimExpirationTime
}
return c.AcceptedAt + param.ActiveParams.OriginalClaimExpirationTime
}
func OutPointLess(a, b wire.OutPoint) bool { func OutPointLess(a, b wire.OutPoint) bool {
switch cmp := bytes.Compare(a.Hash[:], b.Hash[:]); { switch cmp := bytes.Compare(a.Hash[:], b.Hash[:]); {

View file

@ -156,6 +156,16 @@ func (n *Node) updateTakeoverHeight(height int32, name []byte, refindBest bool)
func (n *Node) handleExpiredAndActivated(height int32) int { func (n *Node) handleExpiredAndActivated(height int32) int {
ot := param.ActiveParams.OriginalClaimExpirationTime
et := param.ActiveParams.ExtendedClaimExpirationTime
fk := param.ActiveParams.ExtendedClaimExpirationForkHeight
expiresAt := func(c *Claim) int32 {
if c.AcceptedAt+ot > fk {
return c.AcceptedAt + et
}
return c.AcceptedAt + ot
}
changes := 0 changes := 0
update := func(items ClaimList, sums map[string]int64) ClaimList { update := func(items ClaimList, sums map[string]int64) ClaimList {
for i := 0; i < len(items); i++ { for i := 0; i < len(items); i++ {
@ -167,7 +177,7 @@ func (n *Node) handleExpiredAndActivated(height int32) int {
sums[c.ClaimID.Key()] += c.Amount sums[c.ClaimID.Key()] += c.Amount
} }
} }
if c.ExpireAt() <= height || c.Status == Deactivated { if c.Status == Deactivated || expiresAt(c) <= height {
if i < len(items)-1 { if i < len(items)-1 {
items[i] = items[len(items)-1] items[i] = items[len(items)-1]
i-- i--
@ -190,11 +200,22 @@ func (n *Node) handleExpiredAndActivated(height int32) int {
// be refreshed due to changes of claims or supports. // be refreshed due to changes of claims or supports.
func (n Node) NextUpdate() int32 { func (n Node) NextUpdate() int32 {
ot := param.ActiveParams.OriginalClaimExpirationTime
et := param.ActiveParams.ExtendedClaimExpirationTime
fk := param.ActiveParams.ExtendedClaimExpirationForkHeight
expiresAt := func(c *Claim) int32 {
if c.AcceptedAt+ot > fk {
return c.AcceptedAt + et
}
return c.AcceptedAt + ot
}
next := int32(math.MaxInt32) next := int32(math.MaxInt32)
for _, c := range n.Claims { for _, c := range n.Claims {
if c.ExpireAt() < next { ea := expiresAt(c)
next = c.ExpireAt() if ea < next {
next = ea
} }
// if we're not active, we need to go to activeAt unless we're still invisible there // if we're not active, we need to go to activeAt unless we're still invisible there
if c.Status == Accepted { if c.Status == Accepted {
@ -209,8 +230,9 @@ func (n Node) NextUpdate() int32 {
} }
for _, s := range n.Supports { for _, s := range n.Supports {
if s.ExpireAt() < next { es := expiresAt(s)
next = s.ExpireAt() if es < next {
next = es
} }
if s.Status == Accepted { if s.Status == Accepted {
min := s.ActiveAt min := s.ActiveAt