Skip to content

Commit a3cf531

Browse files
author
diego Dupin
committed
[CONJ-895] Wrong pattern for detection of aurora
1 parent a3c83e4 commit a3cf531

File tree

3 files changed

+6
-72
lines changed

3 files changed

+6
-72
lines changed

src/main/java/org/mariadb/jdbc/UrlParser.java

Lines changed: 4 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,6 @@ public class UrlParser implements Cloneable {
102102
private static final String DISABLE_MYSQL_URL = "disableMariaDbDriver";
103103
private static final Pattern URL_PARAMETER =
104104
Pattern.compile("(\\/([^\\?]*))?(\\?(.+))*", Pattern.DOTALL);
105-
private static final Pattern AWS_PATTERN =
106-
Pattern.compile("(.+)\\.([a-z0-9\\-]+\\.rds\\.amazonaws\\.com)", Pattern.CASE_INSENSITIVE);
107105

108106
private String database;
109107
private Options options = null;
@@ -213,8 +211,7 @@ private static void parseInternal(UrlParser urlParser, String url, Properties pr
213211
if ((dbIndex < paramIndex && dbIndex < 0) || (dbIndex > paramIndex && paramIndex > -1)) {
214212
hostAddressesString = urlSecondPart.substring(0, paramIndex);
215213
additionalParameters = urlSecondPart.substring(paramIndex);
216-
} else if ((dbIndex < paramIndex && dbIndex > -1)
217-
|| (dbIndex > paramIndex && paramIndex < 0)) {
214+
} else if (dbIndex < paramIndex || dbIndex > paramIndex) {
218215
hostAddressesString = urlSecondPart.substring(0, dbIndex);
219216
additionalParameters = urlSecondPart.substring(dbIndex);
220217
} else {
@@ -255,9 +252,8 @@ private static void defineUrlParserParameters(
255252
throws SQLException {
256253

257254
if (additionalParameters != null) {
258-
//noinspection Annotator
259255
Matcher matcher = URL_PARAMETER.matcher(additionalParameters);
260-
matcher.find();
256+
boolean unused = matcher.find();
261257
urlParser.database = matcher.group(2);
262258
urlParser.options =
263259
DefaultOptions.parse(urlParser.haMode, matcher.group(4), properties, urlParser.options);
@@ -351,7 +347,7 @@ private void setInitialUrl() {
351347
}
352348

353349
/**
354-
* Permit to set parameters not forced. if options useBatchMultiSend and usePipelineAuth are not
350+
* Permit setting parameters not forced. if options useBatchMultiSend and usePipelineAuth are not
355351
* explicitly set in connection string, value will default to true or false according if aurora
356352
* detection.
357353
*
@@ -361,7 +357,7 @@ public UrlParser auroraPipelineQuirks() {
361357

362358
// Aurora has issue with pipelining, depending on network speed.
363359
// Driver must rely on information provided by user : hostname if dns, and HA mode.</p>
364-
boolean disablePipeline = isAurora();
360+
boolean disablePipeline = haMode == HaMode.AURORA;
365361

366362
if (options.useBatchMultiSend == null) {
367363
options.useBatchMultiSend = disablePipeline ? Boolean.FALSE : Boolean.TRUE;
@@ -373,30 +369,6 @@ public UrlParser auroraPipelineQuirks() {
373369
return this;
374370
}
375371

376-
/**
377-
* Detection of Aurora.
378-
*
379-
* <p>Aurora rely on MySQL, then cannot be identified by protocol. But Aurora doesn't permit some
380-
* behaviour normally working with MySQL : pipelining. So Driver must identified if server is
381-
* Aurora to disable pipeline options that are enable by default.
382-
*
383-
* @return true if aurora.
384-
*/
385-
public boolean isAurora() {
386-
if (haMode == HaMode.AURORA) {
387-
return true;
388-
}
389-
if (addresses != null) {
390-
for (HostAddress hostAddress : addresses) {
391-
Matcher matcher = AWS_PATTERN.matcher(hostAddress.host);
392-
if (matcher.find()) {
393-
return true;
394-
}
395-
}
396-
}
397-
return false;
398-
}
399-
400372
/**
401373
* Parse url connection string.
402374
*

src/test/java/org/mariadb/jdbc/BaseTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@
7171
import org.mariadb.jdbc.failover.TcpProxy;
7272
import org.mariadb.jdbc.internal.failover.AbstractMastersListener;
7373
import org.mariadb.jdbc.internal.protocol.Protocol;
74+
import org.mariadb.jdbc.internal.util.constant.HaMode;
7475
import org.mariadb.jdbc.util.Options;
7576

7677
/**
@@ -965,7 +966,7 @@ public boolean sharedUseCompression() {
965966
}
966967

967968
public boolean sharedIsAurora() {
968-
return urlParser.isAurora();
969+
return urlParser.getHaMode() == HaMode.AURORA;
969970
}
970971

971972
/**

src/test/java/org/mariadb/jdbc/JdbcParserTest.java

Lines changed: 0 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -131,32 +131,9 @@ public void testAuroraUseBatchMultiSend() throws Throwable {
131131
.getOptions()
132132
.useBatchMultiSend);
133133

134-
String hostAurora =
135-
"jdbc:mariadb://localhost,instance-1-cluster.cluster-cvz6gk5op1wk.us-east-1.rds.amazonaws.com:3306/test";
136-
assertFalse(UrlParser.parse(hostAurora).auroraPipelineQuirks().getOptions().useBatchMultiSend);
137-
assertTrue(
138-
UrlParser.parse(hostAurora + "?useBatchMultiSend=true")
139-
.auroraPipelineQuirks()
140-
.getOptions()
141-
.useBatchMultiSend);
142-
143-
String hostAuroraUpper =
144-
"jdbc:mariadb://localhost,instance-1-cluster.cluster-cvz6gk5op1wk.us-east-1.rds.AMAZONAWS.com:3306/test";
145-
assertFalse(
146-
UrlParser.parse(hostAuroraUpper).auroraPipelineQuirks().getOptions().useBatchMultiSend);
147-
assertTrue(
148-
UrlParser.parse(hostAuroraUpper + "?useBatchMultiSend=true")
149-
.auroraPipelineQuirks()
150-
.getOptions()
151-
.useBatchMultiSend);
152-
153134
MariaDbDataSource datasource = new MariaDbDataSource();
154135
datasource.initialize();
155136
assertNull(datasource.getUrlParser().getOptions().useBatchMultiSend);
156-
datasource.setUrl(hostAurora);
157-
assertFalse(datasource.getUrlParser().auroraPipelineQuirks().getOptions().useBatchMultiSend);
158-
datasource.setUrl(hostAurora + "?useBatchMultiSend=true");
159-
assertTrue(datasource.getUrlParser().auroraPipelineQuirks().getOptions().useBatchMultiSend);
160137
}
161138

162139
@Test
@@ -247,25 +224,9 @@ public void testAuroraUsePipelineAuth() throws Throwable {
247224
.getOptions()
248225
.usePipelineAuth);
249226

250-
String hostAurora =
251-
"jdbc:mariadb://localhost,instance-1-cluster.cluster-cvz6gk5op1wk.us-east-1.rds.amazonaws.com:3306/test";
252-
assertFalse(UrlParser.parse(hostAurora).auroraPipelineQuirks().getOptions().usePipelineAuth);
253-
assertTrue(UrlParser.parse(hostAurora + "?usePipelineAuth=true").getOptions().usePipelineAuth);
254-
255-
String hostAuroraUpper =
256-
"jdbc:mariadb://localhost,instance-1-cluster.cluster-cvz6gk5op1wk.us-east-1.RDS.amazonaws.com:3306/test";
257-
assertFalse(
258-
UrlParser.parse(hostAuroraUpper).auroraPipelineQuirks().getOptions().usePipelineAuth);
259-
assertTrue(
260-
UrlParser.parse(hostAuroraUpper + "?usePipelineAuth=true").getOptions().usePipelineAuth);
261-
262227
MariaDbDataSource datasource = new MariaDbDataSource();
263228
datasource.initialize();
264229
assertNull(datasource.getUrlParser().getOptions().usePipelineAuth);
265-
datasource.setUrl(hostAurora);
266-
assertFalse(datasource.getUrlParser().auroraPipelineQuirks().getOptions().usePipelineAuth);
267-
datasource.setUrl(hostAurora + "?usePipelineAuth=true");
268-
assertTrue(datasource.getUrlParser().auroraPipelineQuirks().getOptions().usePipelineAuth);
269230
}
270231

271232
@Test

0 commit comments

Comments
 (0)