This is an automated email from the ASF dual-hosted git repository.
htowaileb pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git
The following commit(s) were added to refs/heads/master by this push:
new 4742f32b25 [ASTERIXDB-3278][API] Add buffercache hit ratio to metrics
new 6295e2a949 Merge branch 'trinity' into 'master'
4742f32b25 is described below
commit 4742f32b2574f72a99137fbc85b36cdf2cea0324
Author: Ian Maxon <[email protected]>
AuthorDate: Sun Nov 12 20:40:35 2023 -0800
[ASTERIXDB-3278][API] Add buffercache hit ratio to metrics
- user model changes: yes
- storage format changes: no
- interface changes: no
Details:
Move the buffercache hit ratio information to the metrics and
always collect it, not just when profiling
Change-Id: I568a2df4594bdde19932ba72362c9c61a96a9182
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17858
Integration-Tests: Jenkins <[email protected]>
Tested-by: Jenkins <[email protected]>
Reviewed-by: Ian Maxon <[email protected]>
Reviewed-by: Wail Alkowaileet <[email protected]>
---
.../asterix/translator/IStatementExecutor.java | 11 ++++++++++-
.../apache/asterix/translator/ResultMetadata.java | 13 +++++++++++--
.../api/http/server/NCQueryServiceServlet.java | 1 +
.../api/http/server/QueryResultApiServlet.java | 3 ++-
.../asterix/api/http/server/QueryServiceServlet.java | 7 ++++---
.../apache/asterix/app/result/JobResultCallback.java | 5 +++++
.../apache/asterix/app/result/ResponseMetrics.java | 9 ++++++++-
.../asterix/app/result/fields/MetricsPrinter.java | 12 ++++++++++--
.../asterix/app/translator/QueryTranslator.java | 1 +
.../cache-residency/cache-residency.001.post.http | 20 ++++++++++++++++++++
.../cache-residency/cache-residency.002.post.http | 20 ++++++++++++++++++++
.../cache-residency/cache-residency.001.regexjson | 19 +++++++++++++++++++
.../cache-residency/cache-residency.002.regexjson | 20 ++++++++++++++++++++
.../request-param-validation-400-BAD.01.regexjson | 1 +
.../warnings-limit/warnings-limit.06.regexadm | 1 +
.../src/test/resources/runtimets/testsuite_sqlpp.xml | 5 +++++
.../control/common/job/profiling/StatsCollector.java | 3 ++-
.../java/org/apache/hyracks/control/nc/Task.java | 10 ----------
18 files changed, 140 insertions(+), 21 deletions(-)
diff --git
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/IStatementExecutor.java
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/IStatementExecutor.java
index e10046e55f..93f5990845 100644
---
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/IStatementExecutor.java
+++
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/IStatementExecutor.java
@@ -106,7 +106,7 @@ public interface IStatementExecutor {
}
class Stats implements Serializable {
- private static final long serialVersionUID = 5885273238208454611L;
+ private static final long serialVersionUID = 5885273238208454612L;
public enum ProfileType {
COUNTS("counts"),
@@ -138,6 +138,7 @@ public interface IStatementExecutor {
private ProfileType profileType;
private long totalWarningsCount;
private long compileTime;
+ private double bufferCacheHitRatio;
public long getCount() {
return count;
@@ -204,6 +205,14 @@ public interface IStatementExecutor {
public long getCompileTime() {
return compileTime;
}
+
+ public void setBufferCacheHitRatio(double bufferCacheHitRatio) {
+ this.bufferCacheHitRatio = bufferCacheHitRatio;
+ }
+
+ public double getBufferCacheHitRatio() {
+ return bufferCacheHitRatio;
+ }
}
class Profile implements Serializable {
diff --git
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/ResultMetadata.java
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/ResultMetadata.java
index 60f4939a43..f47fce12f5 100644
---
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/ResultMetadata.java
+++
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/ResultMetadata.java
@@ -27,13 +27,14 @@ import org.apache.hyracks.api.result.IResultMetadata;
import com.fasterxml.jackson.databind.node.ObjectNode;
public class ResultMetadata implements IResultMetadata {
- private static final long serialVersionUID = 1905367559307369034L;
+ private static final long serialVersionUID = 1905367559307369035L;
private final SessionConfig.OutputFormat format;
private long jobDuration;
private long processedObjects;
- private ObjectNode profile;
private long diskIoCount;
+ private double bufferCacheHitRatio;
+ private ObjectNode profile;
private Set<Warning> warnings;
private long totalWarningsCount;
private transient List<Object> outputTypes;
@@ -59,6 +60,14 @@ public class ResultMetadata implements IResultMetadata {
this.jobDuration = jobDuration;
}
+ public void setBufferCacheHitRatio(double bufferCacheHitRatio) {
+ this.bufferCacheHitRatio = bufferCacheHitRatio;
+ }
+
+ public double getBufferCacheHitRatio() {
+ return bufferCacheHitRatio;
+ }
+
public void setWarnings(Set<Warning> warnings) {
this.warnings = warnings;
}
diff --git
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryServiceServlet.java
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryServiceServlet.java
index cb5a3a5fae..a5e13c1f2e 100644
---
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryServiceServlet.java
+++
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/NCQueryServiceServlet.java
@@ -207,6 +207,7 @@ public class NCQueryServiceServlet extends
QueryServiceServlet {
stats.updateTotalWarningsCount(responseStats.getTotalWarningsCount());
stats.setCompileTime(responseStats.getCompileTime());
stats.setQueueWaitTime(responseStats.getQueueWaitTime());
+ stats.setBufferCacheHitRatio(responseStats.getBufferCacheHitRatio());
}
private static void
updatePropertiesFromCC(IStatementExecutor.StatementProperties
statementProperties,
diff --git
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryResultApiServlet.java
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryResultApiServlet.java
index 680feeb178..ad2a5b5fd5 100644
---
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryResultApiServlet.java
+++
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryResultApiServlet.java
@@ -102,7 +102,8 @@ public class QueryResultApiServlet extends
AbstractQueryApiServlet {
printer.printResults();
ResponseMetrics metrics = ResponseMetrics.of(System.nanoTime()
- elapsedStart,
metadata.getJobDuration(), stats.getCount(),
stats.getSize(), metadata.getProcessedObjects(), 0,
- metadata.getTotalWarningsCount(),
stats.getCompileTime(), stats.getQueueWaitTime());
+ metadata.getTotalWarningsCount(),
stats.getCompileTime(), stats.getQueueWaitTime(),
+ stats.getBufferCacheHitRatio());
printer.addFooterPrinter(new MetricsPrinter(metrics,
HttpUtil.getPreferredCharset(request)));
if (metadata.getJobProfile() != null) {
printer.addFooterPrinter(new
ProfilePrinter(metadata.getJobProfile()));
diff --git
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java
index 6678c52851..f28579d188 100644
---
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java
+++
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java
@@ -357,9 +357,10 @@ public class QueryServiceServlet extends
AbstractQueryApiServlet {
// in case of ASYNC delivery, the status is printed by query
translator
responsePrinter.addFooterPrinter(new
StatusPrinter(executionState.getResultStatus()));
}
- final ResponseMetrics metrics = ResponseMetrics.of(System.nanoTime() -
elapsedStart, executionState.duration(),
- stats.getCount(), stats.getSize(),
stats.getProcessedObjects(), errorCount,
- stats.getTotalWarningsCount(), stats.getCompileTime(),
stats.getQueueWaitTime());
+ final ResponseMetrics metrics =
+ ResponseMetrics.of(System.nanoTime() - elapsedStart,
executionState.duration(), stats.getCount(),
+ stats.getSize(), stats.getProcessedObjects(),
errorCount, stats.getTotalWarningsCount(),
+ stats.getCompileTime(), stats.getQueueWaitTime(),
stats.getBufferCacheHitRatio());
responsePrinter.addFooterPrinter(new MetricsPrinter(metrics,
resultCharset));
if (isPrintingProfile(stats)) {
responsePrinter.addFooterPrinter(new
ProfilePrinter(stats.getJobProfile()));
diff --git
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/JobResultCallback.java
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/JobResultCallback.java
index ebf169fc65..d1a1008f05 100644
---
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/JobResultCallback.java
+++
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/JobResultCallback.java
@@ -71,6 +71,8 @@ public class JobResultCallback implements IJobResultCallback {
private void aggregateJobStats(JobId jobId, ResultMetadata metadata) {
long processedObjects = 0;
long aggregateTotalWarningsCount = 0;
+ long pagesRead = 0;
+ long nonPagedReads = 0;
Set<Warning> AggregateWarnings = new HashSet<>();
IJobManager jobManager =
((ClusterControllerService)
appCtx.getServiceContext().getControllerService()).getJobManager();
@@ -83,6 +85,8 @@ public class JobResultCallback implements IJobResultCallback {
final Collection<TaskProfile> jobletTasksProfile =
jp.getTaskProfiles().values();
for (TaskProfile tp : jobletTasksProfile) {
processedObjects +=
tp.getStatsCollector().getAggregatedStats().getInputTupleCounter().get();
+ pagesRead +=
tp.getStatsCollector().getAggregatedStats().getPageReads().get();
+ nonPagedReads +=
tp.getStatsCollector().getAggregatedStats().coldReadCounter().get();
aggregateTotalWarningsCount += tp.getTotalWarningsCount();
Set<Warning> taskWarnings = tp.getWarnings();
if (AggregateWarnings.size() < maxWarnings &&
!taskWarnings.isEmpty()) {
@@ -96,6 +100,7 @@ public class JobResultCallback implements IJobResultCallback
{
metadata.setQueueWaitTimeInNanos(run.getJobProfile().getQueueWaitTimeInNanos());
}
metadata.setProcessedObjects(processedObjects);
+ metadata.setBufferCacheHitRatio(pagesRead > 0 ? (pagesRead -
nonPagedReads) / pagesRead : Double.NaN);
metadata.setWarnings(AggregateWarnings);
metadata.setTotalWarningsCount(aggregateTotalWarningsCount);
if (run != null && run.getFlags() != null &&
run.getFlags().contains(JobFlag.PROFILE_RUNTIME)) {
diff --git
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/ResponseMetrics.java
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/ResponseMetrics.java
index 08e7702429..5f709375fd 100644
---
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/ResponseMetrics.java
+++
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/ResponseMetrics.java
@@ -30,12 +30,14 @@ public class ResponseMetrics {
private long diskIoCount;
private long compileTime;
private long queueWaitTime;
+ private double bufferCacheHitRatio;
private ResponseMetrics() {
}
public static ResponseMetrics of(long elapsedTime, long executionTime,
long resultCount, long resultSize,
- long processedObjects, long errorCount, long warnCount, long
compileTime, long queueWaitTime) {
+ long processedObjects, long errorCount, long warnCount, long
compileTime, long queueWaitTime,
+ double bufferCacheHitRatio) {
ResponseMetrics metrics = new ResponseMetrics();
metrics.elapsedTime = elapsedTime;
metrics.executionTime = executionTime;
@@ -46,6 +48,7 @@ public class ResponseMetrics {
metrics.warnCount = warnCount;
metrics.compileTime = compileTime;
metrics.queueWaitTime = queueWaitTime;
+ metrics.bufferCacheHitRatio = bufferCacheHitRatio;
return metrics;
}
@@ -84,4 +87,8 @@ public class ResponseMetrics {
public long getQueueWaitTime() {
return queueWaitTime;
}
+
+ public double getBufferCacheHitRatio() {
+ return bufferCacheHitRatio;
+ }
}
diff --git
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/fields/MetricsPrinter.java
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/fields/MetricsPrinter.java
index e001d296ba..93fb6d4b86 100644
---
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/fields/MetricsPrinter.java
+++
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/result/fields/MetricsPrinter.java
@@ -38,7 +38,8 @@ public class MetricsPrinter implements IResponseFieldPrinter {
RESULT_SIZE("resultSize"),
ERROR_COUNT("errorCount"),
PROCESSED_OBJECTS_COUNT("processedObjects"),
- WARNING_COUNT("warningCount");
+ WARNING_COUNT("warningCount"),
+ BUFFERCACHE_HIT_RATIO("bufferCacheHitRatio");
private final String str;
@@ -84,9 +85,16 @@ public class MetricsPrinter implements IResponseFieldPrinter
{
pw.print("\n\t");
final boolean hasErrors = metrics.getErrorCount() > 0;
final boolean hasWarnings = metrics.getWarnCount() > 0;
+ final boolean usedCache =
!(Double.isNaN(metrics.getBufferCacheHitRatio()));
ResultUtil.printField(pw, Metrics.PROCESSED_OBJECTS_COUNT.str(),
metrics.getProcessedObjects(),
- hasWarnings || hasErrors);
+ usedCache || hasWarnings || hasErrors);
pw.print("\n");
+ if (usedCache) {
+ pw.print("\t");
+ String pctValue = String.format("%.2f%%",
metrics.getBufferCacheHitRatio() * 100);
+ ResultUtil.printField(pw, Metrics.BUFFERCACHE_HIT_RATIO.str(),
pctValue, hasWarnings || hasErrors);
+ pw.print("\n");
+ }
if (hasWarnings) {
pw.print("\t");
ResultUtil.printField(pw, Metrics.WARNING_COUNT.str(),
metrics.getWarnCount(), hasErrors);
diff --git
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
index d8b5d846cb..8b635a2b22 100644
---
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
+++
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
@@ -4779,6 +4779,7 @@ public class QueryTranslator extends
AbstractLangTranslator implements IStatemen
.getResultMetadata(jobId, rsId);
stats.setProcessedObjects(resultMetadata.getProcessedObjects());
stats.setQueueWaitTime(resultMetadata.getQueueWaitTimeInNanos());
+ stats.setBufferCacheHitRatio(resultMetadata.getBufferCacheHitRatio());
if (jobFlags.contains(JobFlag.PROFILE_RUNTIME)) {
stats.setJobProfile(resultMetadata.getJobProfile());
apiFramework.generateOptimizedLogicalPlanWithProfile(resultMetadata.getJobProfile());
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/api/cache-residency/cache-residency.001.post.http
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/api/cache-residency/cache-residency.001.post.http
new file mode 100644
index 0000000000..0edc12a570
--- /dev/null
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/api/cache-residency/cache-residency.001.post.http
@@ -0,0 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+/query/service
+--body={"statement": "from [1, 2] as v select v;"}
\ No newline at end of file
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/api/cache-residency/cache-residency.002.post.http
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/api/cache-residency/cache-residency.002.post.http
new file mode 100644
index 0000000000..9bf09363b6
--- /dev/null
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/api/cache-residency/cache-residency.002.post.http
@@ -0,0 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+/query/service
+--body={"statement": "SELECT COUNT(*) FROM Metadata.`Dataset`"}
\ No newline at end of file
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cache-residency/cache-residency.001.regexjson
b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cache-residency/cache-residency.001.regexjson
new file mode 100644
index 0000000000..173a9a50c8
--- /dev/null
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cache-residency/cache-residency.001.regexjson
@@ -0,0 +1,19 @@
+{
+ "requestID": "R{.*}",
+ "signature": {
+ "*": "*"
+ },
+ "type": "application/x-adm",
+ "results": [ "{ \"v\": 1 }\n", "{ \"v\": 2 }\n" ],
+ "plans": "R{.*}",
+ "status": "success",
+ "metrics": {
+ "elapsedTime": "R{.*}",
+ "executionTime": "R{.*}",
+ "compileTime": "R{.*}",
+ "queueWaitTime": "R{.*}",
+ "resultCount": 2,
+ "resultSize": 32,
+ "processedObjects": 0
+ }
+}
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cache-residency/cache-residency.002.regexjson
b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cache-residency/cache-residency.002.regexjson
new file mode 100644
index 0000000000..8f5cf761e1
--- /dev/null
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/cache-residency/cache-residency.002.regexjson
@@ -0,0 +1,20 @@
+{
+ "requestID": "R{.*}",
+ "signature": {
+ "*": "*"
+ },
+ "type": "application/x-adm",
+ "results": [ "{ \"$1\": 17 }\n" ],
+ "plans": "R{.*}",
+ "status": "success",
+ "metrics": {
+ "elapsedTime": "R{.*}",
+ "executionTime": "R{.*}",
+ "compileTime": "R{.*}",
+ "queueWaitTime": "R{.*}",
+ "resultCount": 1,
+ "resultSize": 18,
+ "processedObjects": 17,
+ "bufferCacheHitRatio": "100.00%"
+ }
+}
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/request-param-validation-400-BAD/request-param-validation-400-BAD.01.regexjson
b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/request-param-validation-400-BAD/request-param-validation-400-BAD.01.regexjson
index bd58b527ca..823515ba08 100644
---
a/asterixdb/asterix-app/src/test/resources/runtimets/results/api/request-param-validation-400-BAD/request-param-validation-400-BAD.01.regexjson
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/results/api/request-param-validation-400-BAD/request-param-validation-400-BAD.01.regexjson
@@ -11,6 +11,7 @@
"resultCount": 0,
"resultSize": 0,
"processedObjects": 0,
+ "bufferCacheHitRatio": "0.00%",
"errorCount": 1
}
}
\ No newline at end of file
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.06.regexadm
b/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.06.regexadm
index 7b689f64bd..39fdb09f4e 100644
---
a/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.06.regexadm
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/results/warnings/warnings-limit/warnings-limit.06.regexadm
@@ -17,6 +17,7 @@
\s*\Q"resultCount": \E[0-9]+\Q,\E
\s*\Q"resultSize": \E[0-9]+\Q,\E
\s*\Q"processedObjects": \E[0-9]+\Q,\E
+\s*\Q"bufferCacheHitRatio": "\E[^"]+\Q",\E
\s*\Q"warningCount": 2\E
\s*\Q}\E
\s*\Q}\E\s*
\ No newline at end of file
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
index 81f40c7233..4bc82f4679 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
@@ -100,6 +100,11 @@
<output-dir
compare="Text">request-param-validation-400-BAD</output-dir>
</compilation-unit>
</test-case>
+ <test-case FilePath="api">
+ <compilation-unit name="cache-residency">
+ <output-dir compare="Text">cache-residency</output-dir>
+ </compilation-unit>
+ </test-case>
<test-case FilePath="api">
<compilation-unit name="request-param">
<output-dir compare="Text">request-param</output-dir>
diff --git
a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/profiling/StatsCollector.java
b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/profiling/StatsCollector.java
index 76c8017e95..26c664a444 100644
---
a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/profiling/StatsCollector.java
+++
b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/job/profiling/StatsCollector.java
@@ -31,7 +31,7 @@ import org.apache.hyracks.api.job.profiling.NoOpOperatorStats;
import org.apache.hyracks.api.job.profiling.OperatorStats;
public class StatsCollector implements IStatsCollector {
- private static final long serialVersionUID = 6858817639895434573L;
+ private static final long serialVersionUID = 6858817639895434574L;
private final Map<String, IOperatorStats> operatorStatsMap = new
LinkedHashMap<>();
@@ -66,6 +66,7 @@ public class StatsCollector implements IStatsCollector {
aggregatedStats.getInputTupleCounter().update(stats.getInputTupleCounter().get());
aggregatedStats.getTimeCounter().update(stats.getTimeCounter().get());
aggregatedStats.getPageReads().update(stats.getPageReads().get());
+
aggregatedStats.coldReadCounter().update(stats.coldReadCounter().get());
}
return aggregatedStats;
}
diff --git
a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/Task.java
b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/Task.java
index 900ac7e58c..0c5c23329f 100644
---
a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/Task.java
+++
b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/Task.java
@@ -515,9 +515,6 @@ public class Task implements IHyracksTaskContext,
ICounterContext, Runnable {
@Override
public synchronized void subscribeThreadToStats(IThreadStatsCollector
threadStatsCollector) {
- if (!isRuntimeProfilingEnabled()) {
- return;
- }
synchronized (threadStatsCollectors) {
threadStatsCollectors.add(threadStatsCollector);
final long threadId = Thread.currentThread().getId();
@@ -528,9 +525,6 @@ public class Task implements IHyracksTaskContext,
ICounterContext, Runnable {
@Override
public synchronized void unsubscribeThreadFromStats() {
- if (!isRuntimeProfilingEnabled()) {
- return;
- }
synchronized (threadStatsCollectors) {
threadStatsCollectors.forEach(IThreadStatsCollector::unsubscribe);
}
@@ -572,8 +566,4 @@ public class Task implements IHyracksTaskContext,
ICounterContext, Runnable {
return "{ \"class\" : \"" + getClass().getSimpleName() + "\", \"node\"
: \"" + ncs.getId() + "\" \"jobId\" : \""
+ joblet.getJobId() + "\", \"taskId\" : \"" + taskAttemptId +
"\" }";
}
-
- private boolean isRuntimeProfilingEnabled() {
- return getJobFlags().contains(JobFlag.PROFILE_RUNTIME);
- }
}