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

wlo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/gobblin.git


The following commit(s) were added to refs/heads/master by this push:
     new a28961370 [GOBBLIN-1906] Add null-check to 
`JobConfigurationUtils.putStateIntoConfiguration` to avoid 
`IllegalArgumentException` (#3770)
a28961370 is described below

commit a28961370ffbd41e740b9e6b9238b1c9d91ae6ac
Author: Kip Kohn <[email protected]>
AuthorDate: Mon Sep 18 13:27:13 2023 -0700

    [GOBBLIN-1906] Add null-check to 
`JobConfigurationUtils.putStateIntoConfiguration` to avoid 
`IllegalArgumentException` (#3770)
---
 .../main/java/org/apache/gobblin/writer/GobblinBaseOrcWriter.java    | 5 ++---
 .../java/org/apache/gobblin/runtime/mapreduce/MRJobLauncher.java     | 3 ++-
 .../src/main/java/org/apache/gobblin/util/JobConfigurationUtils.java | 5 ++++-
 3 files changed, 8 insertions(+), 5 deletions(-)

diff --git 
a/gobblin-modules/gobblin-orc/src/main/java/org/apache/gobblin/writer/GobblinBaseOrcWriter.java
 
b/gobblin-modules/gobblin-orc/src/main/java/org/apache/gobblin/writer/GobblinBaseOrcWriter.java
index ae671eeb3..739b84374 100644
--- 
a/gobblin-modules/gobblin-orc/src/main/java/org/apache/gobblin/writer/GobblinBaseOrcWriter.java
+++ 
b/gobblin-modules/gobblin-orc/src/main/java/org/apache/gobblin/writer/GobblinBaseOrcWriter.java
@@ -39,6 +39,7 @@ import lombok.extern.slf4j.Slf4j;
 
 import org.apache.gobblin.configuration.State;
 import org.apache.gobblin.state.ConstructState;
+import org.apache.gobblin.util.JobConfigurationUtils;
 
 /**
  * A wrapper for ORC-core writer without dependency on Hive SerDe library.
@@ -117,9 +118,7 @@ public abstract class GobblinBaseOrcWriter<S, D> extends 
FsDataWriter<D> {
     // Create file-writer
     this.writerConfig = new Configuration();
     // Populate job Configurations into Conf as well so that configurations 
related to ORC writer can be tuned easily.
-    for (Object key : properties.getProperties().keySet()) {
-      this.writerConfig.set((String) key, properties.getProp((String) key));
-    }
+    JobConfigurationUtils.putStateIntoConfiguration(properties, 
this.writerConfig);
     OrcFile.WriterOptions options = 
OrcFile.writerOptions(properties.getProperties(), this.writerConfig);
     options.setSchema(typeDescription);
 
diff --git 
a/gobblin-runtime/src/main/java/org/apache/gobblin/runtime/mapreduce/MRJobLauncher.java
 
b/gobblin-runtime/src/main/java/org/apache/gobblin/runtime/mapreduce/MRJobLauncher.java
index 1302cdab2..cd34fe1b5 100644
--- 
a/gobblin-runtime/src/main/java/org/apache/gobblin/runtime/mapreduce/MRJobLauncher.java
+++ 
b/gobblin-runtime/src/main/java/org/apache/gobblin/runtime/mapreduce/MRJobLauncher.java
@@ -316,7 +316,8 @@ public class MRJobLauncher extends AbstractJobLauncher {
 
       prepareHadoopJob(workUnits);
       if (this.shouldPersistWorkUnitsThenCancel) {
-        LOG.info("Cancelling job after persisting workunits beneath: " + 
this.jobInputPath);
+        // NOTE: `warn` level is hack for including path among automatic 
troubleshooter 'issues'
+        LOG.warn("Cancelling job after persisting workunits beneath: " + 
this.jobInputPath);
         jobState.setState(JobState.RunningState.CANCELLED);
         return;
       }
diff --git 
a/gobblin-utility/src/main/java/org/apache/gobblin/util/JobConfigurationUtils.java
 
b/gobblin-utility/src/main/java/org/apache/gobblin/util/JobConfigurationUtils.java
index 957444cac..aad8d6aab 100644
--- 
a/gobblin-utility/src/main/java/org/apache/gobblin/util/JobConfigurationUtils.java
+++ 
b/gobblin-utility/src/main/java/org/apache/gobblin/util/JobConfigurationUtils.java
@@ -92,7 +92,10 @@ public class JobConfigurationUtils {
    */
   public static void putStateIntoConfiguration(State state, Configuration 
configuration) {
     for (String key : state.getPropertyNames()) {
-      configuration.set(key, state.getProp(key));
+      String value = state.getProp(key);
+      if (value != null) { // ignore `null`, to prevent 
`IllegalArgumentException` from `Configuration::set`
+        configuration.set(key, value);
+      }
     }
   }
 

Reply via email to