From 8df3f0c54510c7049973713000a443994c17627c Mon Sep 17 00:00:00 2001 From: Anthony Romano Date: Fri, 15 Jan 2016 16:59:21 -0800 Subject: [PATCH] etcdserver: support 'More' flag for v3 RangeRequest --- etcdserver/v3demo_server.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/etcdserver/v3demo_server.go b/etcdserver/v3demo_server.go index 849397819..c790505f3 100644 --- a/etcdserver/v3demo_server.go +++ b/etcdserver/v3demo_server.go @@ -246,6 +246,10 @@ func applyRange(txnID int64, kv dstorage.KV, r *pb.RangeRequest) (*pb.RangeRespo // fetch everything; sort and truncate afterwards limit = 0 } + if limit > 0 { + // fetch one extra for 'more' flag + limit = limit + 1 + } if txnID != noTxn { kvs, rev, err = kv.TxnRange(txnID, r.Key, r.RangeEnd, limit, 0) @@ -279,9 +283,11 @@ func applyRange(txnID int64, kv dstorage.KV, r *pb.RangeRequest) (*pb.RangeRespo case r.SortOrder == pb.RangeRequest_DESCEND: sort.Sort(sort.Reverse(sorter)) } - if r.Limit > 0 && len(kvs) > int(r.Limit) { - kvs = kvs[:r.Limit] - } + } + + if r.Limit > 0 && len(kvs) > int(r.Limit) { + kvs = kvs[:r.Limit] + resp.More = true } resp.Header.Revision = rev