diff --git a/hudi-cli/src/main/java/org/apache/hudi/cli/commands/ArchivedCommitsCommand.java b/hudi-cli/src/main/java/org/apache/hudi/cli/commands/ArchivedCommitsCommand.java index 1dc925b47ecb9..102fcc2ae7a63 100644 --- a/hudi-cli/src/main/java/org/apache/hudi/cli/commands/ArchivedCommitsCommand.java +++ b/hudi-cli/src/main/java/org/apache/hudi/cli/commands/ArchivedCommitsCommand.java @@ -30,6 +30,7 @@ import org.apache.hudi.common.table.log.HoodieLogFormat.Reader; import org.apache.hudi.common.table.log.block.HoodieAvroDataBlock; import org.apache.hudi.common.table.timeline.HoodieTimeline; +import org.apache.hudi.common.util.Option; import org.apache.avro.generic.GenericRecord; import org.apache.avro.generic.IndexedRecord; @@ -172,49 +173,38 @@ public String showCommits( return HoodiePrintHelper.print(header, new HashMap<>(), sortByField, descending, limit, headerOnly, allCommits); } - private Comparable[] readCommit(GenericRecord record, boolean skipMetadata) { + private Comparable[] commitDetail(GenericRecord record, String metadataName, + boolean skipMetadata) { List commitDetails = new ArrayList<>(); + commitDetails.add(record.get("commitTime")); + commitDetails.add(record.get("actionType").toString()); + if (!skipMetadata) { + commitDetails.add(Option.ofNullable(record.get(metadataName)).orElse("{}").toString()); + } + return commitDetails.toArray(new Comparable[commitDetails.size()]); + } + + private Comparable[] readCommit(GenericRecord record, boolean skipMetadata) { try { switch (record.get("actionType").toString()) { - case HoodieTimeline.CLEAN_ACTION: { - commitDetails.add(record.get("commitTime")); - commitDetails.add(record.get("actionType").toString()); - if (!skipMetadata) { - commitDetails.add(record.get("hoodieCleanMetadata").toString()); - } - break; - } + case HoodieTimeline.CLEAN_ACTION: + return commitDetail(record, "hoodieCleanMetadata", skipMetadata); case HoodieTimeline.COMMIT_ACTION: - case HoodieTimeline.DELTA_COMMIT_ACTION: { - commitDetails.add(record.get("commitTime")); - commitDetails.add(record.get("actionType").toString()); - if (!skipMetadata) { - commitDetails.add(record.get("hoodieCommitMetadata").toString()); - } - break; - } - case HoodieTimeline.ROLLBACK_ACTION: { - commitDetails.add(record.get("commitTime")); - commitDetails.add(record.get("actionType").toString()); - if (!skipMetadata) { - commitDetails.add(record.get("hoodieRollbackMetadata").toString()); - } - break; + case HoodieTimeline.DELTA_COMMIT_ACTION: + return commitDetail(record, "hoodieCommitMetadata", skipMetadata); + case HoodieTimeline.ROLLBACK_ACTION: + return commitDetail(record, "hoodieRollbackMetadata", skipMetadata); + case HoodieTimeline.SAVEPOINT_ACTION: + return commitDetail(record, "hoodieSavePointMetadata", skipMetadata); + case HoodieTimeline.COMPACTION_ACTION: + return commitDetail(record, "hoodieCompactionMetadata", skipMetadata); + default: { + return new Comparable[]{}; } - case HoodieTimeline.SAVEPOINT_ACTION: { - commitDetails.add(record.get("commitTime")); - commitDetails.add(record.get("actionType").toString()); - if (!skipMetadata) { - commitDetails.add(record.get("hoodieSavePointMetadata").toString()); - } - break; - } - default: - return commitDetails.toArray(new Comparable[commitDetails.size()]); } } catch (Exception e) { e.printStackTrace(); + return new Comparable[]{}; } - return commitDetails.toArray(new Comparable[commitDetails.size()]); } }