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

jackie 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 d412ecf  Fix SegmentZKMetadta time handling (#7375)
d412ecf is described below

commit d412ecf388f9ec244d70b170ce8870571994d455
Author: Xiaotian (Jackie) Jiang <[email protected]>
AuthorDate: Mon Aug 30 13:06:31 2021 -0700

    Fix SegmentZKMetadta time handling (#7375)
---
 .../common/metadata/segment/SegmentZKMetadata.java | 36 +++++++++++++---------
 1 file changed, 22 insertions(+), 14 deletions(-)

diff --git 
a/pinot-common/src/main/java/org/apache/pinot/common/metadata/segment/SegmentZKMetadata.java
 
b/pinot-common/src/main/java/org/apache/pinot/common/metadata/segment/SegmentZKMetadata.java
index b188091..e80c991 100644
--- 
a/pinot-common/src/main/java/org/apache/pinot/common/metadata/segment/SegmentZKMetadata.java
+++ 
b/pinot-common/src/main/java/org/apache/pinot/common/metadata/segment/SegmentZKMetadata.java
@@ -65,12 +65,17 @@ public class SegmentZKMetadata implements ZKMetadata {
 
   public long getStartTimeMs() {
     if (!_startTimeMsCached) {
+      long startTimeMs = -1;
       String startTimeString = _simpleFields.get(Segment.START_TIME);
-      if (startTimeString != null && Long.parseLong(startTimeString) > 0) {
-        _startTimeMs = 
TimeUnit.valueOf(_simpleFields.get(Segment.TIME_UNIT)).toMillis(Long.parseLong(startTimeString));
-      } else {
-        _startTimeMs = -1;
+      if (startTimeString != null) {
+        long startTime = Long.parseLong(startTimeString);
+        // NOTE: Need to check whether the start time is positive because some 
old segment ZK metadata contains negative
+        //       start time and null time unit
+        if (startTime > 0) {
+          startTimeMs = 
TimeUnit.valueOf(_simpleFields.get(Segment.TIME_UNIT)).toMillis(startTime);
+        }
       }
+      _startTimeMs = startTimeMs;
       _startTimeMsCached = true;
     }
     return _startTimeMs;
@@ -78,12 +83,17 @@ public class SegmentZKMetadata implements ZKMetadata {
 
   public long getEndTimeMs() {
     if (!_endTimeMsCached) {
+      long endTimeMs = -1;
       String endTimeString = _simpleFields.get(Segment.END_TIME);
-      if (endTimeString != null && Long.parseLong(endTimeString) > 0) {
-        _endTimeMs = 
TimeUnit.valueOf(_simpleFields.get(Segment.TIME_UNIT)).toMillis(Long.parseLong(endTimeString));
-      } else {
-        _endTimeMs = -1;
+      if (endTimeString != null) {
+        long endTime = Long.parseLong(endTimeString);
+        // NOTE: Need to check whether the end time is positive because some 
old segment ZK metadata contains negative
+        //       end time and null time unit
+        if (endTime > 0) {
+          endTimeMs = 
TimeUnit.valueOf(_simpleFields.get(Segment.TIME_UNIT)).toMillis(endTime);
+        }
       }
+      _endTimeMs = endTimeMs;
       _endTimeMsCached = true;
     }
     return _endTimeMs;
@@ -409,12 +419,10 @@ public class SegmentZKMetadata implements ZKMetadata {
 
   @Deprecated
   public Interval getTimeInterval() {
-    String startTimeString = _simpleFields.get(Segment.START_TIME);
-    if (startTimeString != null) {
-      String endTimeString = _simpleFields.get(Segment.END_TIME);
-      TimeUnit timeUnit = 
TimeUnit.valueOf(_simpleFields.get(Segment.TIME_UNIT));
-      return new Interval(timeUnit.toMillis(Long.parseLong(startTimeString)),
-          timeUnit.toMillis(Long.parseLong(endTimeString)));
+    long startTimeMs = getStartTimeMs();
+    long endTimeMs = getEndTimeMs();
+    if (startTimeMs > 0 && endTimeMs > 0) {
+      return new Interval(startTimeMs, endTimeMs);
     } else {
       return null;
     }

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

Reply via email to