Skip to content

Commit e085fb7

Browse files
authored
[BE] Use info logs for normal operations (#6955)
It's normal for there not being runners available for reuse, those events should not be logged as errors.
1 parent a9b4e21 commit e085fb7

File tree

3 files changed

+21
-9
lines changed

3 files changed

+21
-9
lines changed

terraform-aws-github-runner/modules/runners/lambdas/runners/src/scale-runners/runners.test.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
resetRunnersCaches,
88
terminateRunner,
99
tryReuseRunner,
10+
NoRunnersAvailable,
1011
} from './runners';
1112
import { RunnerInfo } from './utils';
1213
import { ScaleUpMetrics } from './metrics';
@@ -500,7 +501,7 @@ describe('tryReuseRunner', () => {
500501
};
501502
mockDescribeInstances.promise.mockClear().mockResolvedValue(mockRunningInstances);
502503

503-
await expect(tryReuseRunner(runnerParameters, metrics)).rejects.toThrowError('No runners available');
504+
await expect(tryReuseRunner(runnerParameters, metrics)).rejects.toThrow(NoRunnersAvailable);
504505

505506
expect(mockEC2.describeInstances).toBeCalledWith({
506507
Filters: [
@@ -563,7 +564,7 @@ describe('tryReuseRunner', () => {
563564
};
564565
mockDescribeInstances.promise.mockClear().mockResolvedValue(mockRunningInstances);
565566

566-
await expect(tryReuseRunner(runnerParameters, metrics)).rejects.toThrowError('No runners available');
567+
await expect(tryReuseRunner(runnerParameters, metrics)).rejects.toThrow(NoRunnersAvailable);
567568

568569
expect(mockEC2.describeInstances).toBeCalledWith({
569570
Filters: [
@@ -630,7 +631,7 @@ describe('tryReuseRunner', () => {
630631
};
631632
mockDescribeInstances.promise.mockClear().mockResolvedValue(mockRunningInstances);
632633

633-
await expect(tryReuseRunner(runnerParameters, metrics)).rejects.toThrowError('No runners available');
634+
await expect(tryReuseRunner(runnerParameters, metrics)).rejects.toThrow(NoRunnersAvailable);
634635

635636
expect(mockEC2.describeInstances).toBeCalledWith({
636637
Filters: [
@@ -772,7 +773,7 @@ describe('tryReuseRunner', () => {
772773
};
773774
mockDescribeInstances.promise.mockClear().mockResolvedValue(mockRunningInstances);
774775

775-
await expect(tryReuseRunner(runnerParameters, metrics)).rejects.toThrowError('No runners available');
776+
await expect(tryReuseRunner(runnerParameters, metrics)).rejects.toThrow(NoRunnersAvailable);
776777

777778
expect(mockEC2.describeInstances).toBeCalledWith({
778779
Filters: [
@@ -831,7 +832,7 @@ describe('tryReuseRunner', () => {
831832
};
832833
mockDescribeInstances.promise.mockClear().mockResolvedValue(mockRunningInstances);
833834

834-
await expect(tryReuseRunner(runnerParameters, metrics)).rejects.toThrowError('No runners available');
835+
await expect(tryReuseRunner(runnerParameters, metrics)).rejects.toThrow(NoRunnersAvailable);
835836

836837
expect(mockEC2.describeInstances).toBeCalledWith({
837838
Filters: [
@@ -974,7 +975,7 @@ describe('tryReuseRunner', () => {
974975
};
975976
mockDescribeInstances.promise.mockClear().mockResolvedValue(mockRunningInstances);
976977

977-
await expect(tryReuseRunner(runnerParameters, metrics)).rejects.toThrowError('No runners available');
978+
await expect(tryReuseRunner(runnerParameters, metrics)).rejects.toThrow(NoRunnersAvailable);
978979

979980
expect(mockEC2.describeInstances).toBeCalledWith({
980981
Filters: [

terraform-aws-github-runner/modules/runners/lambdas/runners/src/scale-runners/runners.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,13 @@ import { getJoinedStressTestExperiment, redisCached, redisLocked } from './cache
99
import moment from 'moment';
1010
import { RetryableScalingError } from './scale-up';
1111

12+
export class NoRunnersAvailable extends Error {
13+
constructor() {
14+
super('No runners available');
15+
this.name = 'NoRunnersAvailable';
16+
}
17+
}
18+
1219
export interface ListRunnerFilters {
1320
applicationDeployDatetime?: string;
1421
containsTags?: Array<string>;
@@ -649,7 +656,7 @@ export async function tryReuseRunner(
649656
);
650657
}
651658

652-
throw new Error('No runners available');
659+
throw new NoRunnersAvailable();
653660
}
654661

655662
export async function createRunner(runnerParameters: RunnerInputParameters, metrics: Metrics): Promise<string> {

terraform-aws-github-runner/modules/runners/lambdas/runners/src/scale-runners/scale-up.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Metrics, ScaleUpMetrics } from './metrics';
22
import { Repo, getRepoKey, sleep } from './utils';
3-
import { RunnerType, RunnerInputParameters, createRunner, tryReuseRunner } from './runners';
3+
import { RunnerType, RunnerInputParameters, createRunner, tryReuseRunner, NoRunnersAvailable } from './runners';
44
import {
55
createRegistrationTokenOrg,
66
createRegistrationTokenRepo,
@@ -126,7 +126,11 @@ export async function scaleUp(
126126
await tryReuseRunner(createRunnerParams, metrics);
127127
continue; // Runner successfuly reused, no need to create a new one, continue to next runner
128128
} catch (e) {
129-
console.error(`Error reusing runner: ${e}`);
129+
if (e instanceof NoRunnersAvailable) {
130+
console.info(`No runners available for reuse`);
131+
} else {
132+
console.error(`Error reusing runner: ${e}`);
133+
}
130134
}
131135
}
132136

0 commit comments

Comments
 (0)