Skip to content

Commit 037a0d4

Browse files
committed
PLUGIN-1823: Rework
Moved all the retry constants to RetryUtils class, Added the methods to determine error type and error category methods from Error code and SQL State
1 parent 6d4f62d commit 037a0d4

File tree

4 files changed

+195
-35
lines changed

4 files changed

+195
-35
lines changed

database-commons/src/main/java/io/cdap/plugin/db/ConnectionConfig.java

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import io.cdap.cdap.api.plugin.PluginConfig;
2525
import io.cdap.plugin.common.KeyValueListParser;
2626
import io.cdap.plugin.db.config.DatabaseConnectionConfig;
27+
import io.cdap.plugin.util.RetryUtils;
2728

2829
import java.util.Collections;
2930
import java.util.HashMap;
@@ -45,12 +46,6 @@ public abstract class ConnectionConfig extends PluginConfig implements DatabaseC
4546
public static final String CONNECTION_ARGUMENTS = "connectionArguments";
4647
public static final String JDBC_PLUGIN_NAME = "jdbcPluginName";
4748
public static final String JDBC_PLUGIN_TYPE = "jdbc";
48-
private static final String NAME_INITIAL_RETRY_DURATION = "initialRetryDuration";
49-
private static final String NAME_MAX_RETRY_DURATION = "maxRetryDuration";
50-
private static final String NAME_MAX_RETRY_COUNT = "maxRetryCount";
51-
public static final int DEFAULT_INITIAL_RETRY_DURATION_SECONDS = 5;
52-
public static final int DEFAULT_MAX_RETRY_COUNT = 5;
53-
public static final int DEFAULT_MAX_RETRY_DURATION_SECONDS = 80;
5449
public static final String TRANSACTION_ISOLATION_LEVEL = "transactionIsolationLevel";
5550

5651
@Name(JDBC_PLUGIN_NAME)
@@ -78,35 +73,35 @@ public abstract class ConnectionConfig extends PluginConfig implements DatabaseC
7873
@Macro
7974
public String connectionArguments;
8075

81-
@Name(NAME_INITIAL_RETRY_DURATION)
76+
@Name(RetryUtils.NAME_INITIAL_RETRY_DURATION)
8277
@Description("Time taken for the first retry. Default is 5 seconds.")
8378
@Nullable
8479
@Macro
8580
private Integer initialRetryDuration;
8681

87-
@Name(NAME_MAX_RETRY_DURATION)
82+
@Name(RetryUtils.NAME_MAX_RETRY_DURATION)
8883
@Description("Maximum time in seconds retries can take. Default is 80 seconds.")
8984
@Nullable
9085
@Macro
9186
private Integer maxRetryDuration;
9287

93-
@Name(NAME_MAX_RETRY_COUNT)
88+
@Name(RetryUtils.NAME_MAX_RETRY_COUNT)
9489
@Description("Maximum number of retries allowed. Default is 5.")
9590
@Nullable
9691
@Macro
9792
private Integer maxRetryCount;
9893

9994

10095
public Integer getInitialRetryDuration() {
101-
return initialRetryDuration == null ? DEFAULT_INITIAL_RETRY_DURATION_SECONDS : initialRetryDuration;
96+
return initialRetryDuration == null ? RetryUtils.DEFAULT_INITIAL_RETRY_DURATION_SECONDS : initialRetryDuration;
10297
}
10398

10499
public Integer getMaxRetryDuration() {
105-
return maxRetryDuration == null ? DEFAULT_MAX_RETRY_DURATION_SECONDS : maxRetryDuration;
100+
return maxRetryDuration == null ? RetryUtils.DEFAULT_MAX_RETRY_DURATION_SECONDS : maxRetryDuration;
106101
}
107102

108103
public Integer getMaxRetryCount() {
109-
return maxRetryCount == null ? DEFAULT_MAX_RETRY_COUNT : maxRetryCount;
104+
return maxRetryCount == null ? RetryUtils.DEFAULT_MAX_RETRY_COUNT : maxRetryCount;
110105
}
111106

