[#153] selector: Add VU synchronization in 'Oneshot' mode
All checks were successful
All checks were successful
Signed-off-by: Alexander Chuprov <a.chuprov@yadro.com>
This commit is contained in:
parent
f539da7d89
commit
104aa5ef96
2 changed files with 10 additions and 1 deletions
|
@ -3,6 +3,7 @@ package registry
|
|||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/nspcc-dev/neo-go/pkg/io"
|
||||
|
@ -23,6 +24,8 @@ type ObjSelector struct {
|
|||
filter *ObjFilter
|
||||
cacheSize int
|
||||
kind SelectorKind
|
||||
// Sync synchronizes VU used for deletion.
|
||||
Sync sync.WaitGroup
|
||||
}
|
||||
|
||||
// objectSelectCache is the default maximum size of a batch to select from DB.
|
||||
|
@ -44,8 +47,8 @@ func NewObjSelector(registry *ObjRegistry, selectionSize int, kind SelectorKind,
|
|||
objChan: make(chan *ObjectInfo, selectionSize*2),
|
||||
cacheSize: selectionSize,
|
||||
kind: kind,
|
||||
Sync: sync.WaitGroup{},
|
||||
}
|
||||
|
||||
go objSelector.selectLoop()
|
||||
|
||||
return objSelector
|
||||
|
|
|
@ -132,6 +132,10 @@ export function setup() {
|
|||
const start_timestamp = Date.now()
|
||||
console.log(
|
||||
`Load started at: ${Date(start_timestamp).toString()}`)
|
||||
|
||||
if (delete_vu_count > 0){
|
||||
obj_to_delete_selector.sync.add(delete_vu_count)
|
||||
}
|
||||
}
|
||||
|
||||
export function teardown(data) {
|
||||
|
@ -204,6 +208,8 @@ export function obj_delete() {
|
|||
const obj = obj_to_delete_selector.nextObject();
|
||||
if (!obj) {
|
||||
if (obj_to_delete_exit_on_null) {
|
||||
obj_to_delete_selector.sync.done()
|
||||
obj_to_delete_selector.sync.wait()
|
||||
exec.test.abort("No more objects to select");
|
||||
}
|
||||
return;
|
||||
|
|
Loading…
Reference in a new issue