HBASE-22274 Cell size limit check on append considers cell's previous size

change
This commit is contained in:
Xu Cang 2019-04-22 10:12:29 -07:00
parent 4d64dd2e82
commit 987d36879c
No known key found for this signature in database
GPG Key ID: 8E6C8FEDCA866394
2 changed files with 10 additions and 2 deletions

View File

@ -8101,7 +8101,15 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
break; break;
default: throw new UnsupportedOperationException(op.toString()); default: throw new UnsupportedOperationException(op.toString());
} }
int newCellSize = PrivateCellUtil.estimatedSerializedSizeOf(newCell);
if (newCellSize > this.maxCellSize) {
String msg = "Cell with size " + newCellSize + " exceeds limit of " +
this.maxCellSize + " bytes";
if (LOG.isDebugEnabled()) {
LOG.debug(msg);
}
throw new DoNotRetryIOException(msg);
}
cellPairs.add(new Pair<>(currentValue, newCell)); cellPairs.add(new Pair<>(currentValue, newCell));
// Add to results to get returned to the Client. If null, cilent does not want results. // Add to results to get returned to the Client. If null, cilent does not want results.
if (results != null) { if (results != null) {

View File

@ -6417,7 +6417,7 @@ public class TestFromClientSide {
// expected // expected
} }
try { try {
t.append(new Append(ROW).addColumn(FAMILY, QUALIFIER, new byte[10 * 1024])); t.append(new Append(ROW).addColumn(FAMILY, QUALIFIER, new byte[2 * 1024]));
fail("Oversize cell failed to trigger exception"); fail("Oversize cell failed to trigger exception");
} catch (IOException e) { } catch (IOException e) {
// expected // expected