Merge "Clear the past buckets for no-report metrics" into pi-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
c0775117c4
@@ -122,6 +122,12 @@ void CountMetricProducer::onSlicedConditionMayChangeLocked(bool overallCondition
|
||||
VLOG("Metric %lld onSlicedConditionMayChange", (long long)mMetricId);
|
||||
}
|
||||
|
||||
|
||||
void CountMetricProducer::clearPastBucketsLocked(const int64_t dumpTimeNs) {
|
||||
flushIfNeededLocked(dumpTimeNs);
|
||||
mPastBuckets.clear();
|
||||
}
|
||||
|
||||
void CountMetricProducer::onDumpReportLocked(const int64_t dumpTimeNs,
|
||||
const bool include_current_partial_bucket,
|
||||
ProtoOutputStream* protoOutput) {
|
||||
|
||||
@@ -59,6 +59,8 @@ private:
|
||||
const bool include_current_partial_bucket,
|
||||
android::util::ProtoOutputStream* protoOutput) override;
|
||||
|
||||
void clearPastBucketsLocked(const int64_t dumpTimeNs) override;
|
||||
|
||||
// Internal interface to handle condition change.
|
||||
void onConditionChangedLocked(const bool conditionMet, const int64_t eventTime) override;
|
||||
|
||||
|
||||
@@ -438,6 +438,11 @@ void DurationMetricProducer::dropDataLocked(const int64_t dropTimeNs) {
|
||||
mPastBuckets.clear();
|
||||
}
|
||||
|
||||
void DurationMetricProducer::clearPastBucketsLocked(const int64_t dumpTimeNs) {
|
||||
flushIfNeededLocked(dumpTimeNs);
|
||||
mPastBuckets.clear();
|
||||
}
|
||||
|
||||
void DurationMetricProducer::onDumpReportLocked(const int64_t dumpTimeNs,
|
||||
const bool include_current_partial_bucket,
|
||||
ProtoOutputStream* protoOutput) {
|
||||
|
||||
@@ -65,6 +65,8 @@ private:
|
||||
const bool include_current_partial_bucket,
|
||||
android::util::ProtoOutputStream* protoOutput) override;
|
||||
|
||||
void clearPastBucketsLocked(const int64_t dumpTimeNs) override;
|
||||
|
||||
// Internal interface to handle condition change.
|
||||
void onConditionChangedLocked(const bool conditionMet, const int64_t eventTime) override;
|
||||
|
||||
|
||||
@@ -100,6 +100,10 @@ std::unique_ptr<std::vector<uint8_t>> serializeProtoLocked(ProtoOutputStream& pr
|
||||
return buffer;
|
||||
}
|
||||
|
||||
void EventMetricProducer::clearPastBucketsLocked(const int64_t dumpTimeNs) {
|
||||
mProto->clear();
|
||||
}
|
||||
|
||||
void EventMetricProducer::onDumpReportLocked(const int64_t dumpTimeNs,
|
||||
const bool include_current_partial_bucket,
|
||||
ProtoOutputStream* protoOutput) {
|
||||
|
||||
@@ -49,6 +49,7 @@ private:
|
||||
void onDumpReportLocked(const int64_t dumpTimeNs,
|
||||
const bool include_current_partial_bucket,
|
||||
android::util::ProtoOutputStream* protoOutput) override;
|
||||
void clearPastBucketsLocked(const int64_t dumpTimeNs) override;
|
||||
|
||||
// Internal interface to handle condition change.
|
||||
void onConditionChangedLocked(const bool conditionMet, const int64_t eventTime) override;
|
||||
|
||||
@@ -160,6 +160,12 @@ void GaugeMetricProducer::dumpStatesLocked(FILE* out, bool verbose) const {
|
||||
}
|
||||
}
|
||||
|
||||
void GaugeMetricProducer::clearPastBucketsLocked(const int64_t dumpTimeNs) {
|
||||
flushIfNeededLocked(dumpTimeNs);
|
||||
mPastBuckets.clear();
|
||||
mSkippedBuckets.clear();
|
||||
}
|
||||
|
||||
void GaugeMetricProducer::onDumpReportLocked(const int64_t dumpTimeNs,
|
||||
const bool include_current_partial_bucket,
|
||||
ProtoOutputStream* protoOutput) {
|
||||
|
||||
@@ -91,6 +91,7 @@ private:
|
||||
void onDumpReportLocked(const int64_t dumpTimeNs,
|
||||
const bool include_current_partial_bucket,
|
||||
android::util::ProtoOutputStream* protoOutput) override;
|
||||
void clearPastBucketsLocked(const int64_t dumpTimeNs) override;
|
||||
|
||||
// for testing
|
||||
GaugeMetricProducer(const ConfigKey& key, const GaugeMetric& gaugeMetric,
|
||||
|
||||
@@ -119,6 +119,11 @@ public:
|
||||
return onDumpReportLocked(dumpTimeNs, include_current_partial_bucket, protoOutput);
|
||||
}
|
||||
|
||||
void clearPastBuckets(const int64_t dumpTimeNs) {
|
||||
std::lock_guard<std::mutex> lock(mMutex);
|
||||
return clearPastBucketsLocked(dumpTimeNs);
|
||||
}
|
||||
|
||||
void dumpStates(FILE* out, bool verbose) const {
|
||||
std::lock_guard<std::mutex> lock(mMutex);
|
||||
dumpStatesLocked(out, verbose);
|
||||
@@ -177,6 +182,7 @@ protected:
|
||||
virtual void onDumpReportLocked(const int64_t dumpTimeNs,
|
||||
const bool include_current_partial_bucket,
|
||||
android::util::ProtoOutputStream* protoOutput) = 0;
|
||||
virtual void clearPastBucketsLocked(const int64_t dumpTimeNs) = 0;
|
||||
virtual size_t byteSizeLocked() const = 0;
|
||||
virtual void dumpStatesLocked(FILE* out, bool verbose) const = 0;
|
||||
|
||||
|
||||
@@ -201,6 +201,8 @@ void MetricsManager::onDumpReport(const int64_t dumpTimeStampNs,
|
||||
protoOutput->start(FIELD_TYPE_MESSAGE | FIELD_COUNT_REPEATED | FIELD_ID_METRICS);
|
||||
producer->onDumpReport(dumpTimeStampNs, include_current_partial_bucket, protoOutput);
|
||||
protoOutput->end(token);
|
||||
} else {
|
||||
producer->clearPastBuckets(dumpTimeStampNs);
|
||||
}
|
||||
}
|
||||
for (const auto& annotation : mAnnotations) {
|
||||
|
||||
@@ -151,6 +151,12 @@ void ValueMetricProducer::dropDataLocked(const int64_t dropTimeNs) {
|
||||
mPastBuckets.clear();
|
||||
}
|
||||
|
||||
void ValueMetricProducer::clearPastBucketsLocked(const int64_t dumpTimeNs) {
|
||||
flushIfNeededLocked(dumpTimeNs);
|
||||
mPastBuckets.clear();
|
||||
mSkippedBuckets.clear();
|
||||
}
|
||||
|
||||
void ValueMetricProducer::onDumpReportLocked(const int64_t dumpTimeNs,
|
||||
const bool include_current_partial_bucket,
|
||||
ProtoOutputStream* protoOutput) {
|
||||
|
||||
@@ -89,6 +89,7 @@ private:
|
||||
void onDumpReportLocked(const int64_t dumpTimeNs,
|
||||
const bool include_current_partial_bucket,
|
||||
android::util::ProtoOutputStream* protoOutput) override;
|
||||
void clearPastBucketsLocked(const int64_t dumpTimeNs) override;
|
||||
|
||||
// Internal interface to handle condition change.
|
||||
void onConditionChangedLocked(const bool conditionMet, const int64_t eventTime) override;
|
||||
|
||||
Reference in New Issue
Block a user