112107
public ConnectionConfig() {

database-commons/src/main/java/io/cdap/plugin/db/connector/AbstractDBConnectorConfig.java

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import io.cdap.plugin.common.KeyValueListParser;
2626
import io.cdap.plugin.common.db.DBConnectorProperties;
2727
import io.cdap.plugin.db.ConnectionConfig;
28+
import io.cdap.plugin.util.RetryUtils;
2829

2930
import java.util.Collections;
3031
import java.util.HashMap;
@@ -36,12 +37,6 @@
3637
*
3738
*/
3839
public abstract class AbstractDBConnectorConfig extends PluginConfig implements DBConnectorProperties {
39-
private static final String NAME_INITIAL_RETRY_DURATION = "initialRetryDuration";
40-
private static final String NAME_MAX_RETRY_DURATION = "maxRetryDuration";
41-
private static final String NAME_MAX_RETRY_COUNT = "maxRetryCount";
42-
public static final int DEFAULT_INITIAL_RETRY_DURATION_SECONDS = 5;
43-
public static final int DEFAULT_MAX_RETRY_COUNT = 5;
44-
public static final int DEFAULT_MAX_RETRY_DURATION_SECONDS = 80;
4540

4641
@Name(ConnectionConfig.JDBC_PLUGIN_NAME)
4742
@Description("Name of the JDBC driver to use. This is the value of the 'jdbcPluginName' key defined in the JSON " +
@@ -70,19 +65,19 @@ public abstract class AbstractDBConnectorConfig extends PluginConfig implements
7065
protected String connectionArguments;
7166

7267

73-
@Name(NAME_INITIAL_RETRY_DURATION)
68+
@Name(RetryUtils.NAME_INITIAL_RETRY_DURATION)
7469
@Description("Time taken for the first retry. Default is 5 seconds.")
7570
@Nullable
7671
@Macro
7772
private Integer initialRetryDuration;
7873

79-
@Name(NAME_MAX_RETRY_DURATION)
74+
@Name(RetryUtils.NAME_MAX_RETRY_DURATION)
8075
@Description("Maximum time in seconds retries can take. Default is 80 seconds.")
8176
@Nullable
8277
@Macro
8378
private Integer maxRetryDuration;
8479

85-
@Name(NAME_MAX_RETRY_COUNT)
80+
@Name(RetryUtils.NAME_MAX_RETRY_COUNT)
8681
@Description("Maximum number of retries allowed. Default is 5.")
8782
@Nullable
8883
@Macro
@@ -102,15 +97,15 @@ public String getPassword() {
10297
}
10398

10499
public Integer getInitialRetryDuration() {
105-
return initialRetryDuration == null ? DEFAULT_INITIAL_RETRY_DURATION_SECONDS : initialRetryDuration;
100+
return initialRetryDuration == null ? RetryUtils.DEFAULT_INITIAL_RETRY_DURATION_SECONDS : initialRetryDuration;
106101
}
107102

108103
public Integer getMaxRetryDuration() {
109-
return maxRetryDuration == null ? DEFAULT_MAX_RETRY_DURATION_SECONDS : maxRetryDuration;
104+
return maxRetryDuration == null ? RetryUtils.DEFAULT_MAX_RETRY_DURATION_SECONDS : maxRetryDuration;
110105
}
111106

112107
public Integer getMaxRetryCount() {
113-
return maxRetryCount == null ? DEFAULT_MAX_RETRY_COUNT : maxRetryCount;
108+
return maxRetryCount == null ? RetryUtils.DEFAULT_MAX_RETRY_COUNT : maxRetryCount;
114109
}
115110

116111
@Override

database-commons/src/main/java/io/cdap/plugin/db/source/AbstractDBSource.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -168,13 +168,14 @@ public Schema getSchema() throws SQLException {
168168
}
169169

170170
private Schema loadSchemaFromDB(Connection connection, String query) throws SQLException {
171-
Statement statement = RetryUtils.createStatementWithRetry((RetryPolicy<Statement>) retryPolicy, connection,
172-
getExternalDocumentationLink());
173-
statement.setMaxRows(1);
174-
String finalQuery = query.contains("$CONDITIONS") ? removeConditionsClause(query) : query;
175-
ResultSet resultSet = RetryUtils.executeQueryWithRetry((RetryPolicy<ResultSet>) retryPolicy, statement,
176-
finalQuery, getExternalDocumentationLink());
177-
return Schema.recordOf("outputSchema", getSchemaReader().getSchemaFields(resultSet));
171+
try (Statement statement = RetryUtils.createStatementWithRetry((RetryPolicy<Statement>) retryPolicy, connection,
172+
getExternalDocumentationLink())) {
173+
statement.setMaxRows(1);
174+
String finalQuery = query.contains("$CONDITIONS") ? removeConditionsClause(query) : query;
175+
ResultSet resultSet = RetryUtils.executeQueryWithRetry((RetryPolicy<ResultSet>) retryPolicy, statement,
176+
finalQuery, getExternalDocumentationLink());
177+
return Schema.recordOf("outputSchema", getSchemaReader().getSchemaFields(resultSet));
178+
}
178179
}
179180

180181
@VisibleForTesting

0 commit comments

Comments
 (0)