2
2
// SPDX-License-Identifier: MPL-2.0
3
3
4
4
import { globalConfig } from "../../config.ts" ;
5
- import { getLogger , type Logger } from "../../log.ts" ;
5
+ import { getLogger } from "../../log.ts" ;
6
6
import type { TaskContext } from "../deno/shared_types.ts" ;
7
7
import { DenoWorker } from "../patterns/worker_manager/deno.ts" ;
8
8
import { BaseWorkerManager } from "../patterns/worker_manager/mod.ts" ;
@@ -118,8 +118,7 @@ export class BlockingInterval {
118
118
#killed = false ;
119
119
#running = false ;
120
120
121
- constructor ( private logger ?: Logger ) {
122
- }
121
+ #runningResolver?: ( ) => void ;
123
122
124
123
async start ( delayMs : number , handler : ( ) => Promise < void > | void ) {
125
124
if ( this . #running) {
@@ -130,11 +129,7 @@ export class BlockingInterval {
130
129
this . #running = true ;
131
130
132
131
while ( ! this . #killed) {
133
- try {
134
- await handler ( ) ;
135
- } catch ( err ) {
136
- this . logger ?. error ( "BlockingInterval iteration error:" , err ) ;
137
- }
132
+ await handler ( ) ;
138
133
139
134
if ( this . #killed) {
140
135
break ;
@@ -144,22 +139,18 @@ export class BlockingInterval {
144
139
}
145
140
146
141
this . #running = false ;
142
+ this . #runningResolver?.( ) ;
147
143
}
148
144
149
145
async kill ( ) {
150
146
this . #killed = true ;
151
147
152
148
if ( this . #running) {
153
- const ensureKillMs = 60 ;
154
-
155
- await new Promise ( ( res ) => {
156
- const interval = setInterval ( ( ) => {
157
- if ( ! this . #running) {
158
- clearInterval ( interval ) ;
159
- res ( true ) ;
160
- }
161
- } , ensureKillMs ) ;
149
+ await new Promise < void > ( ( res ) => {
150
+ this . #runningResolver = res ;
162
151
} ) ;
152
+
153
+ this . #runningResolver = undefined ;
163
154
}
164
155
}
165
156
}
0 commit comments