func applyPut(txnID int64, kv mvcc.KV, lessor lease.Lessor, req *etcdserverpb.PutRequest) (*etcdserverpb.PutResponse, error) { resp := &etcdserverpb.PutResponse{} resp.Header = &etcdserverpb.ResponseHeader{} var ( rev int64 err error ) if txnID != noTxn { rev, err = kv.TxnPut(txnID, req.Key, req.Value, lease.LeaseID(req.Lease)) if err != nil { return nil, err } } else { leaseID := lease.LeaseID(req.Lease) if leaseID != lease.NoLease { if l := lessor.Lookup(leaseID); l == nil { return nil, lease.ErrLeaseNotFound } } rev = kv.Put(req.Key, req.Value, leaseID) } resp.Header.Revision = rev return resp, nil }