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
