@@ -206,18 +206,18 @@ async function evaluateAndRemoveRunners(
206
206
async function markOrphan ( instanceId : string ) : Promise < void > {
207
207
try {
208
208
await tag ( instanceId , [ { Key : 'ghr:orphan' , Value : 'true' } ] ) ;
209
- logger . info ( `Runner '${ instanceId } ' marked as orphan.` ) ;
209
+ logger . info ( `Runner '${ instanceId } ' tagged as orphan.` ) ;
210
210
} catch ( e ) {
211
- logger . error ( `Failed to mark runner '${ instanceId } ' as orphan.` , { error : e } ) ;
211
+ logger . error ( `Failed to tag runner '${ instanceId } ' as orphan.` , { error : e } ) ;
212
212
}
213
213
}
214
214
215
215
async function unmarkOrphan ( instanceId : string ) : Promise < void > {
216
216
try {
217
217
await untag ( instanceId , [ { Key : 'ghr:orphan' , Value : 'true' } ] ) ;
218
- logger . info ( `Runner '${ instanceId } ' unmarked as orphan.` ) ;
218
+ logger . info ( `Runner '${ instanceId } ' untagged as orphan.` ) ;
219
219
} catch ( e ) {
220
- logger . error ( `Failed to unmark runner '${ instanceId } ' as orphan.` , { error : e } ) ;
220
+ logger . error ( `Failed to un-tag runner '${ instanceId } ' as orphan.` , { error : e } ) ;
221
221
}
222
222
}
223
223
@@ -227,11 +227,15 @@ async function lastChanceCheckOrphanRunner(runner: RunnerList): Promise<boolean>
227
227
const ec2Instance = runner as RunnerInfo ;
228
228
const state = await getGitHubSelfHostedRunnerState ( client , ec2Instance , runnerId ) ;
229
229
var isOrphan = false ;
230
- logger . debug ( `Runner is currently '${ runner . instanceId } ' state: ${ JSON . stringify ( state ) } ` ) ;
231
- if ( state . status === 'offline' ) {
230
+ logger . debug (
231
+ `Runner '${ runner . instanceId } ' is '${ state . status } ' and is currently '${ state . busy ? 'busy' : 'idle' } '.` ,
232
+ ) ;
233
+ const isOfflineAndBusy = state . status === 'offline' && state . busy ;
234
+ if ( isOfflineAndBusy ) {
232
235
isOrphan = true ;
233
236
}
234
- return isOrphan
237
+ logger . info ( `Runner '${ runner . instanceId } ' ${ isOrphan ? 'is judged to be' : 'is judged to not be' } orphaned.` ) ;
238
+ return isOrphan ;
235
239
}
236
240
237
241
async function terminateOrphan ( environment : string ) : Promise < void > {
@@ -240,7 +244,9 @@ async function terminateOrphan(environment: string): Promise<void> {
240
244
241
245
for ( const runner of orphanRunners ) {
242
246
if ( runner . runnerId ) {
243
- await lastChanceCheckOrphanRunner ( runner ) ? terminateRunner ( runner . instanceId ) : unmarkOrphan ( runner . instanceId ) ;
247
+ ( await lastChanceCheckOrphanRunner ( runner ) )
248
+ ? terminateRunner ( runner . instanceId )
249
+ : unmarkOrphan ( runner . instanceId ) ;
244
250
} else {
245
251
logger . info ( `Terminating orphan runner '${ runner . instanceId } '` ) ;
246
252
await terminateRunner ( runner . instanceId ) . catch ( ( e ) => {
0 commit comments