1
0

LogFile comparator must handle log file names without write token for backwards compatibility

This commit is contained in:
Balaji Varadarajan
2019-06-05 18:18:44 -07:00
committed by n3nash
parent 66893bfef2
commit a0391b7c01
2 changed files with 46 additions and 4 deletions

View File

@@ -129,12 +129,12 @@ public class HoodieLogFile implements Serializable {
*/
public static class LogFileComparator implements Comparator<HoodieLogFile>, Serializable {
private transient Comparator<HoodieLogFile> writeTokenComparator;
private transient Comparator<String> writeTokenComparator;
private Comparator<HoodieLogFile> getWriteTokenComparator() {
private Comparator<String> getWriteTokenComparator() {
if (null == writeTokenComparator) {
// writeTokenComparator is not serializable. Hence, lazy loading
writeTokenComparator = Comparator.nullsFirst(Comparator.comparing(HoodieLogFile::getLogWriteToken));
writeTokenComparator = Comparator.nullsFirst(Comparator.naturalOrder());
}
return writeTokenComparator;
}
@@ -148,7 +148,7 @@ public class HoodieLogFile implements Serializable {
if (o1.getLogVersion() == o2.getLogVersion()) {
// Compare by write token when base-commit and log-version is same
return getWriteTokenComparator().compare(o1, o2);
return getWriteTokenComparator().compare(o1.getLogWriteToken(), o2.getLogWriteToken());
}
// compare by log-version when base-commit is same