diff --git a/.changeset/mysql-test-timeout.md b/.changeset/mysql-test-timeout.md new file mode 100644 index 0000000000..f54e1b349e --- /dev/null +++ b/.changeset/mysql-test-timeout.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-test-utils': patch +--- + +Increased MySQL connection and pool timeouts to reduce flaky `connect ETIMEDOUT` failures in CI. The test MySQL container now also uses `mysql_native_password` for cheaper connection handshakes and disables binary logging. diff --git a/packages/backend-test-utils/src/database/mysql.ts b/packages/backend-test-utils/src/database/mysql.ts index b4d677bd1f..4e4396adb9 100644 --- a/packages/backend-test-utils/src/database/mysql.ts +++ b/packages/backend-test-utils/src/database/mysql.ts @@ -56,6 +56,10 @@ export async function startMysqlContainer(image: string): Promise<{ .withExposedPorts(3306) .withEnvironment({ MYSQL_ROOT_PASSWORD: password }) .withTmpFs({ '/var/lib/mysql': 'rw' }) + .withCommand([ + '--default-authentication-plugin=mysql_native_password', + '--skip-log-bin', + ]) .start(); const host = container.getHost(); @@ -176,6 +180,7 @@ export class MysqlEngine implements Engine { connection: { ...this.#connection, database: databaseName, + connectTimeout: 30_000, }, ...LARGER_POOL_CONFIG, }); diff --git a/packages/backend-test-utils/src/database/types.ts b/packages/backend-test-utils/src/database/types.ts index 30e7e2f905..4bfaadcee0 100644 --- a/packages/backend-test-utils/src/database/types.ts +++ b/packages/backend-test-utils/src/database/types.ts @@ -129,5 +129,7 @@ export const LARGER_POOL_CONFIG = { pool: { min: 0, max: 50, + acquireTimeoutMillis: 30_000, + createTimeoutMillis: 30_000, }, };