Skip to content

Commit 02faa19

Browse files
committed
chore: address review comments
1 parent 290e2b5 commit 02faa19

5 files changed

Lines changed: 21 additions & 29 deletions

File tree

common/lib/plugins/read_write_splitting/abstract_read_write_splitting_plugin.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,11 @@ import { FailoverError } from "../../utils/errors";
3030
import { WrapperProperties } from "../../wrapper_property";
3131
import { convertMsToNanos, getTimeInNanos, logAndThrowError } from "../../utils/utils";
3232
import { CacheItem } from "../../utils/cache_map";
33-
import { FullServicesContainer } from "../../utils/full_services_container";
3433

3534
export abstract class AbstractReadWriteSplittingPlugin extends AbstractConnectionPlugin implements CanReleaseResources {
3635
private static readonly subscribedMethods: Set<string> = new Set(["initHostProvider", "connect", "notifyConnectionChanged", "query"]);
3736

3837
protected _hostListProviderService: HostListProviderService | undefined;
39-
protected servicesContainer: FullServicesContainer;
4038
protected pluginService: PluginService;
4139
protected readonly _properties: Map<string, any>;
4240
protected readerHostInfo?: HostInfo = undefined;
@@ -50,10 +48,9 @@ export abstract class AbstractReadWriteSplittingPlugin extends AbstractConnectio
5048

5149
private _inReadWriteSplit = false;
5250

53-
protected constructor(serviceContainer: FullServicesContainer, properties: Map<string, any>) {
51+
protected constructor(pluginService: PluginService, properties: Map<string, any>) {
5452
super();
55-
this.servicesContainer = serviceContainer;
56-
this.pluginService = this.servicesContainer.getPluginService();
53+
this.pluginService = pluginService;
5754
this._properties = properties;
5855
this.readerSelectorStrategy = WrapperProperties.READER_HOST_SELECTOR_STRATEGY.get(properties);
5956
}

common/lib/plugins/read_write_splitting/gdb_read_writer_splitting_plugin.ts renamed to common/lib/plugins/read_write_splitting/gdb_read_write_splitting_plugin.ts

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
*/
1616

1717
import { ReadWriteSplittingPlugin } from "./read_write_splitting_plugin";
18-
import { PluginService } from "../../plugin_service";
1918
import { WrapperProperties } from "../../wrapper_property";
2019
import { HostInfo } from "../../host_info";
2120
import { RdsUtils } from "../../utils/rds_utils";
@@ -24,29 +23,22 @@ import { Messages } from "../../utils/messages";
2423
import { logger } from "../../../logutils";
2524
import { ClientWrapper } from "../../client_wrapper";
2625
import { equalsIgnoreCase } from "../../utils/utils";
27-
import { FullServicesContainer } from "../../utils/full_services_container";
2826

2927
export class GdbReadWriteSplittingPlugin extends ReadWriteSplittingPlugin {
3028
protected readonly rdsUtils: RdsUtils = new RdsUtils();
3129

32-
protected readonly restrictWriterToHomeRegion: boolean;
33-
protected readonly restrictReaderToHomeRegion: boolean;
30+
protected restrictWriterToHomeRegion: boolean;
31+
protected restrictReaderToHomeRegion: boolean;
3432

3533
protected isInitialized: boolean = false;
3634
protected homeRegion: string;
3735

38-
constructor(serviceContainer: FullServicesContainer, properties: Map<string, any>) {
39-
super(serviceContainer, properties);
40-
this.restrictWriterToHomeRegion = WrapperProperties.GDB_RW_RESTRICT_WRITER_TO_HOME_REGION.get(properties);
41-
this.restrictReaderToHomeRegion = WrapperProperties.GDB_RW_RESTRICT_READER_TO_HOME_REGION.get(properties);
42-
}
43-
4436
protected initSettings(initHostInfo: HostInfo, properties: Map<string, any>): void {
4537
if (this.isInitialized) {
4638
return;
4739
}
48-
49-
this.isInitialized = true;
40+
this.restrictWriterToHomeRegion = WrapperProperties.GDB_RW_RESTRICT_WRITER_TO_HOME_REGION.get(properties);
41+
this.restrictReaderToHomeRegion = WrapperProperties.GDB_RW_RESTRICT_READER_TO_HOME_REGION.get(properties);
5042

5143
this.homeRegion = WrapperProperties.GDB_RW_HOME_REGION.get(properties);
5244
if (!this.homeRegion) {
@@ -61,6 +53,8 @@ export class GdbReadWriteSplittingPlugin extends ReadWriteSplittingPlugin {
6153
}
6254

6355
logger.debug(Messages.get("GdbReadWriteSplittingPlugin.parameterValue", "gdbRwHomeRegion", this.homeRegion));
56+
57+
this.isInitialized = true;
6458
}
6559

6660
override async connect(
@@ -76,8 +70,8 @@ export class GdbReadWriteSplittingPlugin extends ReadWriteSplittingPlugin {
7670
override setWriterClient(writerTargetClient: ClientWrapper | undefined, writerHostInfo: HostInfo) {
7771
if (
7872
this.restrictWriterToHomeRegion &&
79-
this.writerHostInfo != null &&
80-
!equalsIgnoreCase(this.rdsUtils.getRdsRegion(this.writerHostInfo.host), this.homeRegion)
73+
writerHostInfo != null &&
74+
!equalsIgnoreCase(this.rdsUtils.getRdsRegion(writerHostInfo.host), this.homeRegion)
8175
) {
8276
throw new ReadWriteSplittingError(
8377
Messages.get("GdbReadWriteSplittingPlugin.cantConnectWriterOutOfHomeRegion", writerHostInfo.host, this.homeRegion)

common/lib/plugins/read_write_splitting/gdb_read_write_splitting_plugin_factory.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,12 @@ export class GdbReadWriteSplittingPluginFactory extends ConnectionPluginFactory
2727
async getInstance(servicesContainer: FullServicesContainer, properties: Map<string, any>): Promise<ConnectionPlugin> {
2828
try {
2929
if (!GdbReadWriteSplittingPluginFactory.gdbReadWriteSplittingPlugin) {
30-
GdbReadWriteSplittingPluginFactory.gdbReadWriteSplittingPlugin = await import("./gdb_read_writer_splitting_plugin");
30+
GdbReadWriteSplittingPluginFactory.gdbReadWriteSplittingPlugin = await import("./gdb_read_write_splitting_plugin");
3131
}
32-
return new GdbReadWriteSplittingPluginFactory.gdbReadWriteSplittingPlugin.GdbReadWriteSplittingPlugin(servicesContainer, properties);
32+
return new GdbReadWriteSplittingPluginFactory.gdbReadWriteSplittingPlugin.GdbReadWriteSplittingPlugin(
33+
servicesContainer.getPluginService(),
34+
properties
35+
);
3336
} catch (error: any) {
3437
throw new AwsWrapperError(Messages.get("ConnectionPluginChainBuilder.errorImportingPlugin", error.message, "gdbReadWriteSplittingPlugin"));
3538
}

common/lib/plugins/read_write_splitting/read_write_splitting_plugin.ts

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,27 +24,26 @@ import { AbstractReadWriteSplittingPlugin } from "./abstract_read_write_splittin
2424
import { WrapperProperties } from "../../wrapper_property";
2525
import { logger } from "../../../logutils";
2626
import { CacheItem } from "../../utils/cache_map";
27-
import { FullServicesContainer } from "../../utils/full_services_container";
2827

2928
export class ReadWriteSplittingPlugin extends AbstractReadWriteSplittingPlugin {
3029
protected hosts: HostInfo[] = [];
3130

32-
constructor(serviceContainer: FullServicesContainer, properties: Map<string, any>);
31+
constructor(pluginService: PluginService, properties: Map<string, any>);
3332
constructor(
34-
serviceContainer: FullServicesContainer,
33+
pluginService: PluginService,
3534
properties: Map<string, any>,
3635
hostListProviderService: HostListProviderService,
3736
writerClient: ClientWrapper,
3837
readerClient: ClientWrapper
3938
);
4039
constructor(
41-
serviceContainer: FullServicesContainer,
40+
pluginService: PluginService,
4241
properties: Map<string, any>,
4342
hostListProviderService?: HostListProviderService,
4443
writerClient?: ClientWrapper,
4544
readerClient?: ClientWrapper
4645
) {
47-
super(serviceContainer, properties);
46+
super(pluginService, properties);
4847
this._hostListProviderService = hostListProviderService;
4948
this.writerTargetClient = writerClient;
5049
this.readerCacheItem = new CacheItem(readerClient, BigInt(0));
@@ -65,7 +64,7 @@ export class ReadWriteSplittingPlugin extends AbstractReadWriteSplittingPlugin {
6564
if (!isInitialConnection || this._hostListProviderService?.isStaticHostListProvider()) {
6665
return result;
6766
}
68-
const currentRole = this.pluginService.getCurrentHostInfo()?.role;
67+
const currentRole = await this.pluginService.getHostRole(result);
6968

7069
if (currentRole == HostRole.UNKNOWN) {
7170
logAndThrowError(Messages.get("ReadWriteSplittingPlugin.errorVerifyingInitialHostRole"));
@@ -182,7 +181,7 @@ export class ReadWriteSplittingPlugin extends AbstractReadWriteSplittingPlugin {
182181
}
183182
}
184183

185-
protected getReaderHostCandidates(): HostInfo[] | undefined {
184+
protected getReaderHostCandidates(): HostInfo[] {
186185
return this.pluginService.getHosts();
187186
}
188187
}

common/lib/utils/messages.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -418,7 +418,6 @@ const MESSAGES: Record<string, string> = {
418418
"GlobalDbFailoverPlugin.failoverElapsed": "Global DB failover elapsed time: %s ms",
419419
"GlobalDbFailoverPlugin.candidateNull": "Candidate host is null for role: %s",
420420
"GlobalDbFailoverPlugin.unableToConnect": "Unable to establish a connection during Global DB failover.",
421-
"GlobalDbFailoverPlugin.unableToConnect": "Unable to establish a connection during failover.",
422421
"GdbReadWriteSplittingPlugin.missingHomeRegion":
423422
"Unable to parse home region from endpoint '%s'. Please ensure you have set the 'gdbRwHomeRegion' connection parameter.",
424423
"GdbReadWriteSplittingPlugin.cantConnectWriterOutOfHomeRegion":

0 commit comments

Comments
 (0)