From a899d29c1b2baa769d836511352993c54ec0b04f Mon Sep 17 00:00:00 2001 From: Sreekanth Sivasankaran Date: Mon, 16 Jul 2018 13:25:24 +0530 Subject: [PATCH] MB-30342 - ref_count leak from FieldDict Attempt to fix the ref_count leak by closing the field dictionary for term_prefix and term_range searches --- search/searcher/search_term_prefix.go | 8 ++++++++ search/searcher/search_term_range.go | 6 ++++++ 2 files changed, 14 insertions(+) diff --git a/search/searcher/search_term_prefix.go b/search/searcher/search_term_prefix.go index 05d092249..c49788c71 100644 --- a/search/searcher/search_term_prefix.go +++ b/search/searcher/search_term_prefix.go @@ -27,6 +27,11 @@ func NewTermPrefixSearcher(indexReader index.IndexReader, prefix string, if err != nil { return nil, err } + defer func() { + if cerr := fieldDict.Close(); cerr != nil && err == nil { + err = cerr + } + }() var terms []string tfd, err := fieldDict.Next() @@ -34,6 +39,9 @@ func NewTermPrefixSearcher(indexReader index.IndexReader, prefix string, terms = append(terms, tfd.Term) tfd, err = fieldDict.Next() } + if err != nil { + return nil, err + } return NewMultiTermSearcher(indexReader, terms, field, boost, options, true) } diff --git a/search/searcher/search_term_range.go b/search/searcher/search_term_range.go index 267c681b4..90be1e11a 100644 --- a/search/searcher/search_term_range.go +++ b/search/searcher/search_term_range.go @@ -48,6 +48,12 @@ func NewTermRangeSearcher(indexReader index.IndexReader, return nil, err } + defer func() { + if cerr := fieldDict.Close(); cerr != nil && err == nil { + err = cerr + } + }() + var terms []string tfd, err := fieldDict.Next() for err == nil && tfd != nil {