Skip to content

Commit 79cac30

Browse files
sheetalshah1007Sheetal Shah
andauthored
ATLAS-4924: When client and server are on different timezones, searchFilter gives incorrect results using timerange operator (#346)
Co-authored-by: Sheetal Shah <sheetal.shah@cloudera.com>
1 parent 3c023d6 commit 79cac30

2 files changed

Lines changed: 9 additions & 3 deletions

File tree

repository/src/main/java/org/apache/atlas/discovery/SearchProcessor.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,10 @@
5555

5656
import java.math.BigDecimal;
5757
import java.math.BigInteger;
58-
import java.sql.Timestamp;
58+
import java.time.Clock;
59+
import java.time.Instant;
5960
import java.time.LocalDateTime;
61+
import java.time.ZoneOffset;
6062
import java.util.ArrayList;
6163
import java.util.Collection;
6264
import java.util.Collections;
@@ -201,7 +203,7 @@ public FilterCriteria processDateRange(FilterCriteria criteria) {
201203
SearchParameters.Operator op = criteria.getOperator();
202204
String attrVal = criteria.getAttributeValue();
203205
FilterCriteria ret = new FilterCriteria();
204-
final LocalDateTime now = LocalDateTime.now();
206+
final LocalDateTime now = LocalDateTime.now(Clock.systemUTC());
205207
final LocalDateTime startTime;
206208
final LocalDateTime endTime;
207209

@@ -295,7 +297,9 @@ public FilterCriteria processDateRange(FilterCriteria criteria) {
295297
}
296298
}
297299
} else {
298-
attrVal = Timestamp.valueOf(startTime).getTime() + ATTRIBUTE_VALUE_DELIMITER + Timestamp.valueOf(endTime).getTime();
300+
Instant startTimeInstant = startTime.toInstant(ZoneOffset.UTC);
301+
Instant endTimeInstant = endTime.toInstant(ZoneOffset.UTC);
302+
attrVal = startTimeInstant.toEpochMilli() + ATTRIBUTE_VALUE_DELIMITER + endTimeInstant.toEpochMilli();
299303
}
300304

301305
ret.setAttributeName(attrName);

repository/src/test/java/org/apache/atlas/discovery/EntitySearchProcessorTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
import java.util.Date;
5353
import java.util.GregorianCalendar;
5454
import java.util.List;
55+
import java.util.TimeZone;
5556
import java.util.stream.Collectors;
5657

5758
import static org.testng.Assert.assertEquals;
@@ -88,6 +89,7 @@ public void setup() throws Exception {
8889
setupTestData();
8990
createJapaneseEntityWithDescription();
9091
createChineseEntityWithDescription();
92+
FORMATTED_DATE.setTimeZone(TimeZone.getTimeZone("UTC"));
9193
}
9294

9395
@Test

0 commit comments

Comments
 (0)