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


---

Reply via email to