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

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


The following commit(s) were added to refs/heads/master by this push:
     new 28914bbab8 Fix issue with long data source names (#14620)
28914bbab8 is described below

commit 28914bbab82480f33a345913a30c32321d36fc37
Author: George Shiqi Wu <[email protected]>
AuthorDate: Mon Jul 24 11:45:10 2023 -0400

    Fix issue with long data source names (#14620)
    
    * Fix issue with long data source names
    
    * Use the regular library
    
    * fix overlord utils test
---
 .../k8s/overlord/KubernetesPeonLifecycle.java      |  2 +-
 .../druid/k8s/overlord/common/K8sTaskId.java       | 14 ++---
 .../overlord/common/KubernetesOverlordUtils.java   |  8 +++
 .../k8s/overlord/common/KubernetesPeonClient.java  | 37 +++++++-------
 .../k8s/overlord/taskadapter/K8sTaskAdapter.java   |  4 +-
 .../taskadapter/PodTemplateTaskAdapter.java        |  2 +-
 .../k8s/overlord/KubernetesPeonLifecycleTest.java  |  8 +--
 .../druid/k8s/overlord/common/K8sTaskIdTest.java   |  6 +--
 .../common/KubernetesOverlordUtilsTest.java        | 16 ++++++
 .../overlord/common/KubernetesPeonClientTest.java  | 59 +++++++++++-----------
 .../DruidPeonClientIntegrationTest.java            |  2 +-
 .../test/resources/baseJobWithoutAnnotations.yaml  |  4 +-
 .../test/resources/expectedEphemeralOutput.yaml    |  4 +-
 .../resources/expectedMultiContainerOutput.yaml    |  4 +-
 .../expectedMultiContainerOutputOrder.yaml         |  4 +-
 .../src/test/resources/expectedNoopJob.yaml        |  2 +-
 .../src/test/resources/expectedNoopJobLongIds.yaml |  2 +-
 .../test/resources/expectedNoopJobTlsEnabled.yaml  |  2 +-
 .../src/test/resources/expectedPodSpec.yaml        |  4 +-
 .../resources/expectedSingleContainerOutput.yaml   |  4 +-
 20 files changed, 106 insertions(+), 82 deletions(-)

diff --git 
a/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/KubernetesPeonLifecycle.java
 
b/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/KubernetesPeonLifecycle.java
index be8710e0da..fadad48e12 100644
--- 
a/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/KubernetesPeonLifecycle.java
+++ 
b/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/KubernetesPeonLifecycle.java
@@ -226,7 +226,7 @@ public class KubernetesPeonLifecycle
       return TaskLocation.unknown();
     }
 
-    Optional<Pod> maybePod = kubernetesClient.getPeonPod(taskId);
+    Optional<Pod> maybePod = 
kubernetesClient.getPeonPod(taskId.getK8sJobName());
     if (!maybePod.isPresent()) {
       return TaskLocation.unknown();
     }
diff --git 
a/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/common/K8sTaskId.java
 
b/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/common/K8sTaskId.java
index a6e54704c2..ba41b5f06c 100644
--- 
a/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/common/K8sTaskId.java
+++ 
b/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/common/K8sTaskId.java
@@ -26,7 +26,7 @@ import java.util.Objects;
 public class K8sTaskId
 {
 
-  private final String k8sTaskId;
+  private final String k8sJobName;
   private final String originalTaskId;
 
   public K8sTaskId(Task task)
@@ -37,12 +37,12 @@ public class K8sTaskId
   public K8sTaskId(String taskId)
   {
     this.originalTaskId = taskId;
-    this.k8sTaskId = KubernetesOverlordUtils.convertTaskIdToK8sLabel(taskId);
+    this.k8sJobName = KubernetesOverlordUtils.convertTaskIdToJobName(taskId);
   }
 
-  public String getK8sTaskId()
+  public String getK8sJobName()
   {
-    return k8sTaskId;
+    return k8sJobName;
   }
 
   public String getOriginalTaskId()
@@ -60,18 +60,18 @@ public class K8sTaskId
       return false;
     }
     K8sTaskId k8sTaskId1 = (K8sTaskId) o;
-    return k8sTaskId.equals(k8sTaskId1.k8sTaskId) && 
originalTaskId.equals(k8sTaskId1.originalTaskId);
+    return k8sJobName.equals(k8sTaskId1.k8sJobName) && 
originalTaskId.equals(k8sTaskId1.originalTaskId);
   }
 
   @Override
   public int hashCode()
   {
-    return Objects.hash(k8sTaskId, originalTaskId);
+    return Objects.hash(k8sJobName, originalTaskId);
   }
 
   @Override
   public String toString()
   {
-    return "[ " + originalTaskId + ", " + k8sTaskId + "]";
+    return "[ " + originalTaskId + ", " + k8sJobName + "]";
   }
 }
diff --git 
a/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/common/KubernetesOverlordUtils.java
 
