diff options
Diffstat (limited to 'statsd/src/metrics/EventMetricProducer.cpp')
-rw-r--r-- | statsd/src/metrics/EventMetricProducer.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/statsd/src/metrics/EventMetricProducer.cpp b/statsd/src/metrics/EventMetricProducer.cpp index a8f45391..648e21c9 100644 --- a/statsd/src/metrics/EventMetricProducer.cpp +++ b/statsd/src/metrics/EventMetricProducer.cpp @@ -49,6 +49,8 @@ const int FIELD_ID_ID = 1; const int FIELD_ID_EVENT_METRICS = 4; const int FIELD_ID_IS_ACTIVE = 14; const int FIELD_ID_ESTIMATED_MEMORY_BYTES = 18; +const int FIELD_ID_DATA_CORRUPTED_REASON = 19; + // for EventMetricDataWrapper const int FIELD_ID_DATA = 1; // for EventMetricData @@ -138,6 +140,8 @@ optional<InvalidConfigReason> EventMetricProducer::onConfigUpdatedLocked( void EventMetricProducer::dropDataLocked(const int64_t dropTimeNs) { mAggregatedAtoms.clear(); mTotalSize = 0; + mDataCorruptedDueToSocketLoss = false; + mDataCorruptedDueToQueueOverflow = false; StatsdStats::getInstance().noteBucketDropped(mMetricId); } @@ -165,6 +169,8 @@ std::unique_ptr<std::vector<uint8_t>> serializeProtoLocked(ProtoOutputStream& pr void EventMetricProducer::clearPastBucketsLocked(const int64_t dumpTimeNs) { mAggregatedAtoms.clear(); mTotalSize = 0; + mDataCorruptedDueToSocketLoss = false; + mDataCorruptedDueToQueueOverflow = false; } void EventMetricProducer::onDumpReportLocked(const int64_t dumpTimeNs, @@ -177,6 +183,9 @@ void EventMetricProducer::onDumpReportLocked(const int64_t dumpTimeNs, protoOutput->write(FIELD_TYPE_BOOL | FIELD_ID_IS_ACTIVE, isActiveLocked()); protoOutput->write(FIELD_TYPE_INT64 | FIELD_ID_ESTIMATED_MEMORY_BYTES, (long long)byteSizeLocked()); + // Data corrupted reason + writeDataCorruptedReasons(*protoOutput, FIELD_ID_DATA_CORRUPTED_REASON, + mDataCorruptedDueToQueueOverflow, mDataCorruptedDueToSocketLoss); uint64_t protoToken = protoOutput->start(FIELD_TYPE_MESSAGE | FIELD_ID_EVENT_METRICS); for (const auto& [atomDimensionKey, elapsedTimestampsNs] : mAggregatedAtoms) { @@ -197,10 +206,13 @@ void EventMetricProducer::onDumpReportLocked(const int64_t dumpTimeNs, protoOutput->end(aggregatedToken); protoOutput->end(wrapperToken); } + protoOutput->end(protoToken); if (erase_data) { mAggregatedAtoms.clear(); mTotalSize = 0; + mDataCorruptedDueToSocketLoss = false; + mDataCorruptedDueToQueueOverflow = false; } } |