Github user ravipesala commented on a diff in the pull request:
https://github.com/apache/carbondata/pull/2262#discussion_r187310749
--- Diff:
core/src/main/java/org/apache/carbondata/core/datamap/DataMapStoreManager.java
---
@@ -435,23 +436,30 @@ public TableSegmentRefresher
getTableSegmentRefresher(CarbonTable table) {
SegmentUpdateDetails[] updateStatusDetails =
statusManager.getUpdateStatusDetails();
for (SegmentUpdateDetails updateDetails : updateStatusDetails) {
UpdateVO updateVO =
statusManager.getInvalidTimestampRange(updateDetails.getSegmentName());
- segmentRefreshTime.put(updateVO.getSegmentId(),
updateVO.getCreatedOrUpdatedTimeStamp());
+ segmentRefreshTime.put(updateVO.getSegmentId(),
+ new
SegmentLatestTimestampUpdater(updateVO.getCreatedOrUpdatedTimeStamp(), 0));
}
}
- public boolean isRefreshNeeded(String segmentId,
SegmentUpdateStatusManager statusManager) {
- UpdateVO updateVO =
statusManager.getInvalidTimestampRange(segmentId);
+ public boolean isRefreshNeeded(Segment seg) throws IOException {
+ Map<String, SegmentLatestTimestampUpdater>
segmentTimestampUpdaterMap =
+ seg.getSegmentTimestampUpdaterMap();
+ String segmentId = seg.getSegmentNo();
if (segmentRefreshTime.get(segmentId) == null) {
- segmentRefreshTime.put(segmentId,
updateVO.getCreatedOrUpdatedTimeStamp());
+ segmentRefreshTime.put(segmentId,
segmentTimestampUpdaterMap.get(segmentId));
return true;
}
if (manualSegmentRefresh.get(segmentId) != null &&
manualSegmentRefresh.get(segmentId)) {
manualSegmentRefresh.put(segmentId, false);
return true;
}
- Long updateTimestamp = updateVO.getLatestUpdateTimestamp();
+ Long updateTimestamp =
segmentTimestampUpdaterMap.get(segmentId).getSegmentUpdatedTimestamp();
+
boolean isRefresh =
- updateTimestamp != null && (updateTimestamp >
segmentRefreshTime.get(segmentId));
+ (updateTimestamp != null && updateTimestamp >
segmentRefreshTime.get(segmentId)
--- End diff --
Move this compare logic to `SegmentLatestTimestampUpdater` compare method
---