Description
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.
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);