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

radhikakundam pushed a commit to branch atlas-2.5
in repository https://gitbox.apache.org/repos/asf/atlas.git

commit 48420ecb11397a412081177efb45f4e55b30d403
Author: sheetalshah1007 <[email protected]>
AuthorDate: Mon May 12 15:26:41 2025 +0530

    ATLAS-4924: When client and server are on different timezones, searchFilter 
gives incorrect results using timerange operator (#346)
    
    Co-authored-by: Sheetal Shah <[email protected]>
    (cherry picked from commit 79cac300d8fdc7050f047fcf4f0150f4e8e9d26a)
---
 .../main/java/org/apache/atlas/discovery/SearchProcessor.java  | 10 +++++++---
 .../org/apache/atlas/discovery/EntitySearchProcessorTest.java  |  2 ++
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git 
a/repository/src/main/java/org/apache/atlas/discovery/SearchProcessor.java 
b/repository/src/main/java/org/apache/atlas/discovery/SearchProcessor.java
index 04dea392c..25897b656 100644
--- a/repository/src/main/java/org/apache/atlas/discovery/SearchProcessor.java
+++ b/repository/src/main/java/org/apache/atlas/discovery/SearchProcessor.java
@@ -55,8 +55,10 @@ import org.slf4j.LoggerFactory;
 
 import java.math.BigDecimal;
 import java.math.BigInteger;
-import java.sql.Timestamp;
+import java.time.Clock;
+import java.time.Instant;
 import java.time.LocalDateTime;
+import java.time.ZoneOffset;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -201,7 +203,7 @@ public abstract class SearchProcessor {
         SearchParameters.Operator op       = criteria.getOperator();
         String                    attrVal  = criteria.getAttributeValue();
         FilterCriteria            ret      = new FilterCriteria();
-        final LocalDateTime       now      = LocalDateTime.now();
+        final LocalDateTime now = LocalDateTime.now(Clock.systemUTC());
         final LocalDateTime       startTime;
         final LocalDateTime       endTime;
 
@@ -295,7 +297,9 @@ public abstract class SearchProcessor {
                 }
             }
         } else {
-            attrVal = Timestamp.valueOf(startTime).getTime() + 
ATTRIBUTE_VALUE_DELIMITER + Timestamp.valueOf(endTime).getTime();
+            Instant startTimeInstant = startTime.toInstant(ZoneOffset.UTC);
+            Instant endTimeInstant = endTime.toInstant(ZoneOffset.UTC);
+            attrVal = startTimeInstant.toEpochMilli() + 
ATTRIBUTE_VALUE_DELIMITER + endTimeInstant.toEpochMilli();
         }
 
         ret.setAttributeName(attrName);
diff --git 
a/repository/src/test/java/org/apache/atlas/discovery/EntitySearchProcessorTest.java
 
b/repository/src/test/java/org/apache/atlas/discovery/EntitySearchProcessorTest.java
index 2214a8340..25ecdb81d 100644
--- 
a/repository/src/test/java/org/apache/atlas/discovery/EntitySearchProcessorTest.java
+++ 
b/repository/src/test/java/org/apache/atlas/discovery/EntitySearchProcessorTest.java
@@ -53,6 +53,7 @@ import java.util.Collections;
 import java.util.Date;
 import java.util.GregorianCalendar;
 import java.util.List;
+import java.util.TimeZone;
 import java.util.stream.Collectors;
 
 import static org.testng.Assert.assertEquals;
@@ -89,6 +90,7 @@ public class EntitySearchProcessorTest extends BasicTestSetup 
{
         setupTestData();
         createJapaneseEntityWithDescription();
         createChineseEntityWithDescription();
+        FORMATTED_DATE.setTimeZone(TimeZone.getTimeZone("UTC"));
     }
 
     @Test

Reply via email to