From 8252fe4fbb184ab968c43e4238fca1a8722899df Mon Sep 17 00:00:00 2001 From: anoopsamjohn Date: Tue, 6 Jun 2017 12:26:21 +0530 Subject: [PATCH] HBASE-18030 Per Cell TTL tags may get duplicated with increments/Append causing tags length overflow. --- .../apache/hadoop/hbase/regionserver/HRegion.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java index ff968221b2b..cea7c6f3267 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java @@ -8155,7 +8155,19 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi // If we are making the array in here, given we are the last thing checked, we'll be only thing // in the array so set its size to '1' (I saw this being done in earlier version of // tag-handling). - if (tags == null) tags = new ArrayList(1); + if (tags == null) { + tags = new ArrayList(1); + } else { + // Remove existing TTL tags if any + Iterator tagsItr = tags.iterator(); + while (tagsItr.hasNext()) { + Tag tag = tagsItr.next(); + if (tag.getType() == TagType.TTL_TAG_TYPE) { + tagsItr.remove(); + break; + } + } + } tags.add(new Tag(TagType.TTL_TAG_TYPE, Bytes.toBytes(ttl))); return tags; }