diff --git a/worker/job.go b/worker/job.go index fe459f3..b93844f 100644 --- a/worker/job.go +++ b/worker/job.go @@ -138,8 +138,8 @@ func runMirrorJob(provider mirrorProvider, ctrlChan <-chan ctrlAction, managerCh runJob := func(kill <-chan empty, jobDone chan<- empty) { select { - case <-semaphore: - defer func() { semaphore <- empty{} }() + case semaphore <- empty{}: + defer func() { <-semaphore }() runJobWrapper(kill, jobDone) case <-kill: jobDone <- empty{} diff --git a/worker/job_test.go b/worker/job_test.go index 0fa90e4..f9ab7ee 100644 --- a/worker/job_test.go +++ b/worker/job_test.go @@ -66,7 +66,6 @@ func TestMirrorJob(t *testing.T) { ctrlChan := make(chan ctrlAction) managerChan := make(chan struct{}) semaphore := make(chan empty, 1) - semaphore <- empty{} go runMirrorJob(provider, ctrlChan, managerChan, semaphore) for i := 0; i < 2; i++ { @@ -105,7 +104,6 @@ echo $TUNASYNC_WORKING_DIR ctrlChan := make(chan ctrlAction) managerChan := make(chan struct{}) semaphore := make(chan empty, 1) - semaphore <- empty{} Convey("If we kill it", func(ctx C) { go runMirrorJob(provider, ctrlChan, managerChan, semaphore)