virajjasani commented on code in PR #1884:
URL: https://github.com/apache/phoenix/pull/1884#discussion_r1618076149
##########
phoenix-core-server/src/main/java/org/apache/phoenix/hbase/index/IndexRegionObserver.java:
##########
@@ -1308,6 +1345,19 @@ public void
postBatchMutateIndispensably(ObserverContext<RegionCoprocessorEnviro
try {
if (success) {
context.currentPhase = BatchMutatePhase.POST;
+ for (int i = 0; i < miniBatchOp.size(); i++) {
+ BatchMutateContext.UpdateStatus updateStatus =
context.getUpdateStatus(i);
+ if
(BatchMutateContext.UpdateStatus.UPDATE.equals(updateStatus)) {
+ byte[] retVal = PInteger.INSTANCE.toBytes(1);
+ Cell cell = PhoenixKeyValueUtil.newKeyValue(
+ miniBatchOp.getOperation(i).getRow(),
+ EMPTY_BYTE_ARRAY, EMPTY_BYTE_ARRAY, 0, retVal, 0,
+ retVal.length);
+ Result result = Result.create(new
ArrayList<>(Arrays.asList(cell)));
+ miniBatchOp.setOperationStatus(i,
+ new OperationStatus(OperationStatusCode.SUCCESS,
result));
+ }
+ }
Review Comment:
While that is true, i was thinking of two cases:
1. If there is a bug at server side (HBase or Phoenix), and the client
starts receiving null Result object always, we would not know the difference b/
server returning null object by intention vs the buggy behavior causing null
override to an actual non-null object that the server is supposed to send. If
server always sends non-null object and client expects the same, the
implementation is a bit more solid and backward compatible regardless of
client-server versions combination.
2. In future, when we need to introduce JDBC API returning Result object
with values, we anyways need to incorporate this logic.
How about we do this: keep the above code same, but wrap it within if
condition:
`if(context.hasAtomic && miniBatchOp.size() == 1)`? We also no need to use
for loop as we know the batch size is 1 anyways.
This will eliminate the overhead of this logic for regular updates as well
as atomic updates with batch size > 1.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]