wanglijie95 commented on a change in pull request #11499:
URL: https://github.com/apache/flink/pull/11499#discussion_r415331203
##########
File path:
flink-connectors/flink-jdbc/src/main/java/org/apache/flink/api/java/io/jdbc/JDBCLookupFunction.java
##########
@@ -139,6 +139,14 @@ public void eval(Object... keys) {
for (int retry = 1; retry <= maxRetryTimes; retry++) {
try {
+ try {
Review comment:
Check whether connection is valid on each writes is expensive. How about
catching the "statement closed" exception (mentioned in FLINK-16681) and
solving it by creating a new connection.
##########
File path:
flink-connectors/flink-jdbc/src/main/java/org/apache/flink/api/java/io/jdbc/JDBCOutputFormat.java
##########
@@ -50,6 +50,8 @@
final JdbcInsertOptions insertOptions;
private final JdbcExecutionOptions batchOptions;
+ private static final int connectionCheckTimeout = 60;
Review comment:
I think the variable name should be `CONNECTION_CHECK_TIMEOUT`, because
it's static final variable.
##########
File path:
flink-connectors/flink-jdbc/src/main/java/org/apache/flink/api/java/io/jdbc/JDBCOutputFormat.java
##########
@@ -87,8 +89,12 @@ public void open(int taskNumber, int numTasks) throws
IOException {
}
@Override
- public void writeRecord(Row row) {
+ public void writeRecord(Row row) throws IOException{
try {
+ if (!connection.isValid(connectionCheckTimeout)) {
+ LOG.error("JDBC connection is closed,start to
open a new connection");
+ establishConnectionAndPreparedStatement();
Review comment:
Maybe you should close the connection and statement fisrt, and then
reestablish.
##########
File path:
flink-connectors/flink-jdbc/src/main/java/org/apache/flink/api/java/io/jdbc/JDBCLookupFunction.java
##########
@@ -139,6 +139,14 @@ public void eval(Object... keys) {
for (int retry = 1; retry <= maxRetryTimes; retry++) {
try {
+ try {
+ if
(!dbConn.isValid(connectionCheckTimeout)) {
+
establishConnectionAndPreparedStatement();
Review comment:
Maybe you should close the connection and statement fisrt, and then
reestablish.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]