Merge pull request #1847 from halseth/kidoutput-height-hint

[utxonursery] Use kidoutput broadcast height as height hint
This commit is contained in:
Olaoluwa Osuntokun 2018-09-21 16:39:54 -07:00 committed by GitHub
commit b96745e623
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 22 additions and 7 deletions

@ -105,7 +105,7 @@ type ChainArbitratorConfig struct {
// absolute/relative item block.
IncubateOutputs func(wire.OutPoint, *lnwallet.CommitOutputResolution,
*lnwallet.OutgoingHtlcResolution,
*lnwallet.IncomingHtlcResolution) error
*lnwallet.IncomingHtlcResolution, uint32) error
// PreimageDB is a global store of all known pre-images. We'll use this
// to decide if we should broadcast a commitment transaction to claim

@ -648,7 +648,7 @@ func (c *ChannelArbitrator) stateStep(triggerHeight uint32,
err = c.cfg.IncubateOutputs(
c.cfg.ChanPoint, commitRes,
nil, nil,
nil, nil, triggerHeight,
)
if err != nil {
// TODO(roasbeef): check for AlreadyExists errors

@ -152,7 +152,10 @@ func (h *htlcTimeoutResolver) Resolve() (ContractResolver, error) {
log.Tracef("%T(%v): incubating htlc output", h,
h.htlcResolution.ClaimOutpoint)
err := h.IncubateOutputs(h.ChanPoint, nil, &h.htlcResolution, nil)
err := h.IncubateOutputs(
h.ChanPoint, nil, &h.htlcResolution, nil,
h.broadcastHeight,
)
if err != nil {
return nil, err
}
@ -568,7 +571,10 @@ func (h *htlcSuccessResolver) Resolve() (ContractResolver, error) {
log.Infof("%T(%x): incubating incoming htlc output",
h, h.payHash[:])
err := h.IncubateOutputs(h.ChanPoint, nil, nil, &h.htlcResolution)
err := h.IncubateOutputs(
h.ChanPoint, nil, nil, &h.htlcResolution,
h.broadcastHeight,
)
if err != nil {
return nil, err
}

@ -628,7 +628,8 @@ func newServer(listenAddrs []net.Addr, chanDB *channeldb.DB, cc *chainControl,
IncubateOutputs: func(chanPoint wire.OutPoint,
commitRes *lnwallet.CommitOutputResolution,
outHtlcRes *lnwallet.OutgoingHtlcResolution,
inHtlcRes *lnwallet.IncomingHtlcResolution) error {
inHtlcRes *lnwallet.IncomingHtlcResolution,
broadcastHeight uint32) error {
var (
inRes []lnwallet.IncomingHtlcResolution
@ -643,6 +644,7 @@ func newServer(listenAddrs []net.Addr, chanDB *channeldb.DB, cc *chainControl,
return s.utxoNursery.IncubateOutputs(
chanPoint, commitRes, outRes, inRes,
broadcastHeight,
)
},
PreimageDB: s.witnessBeacon,

@ -343,7 +343,8 @@ func (u *utxoNursery) Stop() error {
func (u *utxoNursery) IncubateOutputs(chanPoint wire.OutPoint,
commitResolution *lnwallet.CommitOutputResolution,
outgoingHtlcs []lnwallet.OutgoingHtlcResolution,
incomingHtlcs []lnwallet.IncomingHtlcResolution) error {
incomingHtlcs []lnwallet.IncomingHtlcResolution,
broadcastHeight uint32) error {
numHtlcs := len(incomingHtlcs) + len(outgoingHtlcs)
var (
@ -469,7 +470,9 @@ func (u *utxoNursery) IncubateOutputs(chanPoint wire.OutPoint,
// kindergarten bucket.
if len(kidOutputs) != 0 {
for _, kidOutput := range kidOutputs {
err := u.registerPreschoolConf(&kidOutput, u.bestHeight)
err := u.registerPreschoolConf(
&kidOutput, broadcastHeight,
)
if err != nil {
return err
}

@ -336,6 +336,8 @@ func init() {
}
func TestKidOutputSerialization(t *testing.T) {
t.Parallel()
for i, kid := range kidOutputs {
var b bytes.Buffer
if err := kid.Encode(&b); err != nil {
@ -358,6 +360,8 @@ func TestKidOutputSerialization(t *testing.T) {
}
func TestBabyOutputSerialization(t *testing.T) {
t.Parallel()
for i, baby := range babyOutputs {
var b bytes.Buffer
if err := baby.Encode(&b); err != nil {