diff --git a/hoodie-common/src/main/java/com/uber/hoodie/common/model/CompactionOperation.java b/hoodie-common/src/main/java/com/uber/hoodie/common/model/CompactionOperation.java index f7f886e2a7a28..b094c49c55b11 100644 --- a/hoodie-common/src/main/java/com/uber/hoodie/common/model/CompactionOperation.java +++ b/hoodie-common/src/main/java/com/uber/hoodie/common/model/CompactionOperation.java @@ -16,6 +16,7 @@ package com.uber.hoodie.common.model; +import com.google.common.base.Optional; import com.uber.hoodie.avro.model.HoodieCompactionOperation; import com.uber.hoodie.common.util.FSUtils; import java.io.Serializable; @@ -23,7 +24,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Optional; import java.util.stream.Collectors; /** @@ -34,6 +34,7 @@ public class CompactionOperation implements Serializable { private String baseInstantTime; + // Using Guava Optional as it is serializable private Optional dataFileCommitTime; private List deltaFilePaths; private Optional dataFilePath; @@ -46,7 +47,7 @@ public class CompactionOperation implements Serializable { public CompactionOperation() { } - public CompactionOperation(Optional dataFile, String partitionPath, + public CompactionOperation(java.util.Optional dataFile, String partitionPath, List logFiles, Map metrics) { if (dataFile.isPresent()) { this.baseInstantTime = dataFile.get().getCommitTime(); @@ -55,10 +56,10 @@ public CompactionOperation(Optional dataFile, String partitionPa this.dataFileCommitTime = Optional.of(dataFile.get().getCommitTime()); } else { assert logFiles.size() > 0; - this.dataFilePath = Optional.empty(); + this.dataFilePath = Optional.absent(); this.baseInstantTime = FSUtils.getBaseCommitTimeFromLogPath(logFiles.get(0).getPath()); this.fileId = FSUtils.getFileIdFromLogPath(logFiles.get(0).getPath()); - this.dataFileCommitTime = Optional.empty(); + this.dataFileCommitTime = Optional.absent(); } this.partitionPath = partitionPath; @@ -103,7 +104,7 @@ public Map getMetrics() { public static CompactionOperation convertFromAvroRecordInstance(HoodieCompactionOperation operation) { CompactionOperation op = new CompactionOperation(); op.baseInstantTime = operation.getBaseInstantTime(); - op.dataFilePath = Optional.ofNullable(operation.getDataFilePath()); + op.dataFilePath = Optional.fromNullable(operation.getDataFilePath()); op.deltaFilePaths = new ArrayList<>(operation.getDeltaFilePaths()); op.fileId = operation.getFileId(); op.metrics = operation.getMetrics() == null ? new HashMap<>() : new HashMap<>(operation.getMetrics());