diff --git a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/SnapshotDiffJob.java b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/SnapshotDiffJob.java index 2024f9a822a4..5dac8abaf932 100644 --- a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/SnapshotDiffJob.java +++ b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/SnapshotDiffJob.java @@ -258,10 +258,9 @@ public int hashCode() { } public SnapshotDiffJobProto toProtoBuf() { - return SnapshotDiffJobProto.newBuilder() + SnapshotDiffJobProto.Builder builder = SnapshotDiffJobProto.newBuilder() .setCreationTime(creationTime) .setJobId(jobId) - .setStatus(status.toProtobuf()) .setVolume(volume) .setBucket(bucket) .setFromSnapshot(fromSnapshot) @@ -269,17 +268,26 @@ public SnapshotDiffJobProto toProtoBuf() { .setForceFullDiff(forceFullDiff) .setDisableNativeDiff(disableNativeDiff) .setTotalDiffEntries(totalDiffEntries) - .setSubStatus(subStatus.toProtoBuf()) - .setKeysProcessedPct(keysProcessedPct) - .build(); + .setKeysProcessedPct(keysProcessedPct); + if (status != null) { + builder.setStatus(status.toProtobuf()); + } + if (subStatus != null) { + builder.setSubStatus(subStatus.toProtoBuf()); + } + return builder.build(); } public static SnapshotDiffJob getFromProtoBuf( SnapshotDiffJobProto diffJobProto) { + JobStatus status = (diffJobProto.hasStatus()) ? + JobStatus.fromProtobuf(diffJobProto.getStatus()) : null; + SubStatus subStatus = (diffJobProto.hasSubStatus()) ? + SubStatus.fromProtoBuf(diffJobProto.getSubStatus()) : null; return new SnapshotDiffJob( diffJobProto.getCreationTime(), diffJobProto.getJobId(), - JobStatus.fromProtobuf(diffJobProto.getStatus()), + status, diffJobProto.getVolume(), diffJobProto.getBucket(), diffJobProto.getFromSnapshot(), @@ -287,7 +295,7 @@ public static SnapshotDiffJob getFromProtoBuf( diffJobProto.getForceFullDiff(), diffJobProto.getDisableNativeDiff(), diffJobProto.getTotalDiffEntries(), - SubStatus.fromProtoBuf(diffJobProto.getSubStatus()), + subStatus, diffJobProto.getKeysProcessedPct()); }