This is an automated email from the ASF dual-hosted git repository.
karanmehta93 pushed a commit to branch 4.x-HBase-1.2
in repository https://gitbox.apache.org/repos/asf/phoenix.git
The following commit(s) were added to refs/heads/4.x-HBase-1.2 by this push:
new d442c51 PHOENIX-5101 ScanningResultIterator getScanMetrics throws NPE
(Addendum)
d442c51 is described below
commit d442c5124dab7d6c3f9c004d7a7a78c7cb258ddf
Author: Karan Mehta <[email protected]>
AuthorDate: Wed Apr 3 15:12:19 2019 -0700
PHOENIX-5101 ScanningResultIterator getScanMetrics throws NPE (Addendum)
---
.../phoenix/iterate/ScanningResultIterator.java | 37 ++++++++++++----------
1 file changed, 21 insertions(+), 16 deletions(-)
diff --git
a/phoenix-core/src/main/java/org/apache/phoenix/iterate/ScanningResultIterator.java
b/phoenix-core/src/main/java/org/apache/phoenix/iterate/ScanningResultIterator.java
index 9a656ee..8a1fe5a 100644
---
a/phoenix-core/src/main/java/org/apache/phoenix/iterate/ScanningResultIterator.java
+++
b/phoenix-core/src/main/java/org/apache/phoenix/iterate/ScanningResultIterator.java
@@ -17,17 +17,8 @@
*/
package org.apache.phoenix.iterate;
-import static
org.apache.hadoop.hbase.client.metrics.ScanMetrics.BYTES_IN_REMOTE_RESULTS_METRIC_NAME;
-import static
org.apache.hadoop.hbase.client.metrics.ScanMetrics.BYTES_IN_RESULTS_METRIC_NAME;
-import static
org.apache.hadoop.hbase.client.metrics.ScanMetrics.MILLIS_BETWEEN_NEXTS_METRIC_NAME;
-import static
org.apache.hadoop.hbase.client.metrics.ScanMetrics.NOT_SERVING_REGION_EXCEPTION_METRIC_NAME;
-import static
org.apache.hadoop.hbase.client.metrics.ScanMetrics.REGIONS_SCANNED_METRIC_NAME;
-import static
org.apache.hadoop.hbase.client.metrics.ScanMetrics.REMOTE_RPC_CALLS_METRIC_NAME;
-import static
org.apache.hadoop.hbase.client.metrics.ScanMetrics.REMOTE_RPC_RETRIES_METRIC_NAME;
-import static
org.apache.hadoop.hbase.client.metrics.ScanMetrics.RPC_CALLS_METRIC_NAME;
-import static
org.apache.hadoop.hbase.client.metrics.ScanMetrics.RPC_RETRIES_METRIC_NAME;
-import static
org.apache.hadoop.hbase.client.metrics.ServerSideScanMetrics.COUNT_OF_ROWS_FILTERED_KEY_METRIC_NAME;
-import static
org.apache.hadoop.hbase.client.metrics.ServerSideScanMetrics.COUNT_OF_ROWS_SCANNED_KEY_METRIC_NAME;
+import static
org.apache.hadoop.hbase.client.metrics.ServerSideScanMetrics.COUNT_OF_ROWS_FILTERED_KEY;
+import static
org.apache.hadoop.hbase.client.metrics.ServerSideScanMetrics.COUNT_OF_ROWS_SCANNED_KEY;
import static
org.apache.phoenix.monitoring.GlobalClientMetrics.GLOBAL_HBASE_COUNT_BYTES_IN_REMOTE_RESULTS;
import static
org.apache.phoenix.monitoring.GlobalClientMetrics.GLOBAL_HBASE_COUNT_BYTES_REGION_SERVER_RESULTS;
import static
org.apache.phoenix.monitoring.GlobalClientMetrics.GLOBAL_HBASE_COUNT_MILLS_BETWEEN_NEXTS;
@@ -59,12 +50,26 @@ import org.apache.phoenix.util.ServerUtil;
public class ScanningResultIterator implements ResultIterator {
private final ResultScanner scanner;
+ private final Scan scan;
private final ScanMetricsHolder scanMetricsHolder;
boolean scanMetricsUpdated;
boolean scanMetricsEnabled;
+ // These metric names are how HBase refers them
+ // Since HBase stores these strings as static final, we are using the same
here
+ static final String RPC_CALLS_METRIC_NAME = "RPC_CALLS";
+ static final String REMOTE_RPC_CALLS_METRIC_NAME = "REMOTE_RPC_CALLS";
+ static final String MILLIS_BETWEEN_NEXTS_METRIC_NAME =
"MILLIS_BETWEEN_NEXTS";
+ static final String NOT_SERVING_REGION_EXCEPTION_METRIC_NAME =
"NOT_SERVING_REGION_EXCEPTION";
+ static final String BYTES_IN_RESULTS_METRIC_NAME = "BYTES_IN_RESULTS";
+ static final String BYTES_IN_REMOTE_RESULTS_METRIC_NAME =
"BYTES_IN_REMOTE_RESULTS";
+ static final String REGIONS_SCANNED_METRIC_NAME = "REGIONS_SCANNED";
+ static final String RPC_RETRIES_METRIC_NAME = "RPC_RETRIES";
+ static final String REMOTE_RPC_RETRIES_METRIC_NAME = "REMOTE_RPC_RETRIES";
+
public ScanningResultIterator(ResultScanner scanner, Scan scan,
ScanMetricsHolder scanMetricsHolder) {
this.scanner = scanner;
+ this.scan = scan;
this.scanMetricsHolder = scanMetricsHolder;
scanMetricsUpdated = false;
scanMetricsEnabled = scan.isScanMetricsEnabled();
@@ -91,7 +96,7 @@ public class ScanningResultIterator implements ResultIterator
{
private void getScanMetrics() {
if (scanMetricsEnabled && !scanMetricsUpdated) {
- ScanMetrics scanMetrics = scanner.getScanMetrics();
+ ScanMetrics scanMetrics = scan.getScanMetrics();
Map<String, Long> scanMetricsMap = scanMetrics.getMetricsMap();
scanMetricsHolder.setScanMetricMap(scanMetricsMap);
@@ -114,9 +119,9 @@ public class ScanningResultIterator implements
ResultIterator {
changeMetric(scanMetricsHolder.getCountOfRemoteRPCRetries(),
scanMetricsMap.get(REMOTE_RPC_RETRIES_METRIC_NAME));
changeMetric(scanMetricsHolder.getCountOfRowsScanned(),
- scanMetricsMap.get(COUNT_OF_ROWS_SCANNED_KEY_METRIC_NAME));
+ scanMetricsMap.get(COUNT_OF_ROWS_SCANNED_KEY));
changeMetric(scanMetricsHolder.getCountOfRowsFiltered(),
-
scanMetricsMap.get(COUNT_OF_ROWS_FILTERED_KEY_METRIC_NAME));
+ scanMetricsMap.get(COUNT_OF_ROWS_FILTERED_KEY));
changeMetric(GLOBAL_SCAN_BYTES,
scanMetricsMap.get(BYTES_IN_RESULTS_METRIC_NAME));
@@ -139,9 +144,9 @@ public class ScanningResultIterator implements
ResultIterator {
changeMetric(GLOBAL_HBASE_COUNT_REMOTE_RPC_RETRIES,
scanMetricsMap.get(REMOTE_RPC_RETRIES_METRIC_NAME));
changeMetric(GLOBAL_HBASE_COUNT_ROWS_SCANNED,
- scanMetricsMap.get(COUNT_OF_ROWS_SCANNED_KEY_METRIC_NAME));
+ scanMetricsMap.get(COUNT_OF_ROWS_SCANNED_KEY));
changeMetric(GLOBAL_HBASE_COUNT_ROWS_FILTERED,
-
scanMetricsMap.get(COUNT_OF_ROWS_FILTERED_KEY_METRIC_NAME));
+ scanMetricsMap.get(COUNT_OF_ROWS_FILTERED_KEY));
scanMetricsUpdated = true;
}