Merge pull request #465 from steveyen/cleanup-when-PrefixSearcher-error
close resources when we encounter an error on PrefixSearcher initialization
This commit is contained in:
commit
b76cbc805e
|
@ -36,11 +36,19 @@ func NewTermPrefixSearcher(indexReader index.IndexReader, prefix string, field s
|
||||||
|
|
||||||
// enumerate all the terms in the range
|
// enumerate all the terms in the range
|
||||||
qsearchers := make([]search.Searcher, 0, 25)
|
qsearchers := make([]search.Searcher, 0, 25)
|
||||||
|
qsearchersClose := func() {
|
||||||
|
for _, searcher := range qsearchers {
|
||||||
|
_ = searcher.Close()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
tfd, err := fieldDict.Next()
|
tfd, err := fieldDict.Next()
|
||||||
for err == nil && tfd != nil {
|
for err == nil && tfd != nil {
|
||||||
var qsearcher *TermSearcher
|
var qsearcher *TermSearcher
|
||||||
qsearcher, err = NewTermSearcher(indexReader, string(tfd.Term), field, 1.0, explain)
|
qsearcher, err = NewTermSearcher(indexReader, string(tfd.Term), field, 1.0, explain)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
qsearchersClose()
|
||||||
|
_ = fieldDict.Close()
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
qsearchers = append(qsearchers, qsearcher)
|
qsearchers = append(qsearchers, qsearcher)
|
||||||
|
@ -49,12 +57,14 @@ func NewTermPrefixSearcher(indexReader index.IndexReader, prefix string, field s
|
||||||
|
|
||||||
err = fieldDict.Close()
|
err = fieldDict.Close()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
qsearchersClose()
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// build disjunction searcher of these ranges
|
// build disjunction searcher of these ranges
|
||||||
searcher, err := NewDisjunctionSearcher(indexReader, qsearchers, 0, explain)
|
searcher, err := NewDisjunctionSearcher(indexReader, qsearchers, 0, explain)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
qsearchersClose()
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,6 +76,7 @@ func NewTermPrefixSearcher(indexReader index.IndexReader, prefix string, field s
|
||||||
searcher: searcher,
|
searcher: searcher,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *TermPrefixSearcher) Count() uint64 {
|
func (s *TermPrefixSearcher) Count() uint64 {
|
||||||
return s.searcher.Count()
|
return s.searcher.Count()
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user