Example #1
0
func checkRequestRange(kv mvcc.KV, reqs []*etcdserverpb.RequestUnion) error {
	for _, requ := range reqs {
		tv, ok := requ.Request.(*etcdserverpb.RequestUnion_RequestRange)
		if !ok {
			continue
		}
		greq := tv.RequestRange
		if greq == nil || greq.Revision == 0 {
			continue
		}

		if greq.Revision > kv.Rev() {
			return mvcc.ErrFutureRev
		}
		if greq.Revision < kv.FirstRev() {
			return mvcc.ErrCompacted
		}
	}
	return nil
}