You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ma...@apache.org on 2022/03/21 18:01:00 UTC

[nifi] branch main updated: NIFI-9800: Unwrap SQLException in PutDatabaseRecord when table does not exist

This is an automated email from the ASF dual-hosted git repository.

mattyb149 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git


The following commit(s) were added to refs/heads/main by this push:
     new c84f438  NIFI-9800: Unwrap SQLException in PutDatabaseRecord when table does not exist
c84f438 is described below

commit c84f43878205726a4e7b891ebd64068516bcfe68
Author: Matthew Burgess <ma...@apache.org>
AuthorDate: Wed Mar 16 11:12:07 2022 -0400

    NIFI-9800: Unwrap SQLException in PutDatabaseRecord when table does not exist
    
    Signed-off-by: Matthew Burgess <ma...@apache.org>
    
    This closes #5871
---
 .../processors/standard/PutDatabaseRecord.java     | 31 +++++++++++++++-------
 1 file changed, 21 insertions(+), 10 deletions(-)

diff --git a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutDatabaseRecord.java b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutDatabaseRecord.java
index 4756d80..34d90ec 100644
--- a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutDatabaseRecord.java
+++ b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutDatabaseRecord.java
@@ -604,17 +604,28 @@ public class PutDatabaseRecord extends AbstractProcessor {
         }
 
         final SchemaKey schemaKey = new PutDatabaseRecord.SchemaKey(catalog, schemaName, tableName);
-        final TableSchema tableSchema = schemaCache.get(schemaKey, key -> {
-            try {
-                final TableSchema schema = TableSchema.from(con, catalog, schemaName, tableName, settings.translateFieldNames, updateKeys, log);
-                getLogger().debug("Fetched Table Schema {} for table name {}", schema, tableName);
-                return schema;
-            } catch (SQLException e) {
-                throw new ProcessException(e);
+        final TableSchema tableSchema;
+        try {
+            tableSchema = schemaCache.get(schemaKey, key -> {
+                try {
+                    final TableSchema schema = TableSchema.from(con, catalog, schemaName, tableName, settings.translateFieldNames, updateKeys, log);
+                    getLogger().debug("Fetched Table Schema {} for table name {}", schema, tableName);
+                    return schema;
+                } catch (SQLException e) {
+                    // Wrap this in a runtime exception, it is unwrapped in the outer try
+                    throw new ProcessException(e);
+                }
+            });
+            if (tableSchema == null) {
+                throw new IllegalArgumentException("No table schema specified!");
+            }
+        } catch (ProcessException pe) {
+            // Unwrap the SQLException if one occurred
+            if (pe.getCause() instanceof SQLException) {
+                throw (SQLException) pe.getCause();
+            } else {
+                throw pe;
             }
-        });
-        if (tableSchema == null) {
-            throw new IllegalArgumentException("No table schema specified!");
         }
 
         // build the fully qualified table name