From 9628953e14c4f1a0cfc64d41df8e6cd97a70d78b Mon Sep 17 00:00:00 2001 From: Varun Shah Date: Wed, 17 Jun 2020 21:33:31 -0700 Subject: [PATCH] Handle user create failure correctly for lifecycle atom. Bug: 159271227 Test: statsd_testdrive 264 265 Change-Id: I2dbcfecef9b523cb08b16a45b5597500c9870f85 --- .../com/android/server/pm/UserManagerService.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java index 2a6997cba4bba..398ff4b8b9f95 100644 --- a/services/core/java/com/android/server/pm/UserManagerService.java +++ b/services/core/java/com/android/server/pm/UserManagerService.java @@ -3291,11 +3291,13 @@ public class UserManagerService extends IUserManager.Stub { final TimingsTraceAndSlog t = new TimingsTraceAndSlog(); t.traceBegin("createUser-" + flags); final long sessionId = logUserCreateJourneyBegin(nextProbableUserId, userType, flags); + UserInfo newUser = null; try { - return createUserInternalUncheckedNoTracing(name, userType, flags, parentId, - preCreate, disallowedPackages, t); + newUser = createUserInternalUncheckedNoTracing(name, userType, flags, parentId, + preCreate, disallowedPackages, t); + return newUser; } finally { - logUserCreateJourneyFinish(sessionId, nextProbableUserId); + logUserCreateJourneyFinish(sessionId, nextProbableUserId, newUser != null); t.traceEnd(); } } @@ -3314,10 +3316,11 @@ public class UserManagerService extends IUserManager.Stub { return sessionId; } - private void logUserCreateJourneyFinish(long sessionId, @UserIdInt int userId) { + private void logUserCreateJourneyFinish(long sessionId, @UserIdInt int userId, boolean finish) { FrameworkStatsLog.write(FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED, sessionId, userId, FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED__EVENT__CREATE_USER, - FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED__STATE__FINISH); + finish ? FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED__STATE__FINISH + : FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED__STATE__NONE); } private UserInfo createUserInternalUncheckedNoTracing(@Nullable String name,