Skip to content

Commit

Permalink
chore: add release resources in connection provider manager (#262)
Browse files Browse the repository at this point in the history
  • Loading branch information
joyc-bq authored Oct 23, 2024
1 parent ccf63a0 commit 4fc09b5
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 6 deletions.
13 changes: 13 additions & 0 deletions common/lib/connection_provider_manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import { ConnectionProvider } from "./connection_provider";
import { HostRole } from "./host_role";
import { HostInfo } from "./host_info";
import { AwsWrapperError } from "./utils/errors";
import { CanReleaseResources } from "./can_release_resources";

export class ConnectionProviderManager {
private static connProvider: ConnectionProvider | null = null;
Expand Down Expand Up @@ -88,6 +89,18 @@ export class ConnectionProviderManager {
return host;
}

static async releaseResources(): Promise<any> {
if (ConnectionProviderManager.connProvider !== null) {
if (this.implementsCanReleaseResources(ConnectionProviderManager.connProvider)) {
await ConnectionProviderManager.connProvider.releaseResources();
}
}
}

private static implementsCanReleaseResources(connectionProvider: any): connectionProvider is CanReleaseResources {
return connectionProvider.releaseResources !== undefined;
}

static resetProvider() {
this.connProvider = null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ describe("aurora read write splitting", () => {
}
if (provider !== null) {
try {
await provider.releaseResources();
await ConnectionProviderManager.releaseResources();
ConnectionProviderManager.resetProvider();
} catch (error) {
// pass
Expand Down Expand Up @@ -589,7 +589,7 @@ describe("aurora read write splitting", () => {
client = initClientFunc(config);

provider = new InternalPooledConnectionProvider();
await provider.releaseResources(); // make sure there's no pool's left after prior test
await ConnectionProviderManager.releaseResources(); // make sure there's no pool's left after prior test

ConnectionProviderManager.setConnectionProvider(provider);

Expand Down
8 changes: 4 additions & 4 deletions tests/unit/internal_pool_connection_provider.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ describe("reader write splitting test", () => {
expect(providerSpy.getHostCount()).toBe(1);
expect(providerSpy.getKeySet()).toEqual(expectedKeys);
expect(providerSpy.getHostUrlSet()).toEqual(expectedHosts);
await provider.releaseResources();
await ConnectionProviderManager.releaseResources();
ConnectionProviderManager.resetProvider();
});

Expand Down Expand Up @@ -173,7 +173,7 @@ describe("reader write splitting test", () => {
expect(providerSpy.getHostCount()).toBe(1);
expect(providerSpy.getKeySet()).toEqual(expectedKeys);
expect(providerSpy.getHostUrlSet()).toEqual(expectedHosts);
await provider.releaseResources();
await ConnectionProviderManager.releaseResources();
ConnectionProviderManager.resetProvider();
});

Expand All @@ -183,7 +183,7 @@ describe("reader write splitting test", () => {
providerSpy.setDatabasePools(target);
const selectedHost = providerSpy.getHostInfoByStrategy(testHostsList, HostRole.READER, "random", props);
expect(selectedHost.host === readerUrl1Connection || selectedHost.host === readerUrl2Connection).toBeTruthy();
await provider.releaseResources();
await ConnectionProviderManager.releaseResources();
ConnectionProviderManager.resetProvider();
});

Expand All @@ -210,7 +210,7 @@ describe("reader write splitting test", () => {
} catch (error: any) {
expect(error.message).toEqual("testError");
}
await provider.releaseResources();
await ConnectionProviderManager.releaseResources();
ConnectionProviderManager.resetProvider();
});
});

0 comments on commit 4fc09b5

Please sign in to comment.