[ https://issues.apache.org/jira/browse/PHOENIX-6907?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17738304#comment-17738304 ]
ASF GitHub Bot commented on PHOENIX-6907: ----------------------------------------- virajjasani commented on code in PR #1598: URL: https://github.com/apache/phoenix/pull/1598#discussion_r1245787461 ########## phoenix-core/src/main/java/org/apache/phoenix/iterate/ExplainTable.java: ########## @@ -284,6 +367,102 @@ protected void explain(String prefix, List<String> planSteps, } } + /** + * Retrieve region locations and set the values in the explain plan output. + * + * @param planSteps list of plan steps to add explain plan output to. + * @param explainPlanAttributesBuilder explain plan v2 attributes builder instance. + * @param scansList list of the list of scans, to be used for parallel scans. + */ + private void getRegionLocations(List<String> planSteps, + ExplainPlanAttributesBuilder explainPlanAttributesBuilder, + List<List<Scan>> scansList) { + Future<String> task = executorService.submit( + () -> getRegionLocationsForExplainPlan(explainPlanAttributesBuilder, scansList)); + try { + String regionLocations = task.get(5, TimeUnit.SECONDS); + planSteps.add(regionLocations); + } catch (InterruptedException | ExecutionException | TimeoutException e) { + LOGGER.error("Unable to retrieve region locations task result in 5s", e); + task.cancel(true); + } Review Comment: this would be our own timeout, and if we can't get region locations on time, we rather cancel the task than letting hbase client retry for very long time. @jpisaac does this sound good to you? > Explain Plan should output region locations with servers > -------------------------------------------------------- > > Key: PHOENIX-6907 > URL: https://issues.apache.org/jira/browse/PHOENIX-6907 > Project: Phoenix > Issue Type: Improvement > Reporter: Viraj Jasani > Assignee: Viraj Jasani > Priority: Major > Fix For: 5.2.0, 5.1.4 > > > As of today, explain plan provides details related to scan key range size, > size of the scan lists (for parallel scans), hints, client/server sorted by, > order by, server filter etc. It provides as much close details to the > physical plans as possible. > If we could also make explain plan output to include region locations that > also contains regionserver details on which the region is currently residing, > this might turn out to be really good insights. For full table scans, this > also means that we would end up including very higher number of region > locations and it would not be ideal to print all of them in the output. We > can enforce a limit on the num of region locations to print (default value > could be 10 or so). For point lookup and range scans, we can find the region > locations with regionserver as quite useful for the real time analysis of > slowness experienced by the given query. -- This message was sent by Atlassian Jira (v8.20.10#820010)