0
0

upside_down track analysis time tighter; and comments

This commit is contained in:
Steve Yen 2016-01-10 15:36:54 -08:00
parent d3dd40d334
commit c3b5246b0c

View File

@ -710,6 +710,7 @@ func (udc *UpsideDownCouch) termFieldVectorsFromTermVectors(in []*TermVector) []
func (udc *UpsideDownCouch) Batch(batch *index.Batch) (err error) {
analysisStart := time.Now()
resultChan := make(chan *index.AnalysisResult, len(batch.IndexOps))
var numUpdates uint64
@ -740,12 +741,13 @@ func (udc *UpsideDownCouch) Batch(batch *index.Batch) (err error) {
}
}()
udc.writeMutex.Lock()
defer udc.writeMutex.Unlock()
// retrieve back index rows concurrent with analysis
var backIndexRows map[string]*BackIndexRow
backindexReaderCh := make(chan error)
udc.writeMutex.Lock()
defer udc.writeMutex.Unlock()
go func() {
defer close(backindexReaderCh)
@ -757,7 +759,6 @@ func (udc *UpsideDownCouch) Batch(batch *index.Batch) (err error) {
return
}
// first lookup all the back index rows
backIndexRows, err = udc.backIndexRowsForBatch(kvreader, batch)
if err != nil {
_ = kvreader.Close()
@ -772,7 +773,7 @@ func (udc *UpsideDownCouch) Batch(batch *index.Batch) (err error) {
}
}()
// wait for the result
// wait for analysis result
newRowsMap := make(map[string][]index.IndexRow)
var itemsDeQueued uint64
for itemsDeQueued < numUpdates {
@ -782,6 +783,9 @@ func (udc *UpsideDownCouch) Batch(batch *index.Batch) (err error) {
}
close(resultChan)
atomic.AddUint64(&udc.stats.analysisTime, uint64(time.Since(analysisStart)))
// wait for back index rows
backindexReaderErr := <-backindexReaderCh
if backindexReaderErr != nil {
return backindexReaderErr
@ -793,8 +797,6 @@ func (udc *UpsideDownCouch) Batch(batch *index.Batch) (err error) {
return UnsafeBatchUseDetected
}
atomic.AddUint64(&udc.stats.analysisTime, uint64(time.Since(analysisStart)))
indexStart := time.Now()
// prepare a list of rows
@ -845,6 +847,7 @@ func (udc *UpsideDownCouch) Batch(batch *index.Batch) (err error) {
}
err = kvwriter.Close()
atomic.AddUint64(&udc.stats.indexTime, uint64(time.Since(indexStart)))
if err == nil {