Skip to content

Commit 6a5830b

Browse files
do not start workers if no activities or workflows are registered (#1031)
1 parent 2a1631b commit 6a5830b

File tree

1 file changed

+31
-16
lines changed

1 file changed

+31
-16
lines changed

internal/internal_worker.go

Lines changed: 31 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,13 @@ func (ww *workflowWorker) Run() error {
368368

369369
// Shutdown the worker.
370370
func (ww *workflowWorker) Stop() {
371-
close(ww.stopC)
371+
select {
372+
case <-ww.stopC:
373+
// channel is already closed
374+
default:
375+
close(ww.stopC)
376+
}
377+
372378
// TODO: remove the stop methods in favor of the workerStopChannel
373379
ww.localActivityWorker.Stop()
374380
ww.worker.Stop()
@@ -520,7 +526,13 @@ func (aw *activityWorker) Run() error {
520526

521527
// Shutdown the worker.
522528
func (aw *activityWorker) Stop() {
523-
close(aw.stopC)
529+
select {
530+
case <-aw.stopC:
531+
// channel is already closed
532+
default:
533+
close(aw.stopC)
534+
}
535+
524536
aw.worker.Stop()
525537
}
526538

@@ -785,26 +797,30 @@ func (aw *aggregatedWorker) Start() error {
785797

786798
if !isInterfaceNil(aw.workflowWorker) {
787799
if len(aw.registry.getRegisteredWorkflowTypes()) == 0 {
788-
aw.logger.Warn(
789-
"Starting worker without any workflows. Workflows must be registered before start.",
800+
aw.logger.Info(
801+
"Worker has no workflows registered, so workflow worker will not be started.",
790802
)
803+
} else {
804+
if err := aw.workflowWorker.Start(); err != nil {
805+
return err
806+
}
791807
}
792-
if err := aw.workflowWorker.Start(); err != nil {
793-
return err
794-
}
808+
aw.logger.Info("Started Workflow Worker")
795809
}
796810
if !isInterfaceNil(aw.activityWorker) {
797811
if len(aw.registry.getRegisteredActivities()) == 0 {
798-
aw.logger.Warn(
799-
"Starting worker without any activities. Activities must be registered before start.",
812+
aw.logger.Info(
813+
"Worker has no activities registered, so activity worker will not be started.",
800814
)
801-
}
802-
if err := aw.activityWorker.Start(); err != nil {
803-
// stop workflow worker.
804-
if !isInterfaceNil(aw.workflowWorker) {
805-
aw.workflowWorker.Stop()
815+
} else {
816+
if err := aw.activityWorker.Start(); err != nil {
817+
// stop workflow worker.
818+
if !isInterfaceNil(aw.workflowWorker) {
819+
aw.workflowWorker.Stop()
820+
}
821+
return err
806822
}
807-
return err
823+
aw.logger.Info("Started Activity Worker")
808824
}
809825
}
810826

@@ -821,7 +837,6 @@ func (aw *aggregatedWorker) Start() error {
821837
}
822838
}
823839

824-
aw.logger.Info("Started Worker")
825840
return nil
826841
}
827842

0 commit comments

Comments
 (0)