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

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


The following commit(s) were added to refs/heads/master by this push:
     new 0c2bac12cd Prevent NPE in minion tasks (#15550)
0c2bac12cd is described below

commit 0c2bac12cd2a05265acb494c7bcc97147187c8c2
Author: Rekha Seethamraju <rek...@uber.com>
AuthorDate: Fri Apr 18 01:22:19 2025 +0530

    Prevent NPE in minion tasks (#15550)
---
 .../controller/api/resources/TableConfigsRestletResource.java     | 5 +++++
 .../helix/core/minion/PinotHelixTaskResourceManager.java          | 8 +++++++-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git 
a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/TableConfigsRestletResource.java
 
b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/TableConfigsRestletResource.java
index 82a9f164ea..b1cad6cd7b 100644
--- 
a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/TableConfigsRestletResource.java
+++ 
b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/TableConfigsRestletResource.java
@@ -37,6 +37,7 @@ import javax.inject.Inject;
 import javax.ws.rs.DELETE;
 import javax.ws.rs.DefaultValue;
 import javax.ws.rs.GET;
+import javax.ws.rs.NotFoundException;
 import javax.ws.rs.POST;
 import javax.ws.rs.PUT;
 import javax.ws.rs.Path;
@@ -161,6 +162,10 @@ public class TableConfigsRestletResource {
     try {
       tableName = DatabaseUtils.translateTableName(tableName, headers);
       Schema schema = _pinotHelixResourceManager.getTableSchema(tableName);
+      if (schema == null) {
+        throw new NotFoundException(
+            String.format("Schema does not exist for table %s Use POST to 
create it first.", tableName));
+      }
       TableConfig offlineTableConfig = 
_pinotHelixResourceManager.getOfflineTableConfig(tableName, false);
       TableConfig realtimeTableConfig = 
_pinotHelixResourceManager.getRealtimeTableConfig(tableName, false);
       TableConfigs config = new TableConfigs(tableName, schema, 
offlineTableConfig, realtimeTableConfig);
diff --git 
a/pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/minion/PinotHelixTaskResourceManager.java
 
b/pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/minion/PinotHelixTaskResourceManager.java
index bbbb3fcee2..9ea9bb7216 100644
--- 
a/pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/minion/PinotHelixTaskResourceManager.java
+++ 
b/pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/minion/PinotHelixTaskResourceManager.java
@@ -542,6 +542,7 @@ public class PinotHelixTaskResourceManager {
    */
   public synchronized Map<String, String> getTaskRuntimeConfig(String 
taskName) {
     JobConfig jobConfig = _taskDriver.getJobConfig(getHelixJobName(taskName));
+    Preconditions.checkArgument(jobConfig != null, "Task: %s does not exist", 
taskName);
     HashMap<String, String> configs = new HashMap<>();
     configs.put("ConcurrentTasksPerWorker", 
String.valueOf(jobConfig.getNumConcurrentTasksPerInstance()));
     configs.put("TaskTimeoutMs", 
String.valueOf(jobConfig.getTimeoutPerTask()));
@@ -961,7 +962,12 @@ public class PinotHelixTaskResourceManager {
    * @return Task type
    */
   private static String getTaskType(String name) {
-    return name.split(TASK_NAME_SEPARATOR)[1];
+    String[] parts = name.split(TASK_NAME_SEPARATOR);
+    if (parts.length < 2) {
+      throw new IllegalArgumentException(String.format("Invalid task name : 
%s. Missing separator %s",
+              name, TASK_NAME_SEPARATOR));
+    }
+    return parts[1];
   }
 
   public String getParentTaskName(String taskType, String taskName) {


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org
For additional commands, e-mail: commits-h...@pinot.apache.org

Reply via email to