in iotdb-collector/collector-core/src/main/java/org/apache/iotdb/collector/utils/sorter/PipeTreeModelTabletEventSorter.java [43:85]
public void deduplicateAndSortTimestampsIfNecessary() {
if (tablet == null || tablet.getRowSize() == 0) {
return;
}
long[] timestamps = tablet.getTimestamps();
for (int i = 1, size = tablet.getRowSize(); i < size; ++i) {
final long currentTimestamp = timestamps[i];
final long previousTimestamp = timestamps[i - 1];
if (currentTimestamp < previousTimestamp) {
isSorted = false;
break;
}
if (currentTimestamp == previousTimestamp) {
isDeduplicated = false;
}
}
if (isSorted && isDeduplicated) {
return;
}
index = new Integer[tablet.getRowSize()];
for (int i = 0, size = tablet.getRowSize(); i < size; i++) {
index[i] = i;
}
if (!isSorted) {
sortTimestamps();
// Do deduplicate anyway.
// isDeduplicated may be false positive when isSorted is false.
deduplicateTimestamps();
isDeduplicated = true;
}
if (!isDeduplicated) {
deduplicateTimestamps();
}
sortAndDeduplicateValuesAndBitMaps();
}