Skip to content

Commit de0f087

Browse files
authored
Merge pull request #149 from ipfs/first-heads
Set Heads immediately when no heads are known
2 parents 407b7d8 + 65fc8eb commit de0f087

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

crdt.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -367,6 +367,30 @@ func (store *Datastore) handleNext() {
367367
}
368368
}
369369

370+
// if we have no heads, make seen-heads heads immediately. On
371+
// a fresh start, this allows us to start building on top of
372+
// recent heads, even if we have not fully synced rather than
373+
// creating new orphan branches.
374+
curHeadCount, err := store.heads.Len()
375+
if err != nil {
376+
store.logger.Error(err)
377+
continue
378+
}
379+
if curHeadCount == 0 {
380+
dg := &crdtNodeGetter{NodeGetter: store.dagService}
381+
for _, head := range bCastHeads {
382+
prio, err := dg.GetPriority(store.ctx, head)
383+
if err != nil {
384+
store.logger.Error(err)
385+
continue
386+
}
387+
err = store.heads.Add(store.ctx, head, prio)
388+
if err != nil {
389+
store.logger.Error(err)
390+
}
391+
}
392+
}
393+
370394
// For each head, we process it.
371395
for _, head := range bCastHeads {
372396
// A thing to try here would be to process heads in

0 commit comments

Comments
 (0)