summaryrefslogtreecommitdiff
path: root/framework-t/src/android/net/NetworkStatsCollection.java
diff options
context:
space:
mode:
authorJunyu Lai <junyulai@google.com>2022-01-29 04:12:58 +0000
committerCherrypicker Worker <android-build-cherrypicker-worker@google.com>2022-05-16 05:53:02 +0000
commit108d20f84a55e7808d322edec6c4828a55cc4312 (patch)
treefb11756891fda274bdaa13aec87434993aee19de /framework-t/src/android/net/NetworkStatsCollection.java
parentd1ba6a4f53ece5afcbd5f56f6e780cf70e98fdfd (diff)
[MS81] Support remove history before cutoff timestamp
This is needed to ensure corrupted data can be clean up if the data migration process dones't go well. Test: NetworkStatsCollectionTest Bug: 197717846 Change-Id: Ic76ad6f3e96f03791b48988fb2622c9c647ffc7c (cherry picked from commit 306a00316cac03a0c61f995316c9c5682bec2a19) Merged-In: Ic76ad6f3e96f03791b48988fb2622c9c647ffc7c
Diffstat (limited to 'framework-t/src/android/net/NetworkStatsCollection.java')
-rw-r--r--framework-t/src/android/net/NetworkStatsCollection.java20
1 files changed, 20 insertions, 0 deletions
diff --git a/framework-t/src/android/net/NetworkStatsCollection.java b/framework-t/src/android/net/NetworkStatsCollection.java
index b59a890a2a..29ea772bc3 100644
--- a/framework-t/src/android/net/NetworkStatsCollection.java
+++ b/framework-t/src/android/net/NetworkStatsCollection.java
@@ -694,6 +694,26 @@ public class NetworkStatsCollection implements FileRotator.Reader, FileRotator.W
}
}
+ /**
+ * Remove histories which contains or is before the cutoff timestamp.
+ * @hide
+ */
+ public void removeHistoryBefore(long cutoffMillis) {
+ final ArrayList<Key> knownKeys = new ArrayList<>();
+ knownKeys.addAll(mStats.keySet());
+
+ for (Key key : knownKeys) {
+ final NetworkStatsHistory history = mStats.get(key);
+ if (history.getStart() > cutoffMillis) continue;
+
+ history.removeBucketsStartingBefore(cutoffMillis);
+ if (history.size() == 0) {
+ mStats.remove(key);
+ }
+ mDirty = true;
+ }
+ }
+
private void noteRecordedHistory(long startMillis, long endMillis, long totalBytes) {
if (startMillis < mStartMillis) mStartMillis = startMillis;
if (endMillis > mEndMillis) mEndMillis = endMillis;