From 99790a52ae49883f8a2afad14b7e522becc8571b Mon Sep 17 00:00:00 2001 From: Andrew Purtell Date: Fri, 1 Dec 2017 14:25:28 -0800 Subject: [PATCH] HBASE-19406 Fix CompactionRequest equals and hashCode --- .../compactions/CompactionRequestImpl.java | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/CompactionRequestImpl.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/CompactionRequestImpl.java index 0c32a17e8ed..ff516a5c672 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/CompactionRequestImpl.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/CompactionRequestImpl.java @@ -136,6 +136,80 @@ public class CompactionRequestImpl implements CompactionRequest { return tracker; } + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((filesToCompact == null) ? 0 : filesToCompact.hashCode()); + result = prime * result + ((isMajor == null) ? 0 : isMajor.hashCode()); + result = prime * result + (isOffPeak ? 1231 : 1237); + result = prime * result + priority; + result = prime * result + ((regionName == null) ? 0 : regionName.hashCode()); + result = prime * result + (int) (selectionTime ^ (selectionTime >>> 32)); + result = prime * result + ((storeName == null) ? 0 : storeName.hashCode()); + result = prime * result + (int) (totalSize ^ (totalSize >>> 32)); + result = prime * result + ((tracker == null) ? 0 : tracker.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + CompactionRequestImpl other = (CompactionRequestImpl) obj; + if (filesToCompact == null) { + if (other.filesToCompact != null) { + return false; + } + } else if (!filesToCompact.equals(other.filesToCompact)) { + return false; + } + if (isMajor != other.isMajor) { + return false; + } + if (isOffPeak != other.isOffPeak) { + return false; + } + if (priority != other.priority) { + return false; + } + if (regionName == null) { + if (other.regionName != null) { + return false; + } + } else if (!regionName.equals(other.regionName)) { + return false; + } + if (selectionTime != other.selectionTime) { + return false; + } + if (storeName == null) { + if (other.storeName != null) { + return false; + } + } else if (!storeName.equals(other.storeName)) { + return false; + } + if (totalSize != other.totalSize) { + return false; + } + if (tracker == null) { + if (other.tracker != null) { + return false; + } + } else if (!tracker.equals(other.tracker)) { + return false; + } + return true; + } + @Override public String toString() { String fsList = filesToCompact.stream().filter(f -> f.getReader() != null)