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

maytasm 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 c586871520f Handle when used_status_last_updated is empty String in 
HeapMemorySegmentMetadataCache (#17890)
c586871520f is described below

commit c586871520f447437fb3a3cd5f7ef94f05180769
Author: Maytas Monsereenusorn <[email protected]>
AuthorDate: Wed Apr 9 10:13:47 2025 -0700

    Handle when used_status_last_updated is empty String in 
HeapMemorySegmentMetadataCache (#17890)
---
 .../druid/metadata/SqlSegmentsMetadataQuery.java   | 28 +++++++++++++---------
 .../metadata/segment/cache/SegmentRecord.java      |  7 +++---
 2 files changed, 21 insertions(+), 14 deletions(-)

diff --git 
a/server/src/main/java/org/apache/druid/metadata/SqlSegmentsMetadataQuery.java 
b/server/src/main/java/org/apache/druid/metadata/SqlSegmentsMetadataQuery.java
index 6a6d9ac64fa..1bbf0c2f595 100644
--- 
a/server/src/main/java/org/apache/druid/metadata/SqlSegmentsMetadataQuery.java
+++ 
b/server/src/main/java/org/apache/druid/metadata/SqlSegmentsMetadataQuery.java
@@ -20,6 +20,7 @@
 package org.apache.druid.metadata;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterators;
@@ -510,10 +511,11 @@ public class SqlSegmentsMetadataQuery
               (index, r, ctx) -> {
                 String schemaFingerprint = (String) r.getObject(3);
                 Long numRows = (Long) r.getObject(4);
+                String usedStatusLastUpdatedDate = r.getString(6);
                 return new DataSegmentPlus(
                     JacksonUtils.readValue(jsonMapper, r.getBytes(1), 
DataSegment.class),
                     null,
-                    DateTimes.of(r.getString(6)),
+                    Strings.isNullOrEmpty(usedStatusLastUpdatedDate) ? null : 
DateTimes.of(usedStatusLastUpdatedDate),
                     r.getBoolean(2),
                     schemaFingerprint,
                     numRows,
@@ -537,15 +539,18 @@ public class SqlSegmentsMetadataQuery
           .bind("dataSource", datasource)
           .setFetchSize(connector.getStreamingFetchSize())
           .map(
-              (index, r, ctx) -> new DataSegmentPlus(
-                  JacksonUtils.readValue(jsonMapper, r.getBytes(1), 
DataSegment.class),
-                  DateTimes.of(r.getString(5)),
-                  DateTimes.of(r.getString(4)),
-                  r.getBoolean(2),
-                  null,
-                  null,
-                  r.getString(3)
-              )
+              (index, r, ctx) -> {
+                String usedStatusLastUpdatedDate = r.getString(4);
+                return new DataSegmentPlus(
+                    JacksonUtils.readValue(jsonMapper, r.getBytes(1), 
DataSegment.class),
+                    DateTimes.of(r.getString(5)),
+                    Strings.isNullOrEmpty(usedStatusLastUpdatedDate) ? null : 
DateTimes.of(usedStatusLastUpdatedDate),
+                    r.getBoolean(2),
+                    null,
+                    null,
+                    r.getString(3)
+                );
+              }
           )
           .iterator();
     }
@@ -1237,10 +1242,11 @@ public class SqlSegmentsMetadataQuery
     return sql.map((index, r, ctx) -> {
       final String segmentId = r.getString(1);
       try {
+        String usedStatusLastUpdatedDate = r.getString(4);
         return new DataSegmentPlus(
             JacksonUtils.readValue(jsonMapper, r.getBytes(2), 
DataSegment.class),
             DateTimes.of(r.getString(3)),
-            DateTimes.of(r.getString(4)),
+            Strings.isNullOrEmpty(usedStatusLastUpdatedDate) ? null : 
DateTimes.of(usedStatusLastUpdatedDate),
             used,
             null,
             null,
diff --git 
a/server/src/main/java/org/apache/druid/metadata/segment/cache/SegmentRecord.java
 
b/server/src/main/java/org/apache/druid/metadata/segment/cache/SegmentRecord.java
index 3b331dc3673..a046229a9b8 100644
--- 
a/server/src/main/java/org/apache/druid/metadata/segment/cache/SegmentRecord.java
+++ 
b/server/src/main/java/org/apache/druid/metadata/segment/cache/SegmentRecord.java
@@ -19,6 +19,7 @@
 
 package org.apache.druid.metadata.segment.cache;
 
+import com.google.common.base.Strings;
 import org.apache.druid.java.util.common.DateTimes;
 import org.apache.druid.java.util.common.logger.Logger;
 import org.apache.druid.timeline.SegmentId;
@@ -74,7 +75,7 @@ class SegmentRecord
       serializedId = r.getString("id");
       dataSource = r.getString("dataSource");
 
-      final DateTime lastUpdatedTime = nullSafeDate(r.getString(
+      final DateTime lastUpdatedTime = nullAndEmptySafeDate(r.getString(
           "used_status_last_updated"));
 
       final SegmentId segmentId = SegmentId.tryParse(dataSource, serializedId);
@@ -96,8 +97,8 @@ class SegmentRecord
   }
 
   @Nullable
-  private static DateTime nullSafeDate(String date)
+  private static DateTime nullAndEmptySafeDate(String date)
   {
-    return date == null ? null : DateTimes.of(date);
+    return Strings.isNullOrEmpty(date) ? null : DateTimes.of(date);
   }
 }


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

Reply via email to