Skip to content

Commit

Permalink
feat: read-write splitting plugin
Browse files Browse the repository at this point in the history
  • Loading branch information
joyc-bq committed Jun 5, 2024
1 parent 85507b1 commit e630ab2
Show file tree
Hide file tree
Showing 9 changed files with 1,206 additions and 7 deletions.
2 changes: 2 additions & 0 deletions common/lib/connection_plugin_chain_builder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import { ExecuteTimePluginFactory } from "./plugins/execute_time_plugin";
import { ConnectTimePluginFactory } from "./plugins/connect_time_plugin";
import { AwsSecretsManagerPluginFactory } from "./authentication/aws_secrets_manager_plugin";
import { ConnectionProvider } from "./connection_provider";
import { ReadWriteSplittingPluginFactory } from "./plugins/read_write_splitting";
import { StaleDnsPluginFactory } from "./plugins/stale_dns/stale_dns_plugin";
import { FederatedAuthPluginFactory } from "./plugins/federated_auth/federated_auth_plugin";

Expand All @@ -43,6 +44,7 @@ export class ConnectionPluginChainBuilder {
["connectTime", ConnectTimePluginFactory],
["secretsManager", AwsSecretsManagerPluginFactory],
["failover", FailoverPluginFactory],
["readWriteSplitting", ReadWriteSplittingPluginFactory],
["staleDns", StaleDnsPluginFactory],
["federatedAuth", FederatedAuthPluginFactory]
]);
Expand Down
2 changes: 1 addition & 1 deletion common/lib/driver_connection_provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ export class DriverConnectionProvider implements ConnectionProvider {
getHostInfoByStrategy(hosts: HostInfo[], role: HostRole, strategy: string, props?: Map<string, any>): HostInfo {
const acceptedStrategy = DriverConnectionProvider.acceptedStrategies.get(strategy);
if (!acceptedStrategy) {
throw new AwsWrapperError(Messages.get("ConnectionProvider.unsupportedHostInfoSelectorStrategy", strategy, "DriverConnectionProvider"));
throw new AwsWrapperError(Messages.get("ConnectionProvider.unsupportedHostSelectorStrategy", strategy, "DriverConnectionProvider"));
}
return acceptedStrategy.getHost(hosts, role, props);
}
Expand Down
9 changes: 9 additions & 0 deletions common/lib/plugin_service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,11 @@ export class PluginService implements ErrorHandler, HostListProviderService {
this._initialConnectionHostInfo = initialConnectionHostInfo;
}

getHostInfoByStrategy(role: HostRole, strategy: string): HostInfo | undefined {
const pluginManager = this.pluginServiceManagerContainer.pluginManager;
return pluginManager?.getHostInfoByStrategy(role, strategy);
}

getCurrentHostInfo(): HostInfo | null {
return this._currentHostInfo ? this._currentHostInfo : null;
}
Expand Down Expand Up @@ -131,6 +136,10 @@ export class PluginService implements ErrorHandler, HostListProviderService {
return false;
}

acceptsStrategy(role: HostRole, strategy: string): boolean {
return this.pluginServiceManagerContainer.pluginManager?.acceptsStrategy(role, strategy) ?? false;
}

async forceRefreshHostList(): Promise<void>;
async forceRefreshHostList(targetClient?: any): Promise<void>;
async forceRefreshHostList(targetClient?: any): Promise<void> {
Expand Down
Loading

0 comments on commit e630ab2

Please sign in to comment.