From 8c0f402d4b06a9c345f5049bd0f72b474db8ffbb Mon Sep 17 00:00:00 2001 From: Steve Yen Date: Tue, 6 Mar 2018 15:48:22 -0800 Subject: [PATCH 1/4] scorch zap optimize processDocument() loc inner loop --- index/scorch/segment/mem/build.go | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/index/scorch/segment/mem/build.go b/index/scorch/segment/mem/build.go index a064fcba..a4b69013 100644 --- a/index/scorch/segment/mem/build.go +++ b/index/scorch/segment/mem/build.go @@ -266,21 +266,34 @@ func (s *Segment) processDocument(result *index.AnalysisResult) { locationBS := s.PostingsLocs[pid] if len(tokenFreq.Locations) > 0 { locationBS.AddInt(int(docNum)) + + locfields := s.Locfields[pid] + locstarts := s.Locstarts[pid] + locends := s.Locends[pid] + locpos := s.Locpos[pid] + locarraypos := s.Locarraypos[pid] + for _, loc := range tokenFreq.Locations { var locf = fieldID if loc.Field != "" { locf = uint16(s.getOrDefineField(loc.Field)) } - s.Locfields[pid] = append(s.Locfields[pid], locf) - s.Locstarts[pid] = append(s.Locstarts[pid], uint64(loc.Start)) - s.Locends[pid] = append(s.Locends[pid], uint64(loc.End)) - s.Locpos[pid] = append(s.Locpos[pid], uint64(loc.Position)) + locfields = append(locfields, locf) + locstarts = append(locstarts, uint64(loc.Start)) + locends = append(locends, uint64(loc.End)) + locpos = append(locpos, uint64(loc.Position)) if len(loc.ArrayPositions) > 0 { - s.Locarraypos[pid] = append(s.Locarraypos[pid], loc.ArrayPositions) + locarraypos = append(locarraypos, loc.ArrayPositions) } else { - s.Locarraypos[pid] = append(s.Locarraypos[pid], nil) + locarraypos = append(locarraypos, nil) } } + + s.Locfields[pid] = locfields + s.Locstarts[pid] = locstarts + s.Locends[pid] = locends + s.Locpos[pid] = locpos + s.Locarraypos[pid] = locarraypos } } } From 79f28b7c93b99934bf37241454d77fa940de3863 Mon Sep 17 00:00:00 2001 From: Steve Yen Date: Tue, 6 Mar 2018 16:29:33 -0800 Subject: [PATCH 2/4] scorch fix persistDocValues() err return --- index/scorch/segment/zap/build.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index/scorch/segment/zap/build.go b/index/scorch/segment/zap/build.go index 404ec869..f1698e39 100644 --- a/index/scorch/segment/zap/build.go +++ b/index/scorch/segment/zap/build.go @@ -515,7 +515,7 @@ func persistDocValues(memSegment *mem.Segment, w *CountHashWriter, var err1 error postings, err1 = dict.(*mem.Dictionary).InitPostingsList(next.Term, nil, postings) if err1 != nil { - return nil, err + return nil, err1 } postingsItr = postings.InitIterator(postingsItr) From 59eb70d0200dedb7710406280a27d4f75ff6ca97 Mon Sep 17 00:00:00 2001 From: Steve Yen Date: Tue, 6 Mar 2018 17:47:25 -0800 Subject: [PATCH 3/4] scorch zap remove unused chunkedIntCoder field --- index/scorch/segment/zap/intcoder.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/index/scorch/segment/zap/intcoder.go b/index/scorch/segment/zap/intcoder.go index 8d1f9453..ea033018 100644 --- a/index/scorch/segment/zap/intcoder.go +++ b/index/scorch/segment/zap/intcoder.go @@ -24,7 +24,6 @@ import ( type chunkedIntCoder struct { final []byte - maxDocNum uint64 chunkSize uint64 chunkBuf bytes.Buffer encoder *govarint.Base128Encoder @@ -41,7 +40,6 @@ func newChunkedIntCoder(chunkSize uint64, maxDocNum uint64) *chunkedIntCoder { total := maxDocNum/chunkSize + 1 rv := &chunkedIntCoder{ chunkSize: chunkSize, - maxDocNum: maxDocNum, chunkLens: make([]uint64, total), final: make([]byte, 0, 64), } From 2b5da7a8192821442761af98d689afdd74a1272e Mon Sep 17 00:00:00 2001 From: Steve Yen Date: Wed, 7 Mar 2018 09:12:55 -0800 Subject: [PATCH 4/4] go fmt --- index/scorch/merge.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/index/scorch/merge.go b/index/scorch/merge.go index 2b0e734c..ec2c8d4b 100644 --- a/index/scorch/merge.go +++ b/index/scorch/merge.go @@ -186,14 +186,14 @@ func (s *Scorch) planMergeAtSnapshot(ourSnapshot *IndexSnapshot, newDocNums, nBytes, err := zap.Merge(segmentsToMerge, docsToDrop, path, 1024) atomic.AddUint64(&s.stats.TotFileMergeZapEnd, 1) atomic.AddUint64(&s.stats.TotFileMergeWrittenBytes, nBytes) - + fileMergeZapTime := uint64(time.Since(fileMergeZapStartTime)) atomic.AddUint64(&s.stats.TotFileMergeZapTime, fileMergeZapTime) if atomic.LoadUint64(&s.stats.MaxFileMergeZapTime) < fileMergeZapTime { atomic.StoreUint64(&s.stats.MaxFileMergeZapTime, fileMergeZapTime) } - - if err != nil { + + if err != nil { s.unmarkIneligibleForRemoval(filename) atomic.AddUint64(&s.stats.TotFileMergePlanTasksErr, 1) return fmt.Errorf("merging failed: %v", err)