[ https://issues.apache.org/jira/browse/PHOENIX-6907?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17738302#comment-17738302 ]
ASF GitHub Bot commented on PHOENIX-6907: ----------------------------------------- virajjasani commented on code in PR #1598: URL: https://github.com/apache/phoenix/pull/1598#discussion_r1245786344 ########## phoenix-core/src/main/java/org/apache/phoenix/iterate/ExplainTable.java: ########## @@ -46,27 +61,37 @@ import org.apache.phoenix.parse.HintNode.Hint; import org.apache.phoenix.query.KeyRange; import org.apache.phoenix.query.KeyRange.Bound; +import org.apache.phoenix.query.QueryServices; +import org.apache.phoenix.query.QueryServicesOptions; import org.apache.phoenix.schema.PColumn; import org.apache.phoenix.schema.RowKeySchema; import org.apache.phoenix.schema.SortOrder; import org.apache.phoenix.schema.TableRef; import org.apache.phoenix.schema.types.PDataType; import org.apache.phoenix.schema.types.PInteger; +import org.apache.phoenix.thirdparty.com.google.common.util.concurrent.ThreadFactoryBuilder; import org.apache.phoenix.util.MetaDataUtil; import org.apache.phoenix.util.ScanUtil; import org.apache.phoenix.util.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public abstract class ExplainTable { + + private static final Logger LOGGER = LoggerFactory.getLogger(ExplainTable.class); private static final List<KeyRange> EVERYTHING = Collections.singletonList(KeyRange.EVERYTHING_RANGE); public static final String POINT_LOOKUP_ON_STRING = "POINT LOOKUP ON "; + public static final String REGION_LOCATIONS = " (region locations = "; + protected final StatementContext context; protected final TableRef tableRef; protected final GroupBy groupBy; protected final OrderBy orderBy; protected final HintNode hint; protected final Integer limit; protected final Integer offset; + private final ExecutorService executorService; Review Comment: this is because we want to have our own timeouts rather than relying on hbase client timeouts. if for some reason, we can't get region location due to some transient issue, client will keep retrying based on retry configs, but it would not be appropriate to block output of explain plan just because of that. > 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)