[ https://issues.apache.org/jira/browse/PHOENIX-5556?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
chenglei updated PHOENIX-5556: ------------------------------ Attachment: PHOENIX-5556_v1-4.x-HBase-1.4.patch > Avoid repeatedly loading IndexMetaData For IndexRegionObserver > --------------------------------------------------------------- > > Key: PHOENIX-5556 > URL: https://issues.apache.org/jira/browse/PHOENIX-5556 > Project: Phoenix > Issue Type: Bug > Affects Versions: 4.15.0, 5.1.0 > Reporter: Chenglei > Assignee: chenglei > Priority: Major > Attachments: PHOENIX-5556_v1-4.x-HBase-1.4.patch > > > Loading {{IndexMetaData}} is a somewhat expensive operation because it may > deserialize from scan attribute. In following > {{IndexRegionObserver.preBatchMutateWithExceptions}} method, > {{IndexMetaData}} is loaded already for line 613, but in > {{IndexRegionObserver.prepareIndexMutations}} method which is invoked by line > 639, {{IndexMetaData}} is loaded again, which is unnecessary. > {code:java} > 610 public void > preBatchMutateWithExceptions(ObserverContext<RegionCoprocessorEnvironment> c, > 611 MiniBatchOperationInProgress<Mutation> miniBatchOp) > throws Throwable { > 612 ignoreAtomicOperations(miniBatchOp); > 613 BatchMutateContext context = new > BatchMutateContext(this.builder.getIndexMetaData(miniBatchOp).getClientVersion()); > 614 setBatchMutateContext(c, context); > 615 Mutation firstMutation = miniBatchOp.getOperation(0); > .... > 639 prepareIndexMutations(c, miniBatchOp, context, mutations, now); > 640 > metricSource.updateIndexPrepareTime(EnvironmentEdgeManager.currentTimeMillis() > - start); > {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)