PopRelated aggretates the bucket

Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
This commit is contained in:
Jakub Sztandera 2020-10-23 01:18:13 +02:00
parent 810feee5a1
commit c8fe21c1ef
No known key found for this signature in database
GPG Key ID: 9A9AF56F8B3879BA

View File

@ -211,12 +211,15 @@ func (sbs *syncBucketSet) removeBucket(toremove *syncTargetBucket) {
sbs.buckets = nbuckets sbs.buckets = nbuckets
} }
func (sbs *syncBucketSet) PopRelated(ts *types.TipSet) []*syncTargetBucket { func (sbs *syncBucketSet) PopRelated(ts *types.TipSet) *syncTargetBucket {
var bOut []*syncTargetBucket var bOut *syncTargetBucket
for _, b := range sbs.buckets { for _, b := range sbs.buckets {
if b.sameChainAs(ts) { if b.sameChainAs(ts) {
sbs.removeBucket(b) sbs.removeBucket(b)
bOut = append(bOut, b) if bOut == nil {
bOut = &syncTargetBucket{}
}
bOut.tips = append(bOut.tips, b.tips...)
} }
} }
return bOut return bOut
@ -382,17 +385,14 @@ func (sm *syncManager) scheduleProcessResult(res *syncResult) {
} }
delete(sm.activeSyncs, res.ts.Key()) delete(sm.activeSyncs, res.ts.Key())
relbuckets := sm.activeSyncTips.PopRelated(res.ts) relbucket := sm.activeSyncTips.PopRelated(res.ts)
if len(relbuckets) != 0 { if relbucket != nil {
if res.success { if res.success {
if sm.nextSyncTarget == nil { if sm.nextSyncTarget == nil {
sm.nextSyncTarget = relbuckets[0] sm.nextSyncTarget = relbucket
sm.workerChan = sm.syncTargets sm.workerChan = sm.syncTargets
relbuckets = relbuckets[1:] } else {
} for _, t := range relbucket.tips {
for _, b := range relbuckets {
for _, t := range b.tips {
sm.syncQueue.Insert(t) sm.syncQueue.Insert(t)
} }
} }