Drain BPF ring buffer after disabling tracing.
This should ensure that we don't have stale packets next time we start a
trace.
Bug: 246985031
Test: flash & trace with long (1m+) poll (used to get stale, now not)
Change-Id: I6085d4a97688a221d26c095ef9073360292fd1ec
diff --git a/service-t/native/libs/libnetworkstats/NetworkTracePoller.cpp b/service-t/native/libs/libnetworkstats/NetworkTracePoller.cpp
index 5cf6262..3de9897 100644
--- a/service-t/native/libs/libnetworkstats/NetworkTracePoller.cpp
+++ b/service-t/native/libs/libnetworkstats/NetworkTracePoller.cpp
@@ -99,9 +99,14 @@
ALOGW("Failed to disable tracing: %s", res.error().message().c_str());
}
- // make sure everything in the system has actually seen the 'false' we just wrote
+ // Make sure everything in the system has actually seen the 'false' we just
+ // wrote, things should now be well and truly disabled.
synchronizeKernelRCU();
- // things should now be well and truly disabled
+
+ // Drain remaining events from the ring buffer now that tracing is disabled.
+ // This prevents the next trace from seeing stale events and allows writing
+ // the last batch of events to Perfetto.
+ ConsumeAllLocked();
mTaskRunner.reset();
mRingBuffer.reset();