From c33fc953befaf46030e8143c09b1632a793f33f7 Mon Sep 17 00:00:00 2001 From: Kevin Atkinson Date: Wed, 29 Jun 2016 23:21:58 -0400 Subject: [PATCH] Set the channel buffer size to 128 for KeysOnly queries. --- flatfs/flatfs.go | 2 +- query/query.go | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/flatfs/flatfs.go b/flatfs/flatfs.go index f95071b..eb34d3e 100644 --- a/flatfs/flatfs.go +++ b/flatfs/flatfs.go @@ -309,7 +309,7 @@ func (fs *Datastore) Query(q query.Query) (query.Results, error) { return nil, errors.New("flatfs only supports listing all keys in random order") } - reschan := make(chan query.Result) + reschan := make(chan query.Result, query.KeysOnlyBufSize) go func() { defer close(reschan) err := filepath.Walk(fs.path, func(path string, info os.FileInfo, err error) error { diff --git a/query/query.go b/query/query.go index f05cd9c..9e50081 100644 --- a/query/query.go +++ b/query/query.go @@ -179,10 +179,16 @@ func (rb *ResultBuilder) Results() Results { } } +const KeysOnlyBufSize = 128 + func NewResultBuilder(q Query) *ResultBuilder { + bufSize := 1 + if q.KeysOnly { + bufSize = KeysOnlyBufSize + } b := &ResultBuilder{ Query: q, - Output: make(chan Result), + Output: make(chan Result, bufSize), } b.Process = goprocess.WithTeardown(func() error { close(b.Output)