func (d *ddl) verifyOwner(t *meta.TMeta) error { owner, err := t.GetDDLOwner() if err != nil { return errors.Trace(err) } if owner == nil { owner = &model.Owner{} // try to set onwer owner.OwnerID = d.uuid } now := time.Now().Unix() maxTimeout := int64(4 * d.lease) if owner.OwnerID == d.uuid || now-owner.LastUpdateTS > maxTimeout { owner.OwnerID = d.uuid owner.LastUpdateTS = now // update or try to set itself as owner. if err = t.SetDDLOwner(owner); err != nil { return errors.Trace(err) } } if owner.OwnerID != d.uuid { return errors.Trace(ErrNotOwner) } return nil }