From 35ea1d4423cc186a2540f442f62b975c43fcd4b8 Mon Sep 17 00:00:00 2001 From: Marty Schoch Date: Tue, 20 Mar 2018 17:41:56 -0400 Subject: [PATCH] fix MB-28719 and MB-28781 invalid/missing field in scorch Use of sync.Pool to reuse the interm structure relied on resetting the fieldsInv slice. However, actual segments continued to use this same fieldsInv slice after returning it to the pool. Simple fix is to nil out fieldsInv slice in reset method and let the newly built segment keep the one from the interim struct. --- index/scorch/segment/zap/new.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index/scorch/segment/zap/new.go b/index/scorch/segment/zap/new.go index 68827f0b..e9f0b2c0 100644 --- a/index/scorch/segment/zap/new.go +++ b/index/scorch/segment/zap/new.go @@ -135,7 +135,7 @@ func (s *interim) reset() (err error) { s.chunkFactor = 0 s.w = nil s.FieldsMap = nil - s.FieldsInv = s.FieldsInv[:0] + s.FieldsInv = nil for i := range s.Dicts { s.Dicts[i] = nil }