b/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/common/KubernetesOverlordUtils.java
index 2116aaa0d5..5aa7122b69 100644
--- 
a/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/common/KubernetesOverlordUtils.java
+++ 
b/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/common/KubernetesOverlordUtils.java
@@ -19,9 +19,11 @@
 
 package org.apache.druid.k8s.overlord.common;
 
+import com.google.common.hash.Hashing;
 import org.apache.commons.lang3.RegExUtils;
 import org.apache.commons.lang3.StringUtils;
 
+import java.nio.charset.StandardCharsets;
 import java.util.Locale;
 import java.util.regex.Pattern;
 
@@ -43,4 +45,10 @@ public class KubernetesOverlordUtils
     return taskId == null ? "" : 
StringUtils.left(RegExUtils.replaceAll(taskId, K8S_TASK_ID_PATTERN, "")
         .toLowerCase(Locale.ENGLISH), 63);
   }
+
+  public static String convertTaskIdToJobName(String taskId)
+  {
+    return taskId == null ? "" : 
StringUtils.left(RegExUtils.replaceAll(taskId, K8S_TASK_ID_PATTERN, "")
+        .toLowerCase(Locale.ENGLISH), 30) + "-" + 
Hashing.murmur3_128().hashString(taskId, StandardCharsets.UTF_8);
+  }
 }
diff --git 
a/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/common/KubernetesPeonClient.java
 
b/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/common/KubernetesPeonClient.java
index 1ed8eae128..4ef3a7bdaf 100644
--- 
a/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/common/KubernetesPeonClient.java
+++ 
b/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/common/KubernetesPeonClient.java
@@ -56,10 +56,10 @@ public class KubernetesPeonClient
     // launch job
     return clientApi.executeRequest(client -> {
       client.batch().v1().jobs().inNamespace(namespace).resource(job).create();
-      K8sTaskId taskId = new K8sTaskId(job.getMetadata().getName());
-      log.info("Successfully submitted job: %s ... waiting for job to launch", 
taskId);
+      String jobName = job.getMetadata().getName();
+      log.info("Successfully submitted job: %s ... waiting for job to launch", 
jobName);
       // wait until the pod is running or complete or failed, any of those is 
fine
-      Pod mainPod = getPeonPodWithRetries(taskId);
+      Pod mainPod = getPeonPodWithRetries(jobName);
       Pod result = 
client.pods().inNamespace(namespace).withName(mainPod.getMetadata().getName())
                          .waitUntilCondition(pod -> {
                            if (pod == null) {
@@ -68,7 +68,7 @@ public class KubernetesPeonClient
                            return pod.getStatus() != null && 
pod.getStatus().getPodIP() != null;
                          }, howLong, timeUnit);
       long duration = System.currentTimeMillis() - start;
-      log.info("Took task %s %d ms for pod to startup", taskId, duration);
+      log.info("Took task %s %d ms for pod to startup", jobName, duration);
       return result;
     });
   }
@@ -80,7 +80,7 @@ public class KubernetesPeonClient
                       .v1()
                       .jobs()
                       .inNamespace(namespace)
