func()

in nimo-shake/incr-sync/syncer.go [202:230]


func (d *Dispatcher) waitFatherShardFinished() {
	// re-check father shard finished
	var father string
	if d.shard.Shard.ParentShardId != nil {
		father = *d.shard.Shard.ParentShardId
	}

	LOG.Info("%s begins, check father shard[%v] status", d.String(), father)

	if father != "" {
		// check father finished
		for {
			fatherCkpt, err := d.ckptWriter.Query(father, d.ns.Collection)
			if err != nil && err.Error() != utils.NotFountErr {
				LOG.Crashf("%s query father[%v] checkpoint fail[%v]", d.String(), father, err)
			}

			// err != nil means utils.NotFountErr
			if err != nil || !checkpoint.IsStatusProcessing(fatherCkpt.Status) {
				break
			}

			LOG.Warn("%s father shard[%v] is still running, waiting...", d.String(), father)
			time.Sleep(WaitFatherFinishInterval * time.Second)
		}
	}

	LOG.Info("%s father shard[%v] finished", d.String(), father)
}