@ -34,10 +34,9 @@ type blockDownloader struct {
limits Limits
activeUsersService * util . ActiveUsersCleanupService
ctx context . Context
manager * services . Manager
onWorkerStopCallback func ( )
wg sync . WaitGroup
ctx context . Context
manager * services . Manager
wg sync . WaitGroup
}
func newBlockDownloader ( config config . Config , blockClient BlockClient , limits Limits , logger log . Logger , reg prometheus . Registerer ) ( * blockDownloader , error ) {
@ -57,17 +56,16 @@ func newBlockDownloader(config config.Config, blockClient BlockClient, limits Li
}
b := & blockDownloader {
ctx : ctx ,
logger : logger ,
workingDirectory : config . WorkingDirectory ,
queueMetrics : queueMetrics ,
queue : downloadingQueue ,
blockClient : blockClient ,
activeUsersService : activeUsersService ,
limits : limits ,
manager : manager ,
onWorkerStopCallback : onWorkerStopNoopCallback ,
wg : sync . WaitGroup { } ,
ctx : ctx ,
logger : logger ,
workingDirectory : config . WorkingDirectory ,
queueMetrics : queueMetrics ,
queue : downloadingQueue ,
blockClient : blockClient ,
activeUsersService : activeUsersService ,
limits : limits ,
manager : manager ,
wg : sync . WaitGroup { } ,
}
for i := 0 ; i < config . BlocksDownloadingQueue . WorkersCount ; i ++ {
@ -95,18 +93,15 @@ func NewBlockDownloadingTask(ctx context.Context, block BlockRef, resCh chan<- b
}
}
// noop implementation
var onWorkerStopNoopCallback = func ( ) { }
func ( d * blockDownloader ) serveDownloadingTasks ( workerID string ) {
// defer first, so it gets executed as last of the deferred functions
defer d . wg . Done ( )
logger := log . With ( d . logger , "worker" , workerID )
level . Debug ( logger ) . Log ( "msg" , "starting worker" )
d . queue . RegisterConsumerConnection ( workerID )
defer d . queue . UnregisterConsumerConnection ( workerID )
//this callback is used only in the tests to assert that worker is stopped
defer d . onWorkerStopCallback ( )
defer d . wg . Done ( )
idx := queue . StartIndexWithLocalQueue