Skip to content

Commit 4db86b4

Browse files
authored
Merge pull request #575 from cloudsufi/cherry-pick/9b368503054ab587861f65909f0c9c71a5793912
[🍒][PLUGIN-1873] Error Management AbstractDBAction
2 parents 85943f2 + 525cf2e commit 4db86b4

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

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

+15-1
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,15 @@
1616

1717
package io.cdap.plugin.db.action;
1818

19+
import io.cdap.cdap.etl.api.FailureCollector;
1920
import io.cdap.cdap.etl.api.PipelineConfigurer;
2021
import io.cdap.cdap.etl.api.action.Action;
2122
import io.cdap.cdap.etl.api.action.ActionContext;
23+
import io.cdap.plugin.common.db.DBErrorDetailsProvider;
2224
import io.cdap.plugin.util.DBUtils;
2325

2426
import java.sql.Driver;
27+
import java.sql.SQLException;
2528

2629
/**
2730
* Action that runs a db command.
@@ -40,7 +43,18 @@ public AbstractDBAction(QueryConfig config, Boolean enableAutoCommit) {
4043
public void run(ActionContext context) throws Exception {
4144
Class<? extends Driver> driverClass = context.loadPluginClass(JDBC_PLUGIN_ID);
4245
DBRun executeQuery = new DBRun(config, driverClass, enableAutoCommit);
43-
executeQuery.run();
46+
try {
47+
executeQuery.run();
48+
} catch (Exception e) {
49+
if (e instanceof SQLException) {
50+
DBErrorDetailsProvider dbe = new DBErrorDetailsProvider();
51+
throw dbe.getProgramFailureException((SQLException) e, null);
52+
}
53+
FailureCollector collector = context.getFailureCollector();
54+
collector.addFailure("Failed to execute query with message: " + e.getMessage(), null)
55+
.withStacktrace(e.getStackTrace());
56+
collector.getOrThrowException();
57+
}
4458
}
4559

4660
@Override

0 commit comments

Comments
 (0)