-                      .withName(taskId.getK8sTaskId())
+                      .withName(taskId.getK8sJobName())
                       .waitUntilCondition(
                           x -> (x == null) || (x.getStatus() != null && 
x.getStatus().getActive() == null
                           && (x.getStatus().getFailed() != null || 
x.getStatus().getSucceeded() != null)),
@@ -106,7 +106,7 @@ public class KubernetesPeonClient
                                                                  .v1()
                                                                  .jobs()
                                                                  
.inNamespace(namespace)
-                                                                 
.withName(taskId.getK8sTaskId())
+                                                                 
.withName(taskId.getK8sJobName())
                                                                  
.delete().isEmpty());
       if (result) {
         log.info("Cleaned up k8s task: %s", taskId);
@@ -128,7 +128,7 @@ public class KubernetesPeonClient
           .v1()
           .jobs()
           .inNamespace(namespace)
-          .withName(taskId.getK8sTaskId())
+          .withName(taskId.getK8sJobName())
           .inContainer("main")
           .watchLog();
       if (logWatch == null) {
@@ -150,7 +150,7 @@ public class KubernetesPeonClient
                                    .v1()
                                    .jobs()
                                    .inNamespace(namespace)
-                                   .withName(taskId.getK8sTaskId())
+                                   .withName(taskId.getK8sJobName())
                                    .inContainer("main")
                                    .getLogInputStream();
       if (logStream == null) {
@@ -212,47 +212,46 @@ public class KubernetesPeonClient
     return toDelete;
   }
 
-  public Optional<Pod> getPeonPod(K8sTaskId taskId)
+  public Optional<Pod> getPeonPod(String jobName)
   {
-    return clientApi.executeRequest(client -> getPeonPod(client, taskId));
+    return clientApi.executeRequest(client -> getPeonPod(client, jobName));
   }
 
-  private Optional<Pod> getPeonPod(KubernetesClient client, K8sTaskId taskId)
+  private Optional<Pod> getPeonPod(KubernetesClient client, String jobName)
   {
     List<Pod> pods = client.pods()
         .inNamespace(namespace)
-        .withLabel("job-name", taskId.getK8sTaskId())
+        .withLabel("job-name", jobName)
         .list()
         .getItems();
     return pods.isEmpty() ? Optional.absent() : Optional.of(pods.get(0));
   }
 
-  public Pod getPeonPodWithRetries(K8sTaskId taskId)
+  public Pod getPeonPodWithRetries(String jobName)
   {
-    return clientApi.executeRequest(client -> getPeonPodWithRetries(client, 
taskId, 5, RetryUtils.DEFAULT_MAX_TRIES));
+    return clientApi.executeRequest(client -> getPeonPodWithRetries(client, 
jobName, 5, RetryUtils.DEFAULT_MAX_TRIES));
   }
 
   @VisibleForTesting
-  Pod getPeonPodWithRetries(KubernetesClient client, K8sTaskId taskId, int 
quietTries, int maxTries)
+  Pod getPeonPodWithRetries(KubernetesClient client, String jobName, int 
quietTries, int maxTries)
   {
-    String k8sTaskId = taskId.getK8sTaskId();
     try {
       return RetryUtils.retry(
           () -> {
-            Optional<Pod> maybePod = getPeonPod(client, taskId);
+            Optional<Pod> maybePod = getPeonPod(client, jobName);
             if (maybePod.isPresent()) {
               return maybePod.get();
             }
             throw new KubernetesResourceNotFoundException(
                 "K8s pod with label: job-name="
-                + k8sTaskId
+                + jobName
                 + " not found");
           },
           DruidK8sConstants.IS_TRANSIENT, quietTries, maxTries
       );
     }
     catch (Exception e) {
-      throw new KubernetesResourceNotFoundException("K8s pod with label: 
job-name=" + k8sTaskId + " not found");
+      throw new KubernetesResourceNotFoundException("K8s pod with label: 
job-name=" + jobName + " not found");
     }
   }
 }
diff --git 
a/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/taskadapter/K8sTaskAdapter.java
 
b/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/taskadapter/K8sTaskAdapter.java
index bb41dcae14..712bc1a47e 100644
--- 
a/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/taskadapter/K8sTaskAdapter.java
+++ 
b/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/taskadapter/K8sTaskAdapter.java
@@ -149,7 +149,7 @@ public abstract class K8sTaskAdapter implements TaskAdapter
   {
     return new JobBuilder()
         .withNewMetadata()
-        .withName(k8sTaskId.getK8sTaskId())
+        .withName(k8sTaskId.getK8sJobName())
         .addToLabels(labels)
         .addToAnnotations(annotations)
         .endMetadata()
@@ -309,7 +309,7 @@ public abstract class K8sTaskAdapter implements TaskAdapter
     // clean up the podSpec
     podSpec.setNodeName(null);
     podSpec.setRestartPolicy("Never");
-    podSpec.setHostname(k8sTaskId.getK8sTaskId());
+    podSpec.setHostname(k8sTaskId.getK8sJobName());
     
podSpec.setTerminationGracePeriodSeconds(taskRunnerConfig.getGraceTerminationPeriodSeconds());
 
     PodTemplateSpec podTemplate = new PodTemplateSpec();
diff --git 
a/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/taskadapter/PodTemplateTaskAdapter.java
 
b/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/taskadapter/PodTemplateTaskAdapter.java
index ded61459cf..661f5fb568 100644
--- 
a/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/taskadapter/PodTemplateTaskAdapter.java
+++ 
b/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/taskadapter/PodTemplateTaskAdapter.java
@@ -124,7 +124,7 @@ public class PodTemplateTaskAdapter implements TaskAdapter
 
     return new JobBuilder()
         .withNewMetadata()
-        .withName(new K8sTaskId(task).getK8sTaskId())
+        .withName(new K8sTaskId(task).getK8sJobName())
         .addToLabels(getJobLabels(taskRunnerConfig, task))
         .addToAnnotations(getJobAnnotations(taskRunnerConfig, task))
         .endMetadata()
diff --git 
a/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/KubernetesPeonLifecycleTest.java
 
b/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/KubernetesPeonLifecycleTest.java
index 7035e70598..9887c49760 100644
--- 
a/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/KubernetesPeonLifecycleTest.java
+++ 
b/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/KubernetesPeonLifecycleTest.java
@@ -576,7 +576,7 @@ public class KubernetesPeonLifecycleTest extends 
EasyMockSupport
     KubernetesPeonLifecycle peonLifecycle = new KubernetesPeonLifecycle(task, 
kubernetesClient, taskLogs, mapper);
     setPeonLifecycleState(peonLifecycle, 
KubernetesPeonLifecycle.State.RUNNING);
 
-    
EasyMock.expect(kubernetesClient.getPeonPod(k8sTaskId)).andReturn(Optional.absent());
+    
EasyMock.expect(kubernetesClient.getPeonPod(k8sTaskId.getK8sJobName())).andReturn(Optional.absent());
 
     replayAll();
 
@@ -598,7 +598,7 @@ public class KubernetesPeonLifecycleTest extends 
EasyMockSupport
         .endMetadata()
         .build();
 
-    
EasyMock.expect(kubernetesClient.getPeonPod(k8sTaskId)).andReturn(Optional.of(pod));
+    
EasyMock.expect(kubernetesClient.getPeonPod(k8sTaskId.getK8sJobName())).andReturn(Optional.of(pod));
 
     replayAll();
 
@@ -623,7 +623,7 @@ public class KubernetesPeonLifecycleTest extends 
EasyMockSupport
         .endStatus()
         .build();
 
-    
EasyMock.expect(kubernetesClient.getPeonPod(k8sTaskId)).andReturn(Optional.of(pod));
+    
EasyMock.expect(kubernetesClient.getPeonPod(k8sTaskId.getK8sJobName())).andReturn(Optional.of(pod));
 
     replayAll();
 
@@ -653,7 +653,7 @@ public class KubernetesPeonLifecycleTest extends 
EasyMockSupport
         .endStatus()
         .build();
 
-    
EasyMock.expect(kubernetesClient.getPeonPod(k8sTaskId)).andReturn(Optional.of(pod));
+    
EasyMock.expect(kubernetesClient.getPeonPod(k8sTaskId.getK8sJobName())).andReturn(Optional.of(pod));
 
     replayAll();
 
diff --git 
a/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/common/K8sTaskIdTest.java
 
b/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/common/K8sTaskIdTest.java
index d19a9e3564..0ca4811e40 100644
--- 
a/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/common/K8sTaskIdTest.java
+++ 
b/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/common/K8sTaskIdTest.java
@@ -30,15 +30,15 @@ public class K8sTaskIdTest
   public void testModifyingTaskIDToBeK8sCompliant()
   {
     String original = 
"coordinator-issued_compact_k8smetrics_aeifmefd_2022-08-18T15:33:26.094Z";
-    String result = new K8sTaskId(original).getK8sTaskId();
-    
assertEquals("coordinatorissuedcompactk8smetricsaeifmefd20220818t153326094z", 
result);
+    String result = new K8sTaskId(original).getK8sJobName();
+    
assertEquals("coordinatorissuedcompactk8smet-2e2c1862cb7ad1d01f4794b27a4438b0", 
result);
   }
 
   @Test
   public void testEquals()
   {
     EqualsVerifier.forClass(K8sTaskId.class)
-                  .withNonnullFields("k8sTaskId", "originalTaskId")
+                  .withNonnullFields("k8sJobName", "originalTaskId")
                   .usingGetClass()
                   .verify();
   }
diff --git 
a/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/common/KubernetesOverlordUtilsTest.java
 
b/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/common/KubernetesOverlordUtilsTest.java
index 707112d14e..5254e0fbe6 100644
--- 
a/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/common/KubernetesOverlordUtilsTest.java
+++ 
b/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/common/KubernetesOverlordUtilsTest.java
@@ -59,4 +59,20 @@ public class KubernetesOverlordUtilsTest
   {
     Assert.assertEquals("", 
KubernetesOverlordUtils.convertTaskIdToK8sLabel(null));
   }
+
+  @Test
+  public void test_stripJobName()
+  {
+    
Assert.assertEquals("apiissuedkillwikipedianewbalhn-8916017dfd5469fe9a8881b1035497a2",
 KubernetesOverlordUtils.convertTaskIdToJobName(
+        
"api-issued_kill_wikipedia_new_balhnoib_1000-01-01T00:00:00.000Z_2023-05-14T00:00:00.000Z_2023-05-15T17:28:42.526Z"
+    ));
+  }
+
+  @Test
+  public void test_stripJobName_avoidDuplicatesWithLongDataSourceName()
+  {
+    String jobName1 = 
KubernetesOverlordUtils.convertTaskIdToJobName("coordinator-issued_compact_1234_telemetry_wikipedia_geteditfailuresinnorthamerica_agg_summ_116_pcgkebcl_2023-07-19T16:53:11.416Z");
+    String jobName2 = 
KubernetesOverlordUtils.convertTaskIdToJobName("coordinator-issued_compact_1234_telemetry_wikipedia_geteditfailuresinnorthamerica_agg_summ_117_pcgkebcl_2023-07-19T16:53:11.416Z");
+    Assert.assertNotEquals(jobName1, jobName2);
+  }
 }
diff --git 
a/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/common/KubernetesPeonClientTest.java
 
b/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/common/KubernetesPeonClientTest.java
index a8be904982..f72ebef1f6 100644
--- 
a/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/common/KubernetesPeonClientTest.java
+++ 
b/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/common/KubernetesPeonClientTest.java
@@ -46,6 +46,7 @@ public class KubernetesPeonClientTest
 {
   private static final String ID = "id";
   private static final String JOB_NAME = ID;
+  private static final String KUBERNETES_JOB_NAME = 
KubernetesOverlordUtils.convertTaskIdToJobName(JOB_NAME);
   private static final String POD_NAME = "name";
   private static final String NAMESPACE = "namespace";
 
@@ -66,14 +67,14 @@ public class KubernetesPeonClientTest
   {
     Job job = new JobBuilder()
         .withNewMetadata()
-        .withName(JOB_NAME)
+        .withName(KUBERNETES_JOB_NAME)
         .endMetadata()
         .build();
 
     Pod pod = new PodBuilder()
         .withNewMetadata()
         .withName(POD_NAME)
-        .addToLabels("job-name", JOB_NAME)
+        .addToLabels("job-name", KUBERNETES_JOB_NAME)
         .endMetadata()
         .withNewStatus()
         .withPodIP("ip")
@@ -92,12 +93,12 @@ public class KubernetesPeonClientTest
   {
     Job job = new JobBuilder()
         .withNewMetadata()
-        .withName(JOB_NAME)
+        .withName(KUBERNETES_JOB_NAME)
         .endMetadata()
         .build();
 
     server.expect().get()
-        
.withPath("/api/v1/namespaces/namespace/pods?labelSelector=job-name%3Did")
+        
.withPath("/api/v1/namespaces/namespace/pods?labelSelector=job-name%3D" + 
KUBERNETES_JOB_NAME)
         .andReturn(HttpURLConnection.HTTP_OK, new PodListBuilder()
             .addNewItem()
             .withNewMetadata()
@@ -119,7 +120,7 @@ public class KubernetesPeonClientTest
   {
     Job job = new JobBuilder()
         .withNewMetadata()
-        .withName(JOB_NAME)
+        .withName(KUBERNETES_JOB_NAME)
         .endMetadata()
         .withNewStatus()
         .withActive(null)
@@ -144,7 +145,7 @@ public class KubernetesPeonClientTest
   {
     Job job = new JobBuilder()
         .withNewMetadata()
-        .withName(JOB_NAME)
+        .withName(KUBERNETES_JOB_NAME)
         .endMetadata()
         .withNewStatus()
         .withActive(null)
@@ -182,7 +183,7 @@ public class KubernetesPeonClientTest
   {
     Job job = new JobBuilder()
         .withNewMetadata()
-        .withName(JOB_NAME)
+        .withName(KUBERNETES_JOB_NAME)
         .endMetadata()
         .build();
 
@@ -208,7 +209,7 @@ public class KubernetesPeonClientTest
 
     Job job = new JobBuilder()
         .withNewMetadata()
-        .withName(JOB_NAME)
+        .withName(KUBERNETES_JOB_NAME)
         .endMetadata()
         .build();
 
@@ -217,7 +218,7 @@ public class KubernetesPeonClientTest
     Assertions.assertTrue(instance.deletePeonJob(new K8sTaskId(ID)));
 
     Assertions.assertNotNull(
-        client.batch().v1().jobs().inNamespace(NAMESPACE).withName(ID).get()
+        
client.batch().v1().jobs().inNamespace(NAMESPACE).withName(KUBERNETES_JOB_NAME).get()
     );
   }
 
@@ -237,10 +238,10 @@ public class KubernetesPeonClientTest
   void test_getPeonLogs_withJob_returnsInputStreamInOptional()
   {
     server.expect().get()
-        .withPath("/apis/batch/v1/namespaces/namespace/jobs/id")
+        .withPath("/apis/batch/v1/namespaces/namespace/jobs/" + 
KUBERNETES_JOB_NAME)
         .andReturn(HttpURLConnection.HTTP_OK, new JobBuilder()
             .withNewMetadata()
-            .withName(JOB_NAME)
+            .withName(KUBERNETES_JOB_NAME)
             .withUid("uid")
             .endMetadata()
             .withNewSpec()
@@ -289,7 +290,7 @@ public class KubernetesPeonClientTest
   {
     Job job = new JobBuilder()
         .withNewMetadata()
-        .withName(JOB_NAME)
+        .withName(KUBERNETES_JOB_NAME)
         .endMetadata()
         .build();
 
@@ -311,7 +312,7 @@ public class KubernetesPeonClientTest
   {
     Job job = new JobBuilder()
         .withNewMetadata()
-        .withName(JOB_NAME)
+        .withName(KUBERNETES_JOB_NAME)
         .addToLabels("druid.k8s.peons", "true")
         .endMetadata()
         .build();
@@ -342,7 +343,7 @@ public class KubernetesPeonClientTest
   {
     Job job = new JobBuilder()
         .withNewMetadata()
-        .withName(JOB_NAME)
+        .withName(KUBERNETES_JOB_NAME)
         .endMetadata()
         .withNewStatus()
         .withActive(1)
@@ -361,7 +362,7 @@ public class KubernetesPeonClientTest
   {
     Job job = new JobBuilder()
         .withNewMetadata()
-        .withName(JOB_NAME)
+        .withName(KUBERNETES_JOB_NAME)
         .addToLabels("druid.k8s.peons", "true")
         .endMetadata()
         .withNewStatus()
@@ -381,7 +382,7 @@ public class KubernetesPeonClientTest
   {
     Job job = new JobBuilder()
         .withNewMetadata()
-        .withName(JOB_NAME)
+        .withName(KUBERNETES_JOB_NAME)
         .addToLabels("druid.k8s.peons", "true")
         .endMetadata()
         .withNewStatus()
@@ -401,7 +402,7 @@ public class KubernetesPeonClientTest
   {
     Job activeJob = new JobBuilder()
         .withNewMetadata()
-        .withName(StringUtils.format("%s-active", JOB_NAME))
+        .withName(StringUtils.format("%s-active", KUBERNETES_JOB_NAME))
         .endMetadata()
         .withNewStatus()
         .withActive(1)
@@ -410,7 +411,7 @@ public class KubernetesPeonClientTest
 
     Job deletableJob = new JobBuilder()
         .withNewMetadata()
-        .withName(StringUtils.format("%s-deleteable", JOB_NAME))
+        .withName(StringUtils.format("%s-deleteable", KUBERNETES_JOB_NAME))
         .addToLabels("druid.k8s.peons", "true")
         .endMetadata()
         .withNewStatus()
@@ -420,7 +421,7 @@ public class KubernetesPeonClientTest
 
     Job undeletableJob = new JobBuilder()
         .withNewMetadata()
-        .withName(StringUtils.format("%s-undeletable", JOB_NAME))
+        .withName(StringUtils.format("%s-undeletable", KUBERNETES_JOB_NAME))
         .addToLabels("druid.k8s.peons", "true")
         .endMetadata()
         .withNewStatus()
@@ -443,13 +444,13 @@ public class KubernetesPeonClientTest
     Pod pod = new PodBuilder()
         .withNewMetadata()
         .withName(POD_NAME)
-        .addToLabels("job-name", JOB_NAME)
+        .addToLabels("job-name", KUBERNETES_JOB_NAME)
         .endMetadata()
         .build();
 
     client.pods().inNamespace(NAMESPACE).resource(pod).create();
 
-    Optional<Pod> maybePod = instance.getPeonPod(new K8sTaskId(ID));
+    Optional<Pod> maybePod = instance.getPeonPod(KUBERNETES_JOB_NAME);
 
     Assertions.assertTrue(maybePod.isPresent());
   }
@@ -457,7 +458,7 @@ public class KubernetesPeonClientTest
   @Test
   void test_getPeonPod_withoutPod_returnsEmptyOptional()
   {
-    Optional<Pod> maybePod = instance.getPeonPod(new K8sTaskId(ID));
+    Optional<Pod> maybePod = instance.getPeonPod(KUBERNETES_JOB_NAME);
     Assertions.assertFalse(maybePod.isPresent());
   }
 
@@ -465,23 +466,23 @@ public class KubernetesPeonClientTest
   void test_getPeonPodWithRetries_withPod_returnsPod()
   {
     server.expect().get()
-        
.withPath("/api/v1/namespaces/namespace/pods?labelSelector=job-name%3Did")
+        
.withPath("/api/v1/namespaces/namespace/pods?labelSelector=job-name%3D" + 
KUBERNETES_JOB_NAME)
         .andReturn(HttpURLConnection.HTTP_OK, new PodListBuilder().build())
         .once();
 
     server.expect().get()
-        
.withPath("/api/v1/namespaces/namespace/pods?labelSelector=job-name%3Did")
+        
.withPath("/api/v1/namespaces/namespace/pods?labelSelector=job-name%3D" + 
KUBERNETES_JOB_NAME)
         .andReturn(HttpURLConnection.HTTP_OK, new PodListBuilder()
             .addNewItem()
             .withNewMetadata()
             .withName(POD_NAME)
-            .addToLabels("job-name", JOB_NAME)
+            .addToLabels("job-name", KUBERNETES_JOB_NAME)
             .endMetadata()
             .endItem()
             .build()
         ).once();
 
-    Pod pod = instance.getPeonPodWithRetries(new K8sTaskId(ID));
+    Pod pod = instance.getPeonPodWithRetries(new 
K8sTaskId(ID).getK8sJobName());
 
     Assertions.assertNotNull(pod);
   }
@@ -491,7 +492,7 @@ public class KubernetesPeonClientTest
   {
     Assertions.assertThrows(
         KubernetesResourceNotFoundException.class,
-        () -> instance.getPeonPodWithRetries(clientApi.getClient(), new 
K8sTaskId(ID), 1, 1),
+        () -> instance.getPeonPodWithRetries(clientApi.getClient(), new 
K8sTaskId(ID).getK8sJobName(), 1, 1),
         StringUtils.format("K8s pod with label: job-name=%s not found", ID)
     );
   }
@@ -500,10 +501,10 @@ public class KubernetesPeonClientTest
   void test_getPeonLogsWatcher_withJob_returnsWatchLogInOptional()
   {
     server.expect().get()
-        .withPath("/apis/batch/v1/namespaces/namespace/jobs/id")
+        .withPath("/apis/batch/v1/namespaces/namespace/jobs/" + 
KUBERNETES_JOB_NAME)
         .andReturn(HttpURLConnection.HTTP_OK, new JobBuilder()
             .withNewMetadata()
-            .withName(JOB_NAME)
+            .withName(KUBERNETES_JOB_NAME)
             .withUid("uid")
             .endMetadata()
             .withNewSpec()
diff --git 
a/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/taskadapter/DruidPeonClientIntegrationTest.java
 
b/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/taskadapter/DruidPeonClientIntegrationTest.java
index ebec69dc11..327e4276d1 100644
--- 
a/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/taskadapter/DruidPeonClientIntegrationTest.java
+++ 
b/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/taskadapter/DruidPeonClientIntegrationTest.java
@@ -159,7 +159,7 @@ public class DruidPeonClientIntegrationTest
 
     // now copy the task.json file from the pod and make sure its the same as 
our task.json we expected
     Path downloadPath = Paths.get(tempDir.toAbsolutePath().toString(), 
"task.json");
-    Pod mainJobPod = peonClient.getPeonPodWithRetries(taskId);
+    Pod mainJobPod = peonClient.getPeonPodWithRetries(taskId.getK8sJobName());
     k8sClient.executeRequest(client -> {
       client.pods()
             .inNamespace("default")
diff --git 
a/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/baseJobWithoutAnnotations.yaml
 
b/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/baseJobWithoutAnnotations.yaml
index 9b1ad233fc..ecc4daf20d 100644
--- 
a/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/baseJobWithoutAnnotations.yaml
+++ 
b/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/baseJobWithoutAnnotations.yaml
@@ -1,12 +1,12 @@
 apiVersion: batch/v1
 kind: Job
 metadata:
-  name: "id"
+  name: "id-3e70afe5cd823dfc7dd308eea616426b"
 spec:
   template:
     metadata:
       labels:
-        job-name: id
+        job-name: id-3e70afe5cd823dfc7dd308eea616426b
       name: id-kmwkw
     spec:
       containers:
diff --git 
a/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/expectedEphemeralOutput.yaml
 
b/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/expectedEphemeralOutput.yaml
index e525ca1d04..30960cdbc6 100644
--- 
a/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/expectedEphemeralOutput.yaml
+++ 
b/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/expectedEphemeralOutput.yaml
@@ -6,7 +6,7 @@ metadata:
     tls.enabled: "false"
   labels:
     druid.k8s.peons: "true"
-  name: "id"
+  name: "id-3e70afe5cd823dfc7dd308eea616426b"
 spec:
   activeDeadlineSeconds: 14400
   backoffLimit: 0
@@ -60,6 +60,6 @@ spec:
               memory: "2400000000"
               cpu: "1000m"
               ephemeral-storage: 1Gi
-      hostname: "id"
+      hostname: "id-3e70afe5cd823dfc7dd308eea616426b"
       restartPolicy: "Never"
   ttlSecondsAfterFinished: 172800
\ No newline at end of file
diff --git 
a/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/expectedMultiContainerOutput.yaml
 
b/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/expectedMultiContainerOutput.yaml
index 480f3afeb9..70b8b7c1d2 100644
--- 
a/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/expectedMultiContainerOutput.yaml
+++ 
b/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/expectedMultiContainerOutput.yaml
@@ -6,7 +6,7 @@ metadata:
     tls.enabled: "false"
   labels:
     druid.k8s.peons: "true"
-  name: "id"
+  name: "id-3e70afe5cd823dfc7dd308eea616426b"
 spec:
   activeDeadlineSeconds: 14400
   backoffLimit: 0
@@ -18,7 +18,7 @@ spec:
       labels:
         druid.k8s.peons: "true"
     spec:
-      hostname: "id"
+      hostname: "id-3e70afe5cd823dfc7dd308eea616426b"
       containers:
         - args:
             - "/kubexit/kubexit /bin/sh -c \"/peon.sh 
/druid/data/baseTaskDir/noop_2022-09-26T22:08:00.582Z_352988d2-5ff7-4b70-977c-3de96f9bfca6
 1\""
diff --git 
a/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/expectedMultiContainerOutputOrder.yaml
 
b/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/expectedMultiContainerOutputOrder.yaml
index 480f3afeb9..70b8b7c1d2 100644
--- 
a/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/expectedMultiContainerOutputOrder.yaml
+++ 
b/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/expectedMultiContainerOutputOrder.yaml
@@ -6,7 +6,7 @@ metadata:
     tls.enabled: "false"
   labels:
     druid.k8s.peons: "true"
-  name: "id"
+  name: "id-3e70afe5cd823dfc7dd308eea616426b"
 spec:
   activeDeadlineSeconds: 14400
   backoffLimit: 0
@@ -18,7 +18,7 @@ spec:
       labels:
         druid.k8s.peons: "true"
     spec:
-      hostname: "id"
+      hostname: "id-3e70afe5cd823dfc7dd308eea616426b"
       containers:
         - args:
             - "/kubexit/kubexit /bin/sh -c \"/peon.sh 
/druid/data/baseTaskDir/noop_2022-09-26T22:08:00.582Z_352988d2-5ff7-4b70-977c-3de96f9bfca6
 1\""
diff --git 
a/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/expectedNoopJob.yaml
 
b/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/expectedNoopJob.yaml
index b131b28652..e74886094b 100644
--- 
a/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/expectedNoopJob.yaml
+++ 
b/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/expectedNoopJob.yaml
@@ -1,7 +1,7 @@
 apiVersion: batch/v1
 kind: Job
 metadata:
-  name: "id"
+  name: "id-3e70afe5cd823dfc7dd308eea616426b"
   labels:
     druid.k8s.peons: "true"
     druid.task.id: "id"
diff --git 
a/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/expectedNoopJobLongIds.yaml
 
b/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/expectedNoopJobLongIds.yaml
index 01fb962ed0..6b2c9b46a1 100644
--- 
a/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/expectedNoopJobLongIds.yaml
+++ 
b/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/expectedNoopJobLongIds.yaml
@@ -1,7 +1,7 @@
 apiVersion: batch/v1
 kind: Job
 metadata:
-  name: "apiissuedkillwikipedia3omjobnbc10000101t000000000z20230514t0000"
+  name: "apiissuedkillwikipedia3omjobnb-18ed64f09a02fab468b9bba38739871f"
   labels:
     druid.k8s.peons: "true"
     druid.task.id: 
"apiissuedkillwikipedia3omjobnbc10000101t000000000z20230514t0000"
diff --git 
a/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/expectedNoopJobTlsEnabled.yaml
 
b/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/expectedNoopJobTlsEnabled.yaml
index da7691870c..b9f654d877 100644
--- 
a/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/expectedNoopJobTlsEnabled.yaml
+++ 
b/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/expectedNoopJobTlsEnabled.yaml
@@ -1,7 +1,7 @@
 apiVersion: batch/v1
 kind: Job
 metadata:
-  name: "id"
+  name: "id-3e70afe5cd823dfc7dd308eea616426b"
   labels:
     druid.k8s.peons: "true"
     druid.task.id: "id"
diff --git 
a/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/expectedPodSpec.yaml
 
b/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/expectedPodSpec.yaml
index 939879a4af..e46de13378 100644
--- 
a/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/expectedPodSpec.yaml
+++ 
b/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/expectedPodSpec.yaml
@@ -6,7 +6,7 @@ metadata:
     tls.enabled: "false"
   labels:
     druid.k8s.peons: "true"
-  name: "id"
+  name: "id-3e70afe5cd823dfc7dd308eea616426b"
 spec:
   activeDeadlineSeconds: 14400
   backoffLimit: 0
@@ -86,7 +86,7 @@ spec:
               name: "graveyard"
             - mountPath: "/kubexit"
               name: "kubexit"
-      hostname: "id"
+      hostname: "id-3e70afe5cd823dfc7dd308eea616426b"
       initContainers:
         - command:
             - "cp"
diff --git 
a/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/expectedSingleContainerOutput.yaml
 
b/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/expectedSingleContainerOutput.yaml
index 0650c0a291..f270368fb5 100644
--- 
a/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/expectedSingleContainerOutput.yaml
+++ 
b/extensions-contrib/kubernetes-overlord-extensions/src/test/resources/expectedSingleContainerOutput.yaml
@@ -6,7 +6,7 @@ metadata:
     tls.enabled: "false"
   labels:
     druid.k8s.peons: "true"
-  name: "id"
+  name: "id-3e70afe5cd823dfc7dd308eea616426b"
 spec:
   activeDeadlineSeconds: 14400
   backoffLimit: 0
@@ -18,7 +18,7 @@ spec:
       labels:
         druid.k8s.peons: "true"
     spec:
-      hostname: "id"
+      hostname: "id-3e70afe5cd823dfc7dd308eea616426b"
       containers:
         - args:
             - foo && bar


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


Reply via email to