diff --git a/pkg/resourceprovider/resourceprovider.go b/pkg/resourceprovider/resourceprovider.go index d854201e..20d1fe80 100644 --- a/pkg/resourceprovider/resourceprovider.go +++ b/pkg/resourceprovider/resourceprovider.go @@ -92,16 +92,20 @@ func NewResourceProvider( func (resourceProvider *ResourceProvider) Start(ctx context.Context, cm *system.CleanupManager) chan error { if resourceProvider.options.Pow.EnablePow { - go resourceProvider.StartMineLoop(ctx) + if errCh := resourceProvider.StartMineLoop(ctx); errCh != nil { + return errCh + } } return resourceProvider.controller.Start(ctx, cm) } -func (resourceProvider *ResourceProvider) StartMineLoop(ctx context.Context) error { +func (resourceProvider *ResourceProvider) StartMineLoop(ctx context.Context) chan error { + errorChan := make(chan error, 1) walletAddress := resourceProvider.web3SDK.GetAddress() nodeId, err := resourceProvider.controller.executor.Id() if err != nil { - return err + errorChan <- err + return errorChan } log.Info().Msgf("Wallet %s node id %s is ready for mine", walletAddress, nodeId) @@ -136,7 +140,7 @@ func (resourceProvider *ResourceProvider) StartMineLoop(ctx context.Context) err Msgf("Mine and submit successfully") } - log.Info().Msgf("Listen to new pow round signal, %d workers read to work", resourceProvider.options.Pow.NumWorkers) + log.Info().Msgf("Listen to new pow round signal, %d workers ready to work", resourceProvider.options.Pow.NumWorkers) miner := NewMinerController(nodeId, resourceProvider.options.Pow, taskCh, submitWork) go miner.Start(ctx) return nil