Better event log tracking for initializeDevice() requests --
on success, record "backup_initialize" event; on failure, record "backup_transport_failure" event (and add tags to "backup_transport_failure" events that aren't associated with a particular package -- namely "(initialize)" and "(finish)").
This commit is contained in:
@ -106,6 +106,7 @@ class BackupManagerService extends IBackupManager.Stub {
|
||||
private static final int BACKUP_PACKAGE_EVENT = 2824;
|
||||
private static final int BACKUP_SUCCESS_EVENT = 2825;
|
||||
private static final int BACKUP_RESET_EVENT = 2826;
|
||||
private static final int BACKUP_INITIALIZE_EVENT = 2827;
|
||||
|
||||
private static final int RESTORE_START_EVENT = 2830;
|
||||
private static final int RESTORE_TRANSPORT_FAILURE_EVENT = 2831;
|
||||
@ -1062,7 +1063,14 @@ class BackupManagerService extends IBackupManager.Stub {
|
||||
|
||||
// If we haven't stored anything yet, we need to do an init operation.
|
||||
if (status == BackupConstants.TRANSPORT_OK && mEverStoredApps.size() == 0) {
|
||||
Log.i(TAG, "Initializing (wiping) backup transport storage");
|
||||
status = mTransport.initializeDevice();
|
||||
if (status == BackupConstants.TRANSPORT_OK) {
|
||||
EventLog.writeEvent(BACKUP_INITIALIZE_EVENT);
|
||||
} else {
|
||||
EventLog.writeEvent(BACKUP_TRANSPORT_FAILURE_EVENT, "(initialize)");
|
||||
Log.e(TAG, "Transport error in initializeDevice()");
|
||||
}
|
||||
}
|
||||
|
||||
// The package manager doesn't have a proper <application> etc, but since
|
||||
@ -1091,7 +1099,7 @@ class BackupManagerService extends IBackupManager.Stub {
|
||||
int millis = (int) (SystemClock.elapsedRealtime() - startRealtime);
|
||||
EventLog.writeEvent(BACKUP_SUCCESS_EVENT, mQueue.size(), millis);
|
||||
} else {
|
||||
EventLog.writeEvent(BACKUP_TRANSPORT_FAILURE_EVENT, "");
|
||||
EventLog.writeEvent(BACKUP_TRANSPORT_FAILURE_EVENT, "(finish)");
|
||||
Log.e(TAG, "Transport error in finishBackup()");
|
||||
}
|
||||
}
|
||||
@ -1714,7 +1722,6 @@ class BackupManagerService extends IBackupManager.Stub {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
int status;
|
||||
try {
|
||||
for (String transportName : mQueue) {
|
||||
IBackupTransport transport = getTransport(transportName);
|
||||
@ -1723,33 +1730,30 @@ class BackupManagerService extends IBackupManager.Stub {
|
||||
continue;
|
||||
}
|
||||
|
||||
status = BackupConstants.TRANSPORT_OK;
|
||||
File stateDir = null;
|
||||
Log.i(TAG, "Initializing (wiping) backup transport storage: " + transportName);
|
||||
EventLog.writeEvent(BACKUP_START_EVENT, transport.transportDirName());
|
||||
long startRealtime = SystemClock.elapsedRealtime();
|
||||
int status = transport.initializeDevice();
|
||||
|
||||
Log.i(TAG, "Device init on " + transport.transportDirName());
|
||||
|
||||
stateDir = new File(mBaseStateDir, transport.transportDirName());
|
||||
|
||||
status = transport.initializeDevice();
|
||||
if (status != BackupConstants.TRANSPORT_OK) {
|
||||
Log.e(TAG, "Error from initializeDevice: " + status);
|
||||
}
|
||||
if (status == BackupConstants.TRANSPORT_OK) {
|
||||
status = transport.finishBackup();
|
||||
}
|
||||
|
||||
// Okay, the wipe really happened. Clean up our local bookkeeping.
|
||||
if (status == BackupConstants.TRANSPORT_OK) {
|
||||
resetBackupState(stateDir);
|
||||
Log.i(TAG, "Device init successful");
|
||||
int millis = (int) (SystemClock.elapsedRealtime() - startRealtime);
|
||||
EventLog.writeEvent(BACKUP_INITIALIZE_EVENT);
|
||||
resetBackupState(new File(mBaseStateDir, transport.transportDirName()));
|
||||
EventLog.writeEvent(BACKUP_SUCCESS_EVENT, 0, millis);
|
||||
synchronized (mQueueLock) {
|
||||
recordInitPendingLocked(false, transportName);
|
||||
}
|
||||
}
|
||||
|
||||
// If this didn't work, requeue this one and try again
|
||||
// after a suitable interval
|
||||
if (status != BackupConstants.TRANSPORT_OK) {
|
||||
Log.i(TAG, "Device init failed");
|
||||
} else {
|
||||
// If this didn't work, requeue this one and try again
|
||||
// after a suitable interval
|
||||
Log.e(TAG, "Transport error in initializeDevice()");
|
||||
EventLog.writeEvent(BACKUP_TRANSPORT_FAILURE_EVENT, "(initialize)");
|
||||
synchronized (mQueueLock) {
|
||||
recordInitPendingLocked(true, transportName);
|
||||
}
|
||||
@ -1759,11 +1763,7 @@ class BackupManagerService extends IBackupManager.Stub {
|
||||
+ transportName + " resched in " + delay);
|
||||
mAlarmManager.set(AlarmManager.RTC_WAKEUP,
|
||||
System.currentTimeMillis() + delay, mRunInitIntent);
|
||||
} else {
|
||||
// success!
|
||||
Log.i(TAG, "Device init successful");
|
||||
}
|
||||
|
||||
}
|
||||
} catch (RemoteException e) {
|
||||
// can't happen; the transports are local
|
||||
|
Reference in New Issue
Block a user