Details
-
Bug
-
Status: Resolved
-
Critical
-
Resolution: Fixed
-
None
-
1.3.2, 2.0.0-beta-2, 1.4.2, 2.0.0, 1.2.7
-
None
-
None
-
Reviewed
Description
2018-01-27 22:51:43,794 INFO [hconnection-0x3291b443-shared-pool11-t6] client.AsyncRequestFutureImpl(778): id=5, table=testQuotaStatusFromMaster3, attempt=6/16 failed=20ops, last exception=org.apache.hadoop.hbase.client.WrongRowIOException: org.apache.hadoop.hbase.client.WrongRowIOException: The row in xxx doesn't match the original one aaa at org.apache.hadoop.hbase.client.Mutation.add(Mutation.java:776) at org.apache.hadoop.hbase.client.Put.add(Put.java:282) at org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil.toPut(ProtobufUtil.java:642) at org.apache.hadoop.hbase.regionserver.RSRpcServices.doBatchOp(RSRpcServices.java:952) at org.apache.hadoop.hbase.regionserver.RSRpcServices.doNonAtomicRegionMutation(RSRpcServices.java:896) at org.apache.hadoop.hbase.regionserver.RSRpcServices.multi(RSRpcServices.java:2591) at org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:41560) at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:404) at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:130) at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:324) at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:304)
I noticed this bug when testing the table space quota.
When rs are converting pb mutation to hbase.mutation, the quota exception or cell exception may be thrown.
Unable to find source-code formatter for language: rsrpcservices#dobatchop.java. Available languages are: actionscript, ada, applescript, bash, c, c#, c++, cpp, css, erlang, go, groovy, haskell, html, java, javascript, js, json, lua, none, nyan, objc, perl, php, python, r, rainbow, ruby, scala, sh, sql, swift, visualbasic, xml, yaml for (ClientProtos.Action action: mutations) { MutationProto m = action.getMutation(); Mutation mutation; if (m.getMutateType() == MutationType.PUT) { mutation = ProtobufUtil.toPut(m, cells); batchContainsPuts = true; } else { mutation = ProtobufUtil.toDelete(m, cells); batchContainsDelete = true; } mutationActionMap.put(mutation, action); mArray[i++] = mutation; checkCellSizeLimit(region, mutation); // Check if a space quota disallows this mutation spaceQuotaEnforcement.getPolicyEnforcement(region).check(mutation); quota.addMutation(mutation); }
rs has caught the exception but it doesn't have the cellscanner skip the failed cells.
} catch (IOException ie) { if (atomic) { throw ie; } for (Action mutation : mutations) { builder.addResultOrException(getResultOrException(ie, mutation.getIndex())); } }
The bug results in the WrongRowIOException to remaining mutations since they refer to invalid cells.
Attachments
Attachments
Issue Links
- is blocked by
-
HBASE-19900 Region-level exception destroy the result of batch
- Resolved