summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Junyu Lai <junyulai@google.com> 2022-05-19 15:31:07 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2022-05-19 15:31:07 +0000
commita0bc85de6b118a3b1a510c47d66fe69bb5ba2970 (patch)
tree02e4377c311876f3718277c0112b92ac245a56c8
parent75572e6a80ca3ad053f6e490048764ce846e66d0 (diff)
parent4ce5244ff688e5d667d0f9d2bbe9ccb695f8ffe0 (diff)
Merge changes from topic "stats-migration" into tm-dev am: 23ed66f130 am: 4ce5244ff6
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18457684 Change-Id: I74cd691205721e582e675c80061fbd21b756a45b Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--core/java/android/net/netstats/NetworkStatsDataMigrationUtils.java8
-rw-r--r--core/java/com/android/internal/util/FileRotator.java15
2 files changed, 21 insertions, 2 deletions
diff --git a/core/java/android/net/netstats/NetworkStatsDataMigrationUtils.java b/core/java/android/net/netstats/NetworkStatsDataMigrationUtils.java
index 5c9989e9d981..76ee097c8c93 100644
--- a/core/java/android/net/netstats/NetworkStatsDataMigrationUtils.java
+++ b/core/java/android/net/netstats/NetworkStatsDataMigrationUtils.java
@@ -52,6 +52,7 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.net.ProtocolException;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;
@@ -161,9 +162,12 @@ public class NetworkStatsDataMigrationUtils {
@NonNull
private static ArrayList<File> getPlatformFileListForPrefix(@NonNull @Prefix String prefix) {
final ArrayList<File> list = new ArrayList<>();
- final File platformFiles = new File(getPlatformBaseDir(), "netstats");
+ final File platformFiles = getPlatformBaseDir();
if (platformFiles.exists()) {
- for (String name : platformFiles.list()) {
+ final String[] files = platformFiles.list();
+ if (files == null) return list;
+ Arrays.sort(files);
+ for (String name : files) {
// Skip when prefix doesn't match.
if (!name.startsWith(prefix + ".")) continue;
diff --git a/core/java/com/android/internal/util/FileRotator.java b/core/java/com/android/internal/util/FileRotator.java
index 4b3af1536175..5bc48c5172f0 100644
--- a/core/java/com/android/internal/util/FileRotator.java
+++ b/core/java/com/android/internal/util/FileRotator.java
@@ -16,6 +16,7 @@
package com.android.internal.util;
+import android.annotation.NonNull;
import android.os.FileUtils;
import android.util.Log;
@@ -282,6 +283,20 @@ public class FileRotator {
}
/**
+ * Process a single file atomically, with the given start and end timestamps.
+ * If a file with these exact start and end timestamps does not exist, a new
+ * empty file will be written.
+ */
+ public void rewriteSingle(@NonNull Rewriter rewriter, long startTimeMillis, long endTimeMillis)
+ throws IOException {
+ final FileInfo info = new FileInfo(mPrefix);
+
+ info.startMillis = startTimeMillis;
+ info.endMillis = endTimeMillis;
+ rewriteSingle(rewriter, info.build());
+ }
+
+ /**
* Read any rotated data that overlap the requested time range.
*/
public void readMatching(Reader reader, long matchStartMillis, long matchEndMillis)