0
0

upside_down process internal rows earlier

With this change, internal rows are processed while we're waiting for
backIndex rows to be retrieved.
This commit is contained in:
Steve Yen 2016-01-11 16:25:35 -08:00
parent bb5cd8f3d6
commit 94273d5fa9

View File

@ -790,6 +790,18 @@ func (udc *UpsideDownCouch) Batch(batch *index.Batch) (err error) {
indexStart := time.Now()
// add the internal ops
for internalKey, internalValue := range batch.InternalOps {
if internalValue == nil {
// delete
deleteInternalRow := NewInternalRow([]byte(internalKey), nil)
deleteRows = append(deleteRows, deleteInternalRow)
} else {
updateInternalRow := NewInternalRow([]byte(internalKey), internalValue)
updateRows = append(updateRows, updateInternalRow)
}
}
for dbir := range docBackIndexRowCh {
if dbir.doc == nil && dbir.backIndexRow != nil {
// delete
@ -813,18 +825,6 @@ func (udc *UpsideDownCouch) Batch(batch *index.Batch) (err error) {
return UnsafeBatchUseDetected
}
// add the internal ops
for internalKey, internalValue := range batch.InternalOps {
if internalValue == nil {
// delete
deleteInternalRow := NewInternalRow([]byte(internalKey), nil)
deleteRows = append(deleteRows, deleteInternalRow)
} else {
updateInternalRow := NewInternalRow([]byte(internalKey), internalValue)
updateRows = append(updateRows, updateInternalRow)
}
}
// start a writer for this batch
var kvwriter store.KVWriter
kvwriter, err = udc.store.Writer()