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]