diff options
| author | 2024-02-04 17:29:18 +0800 | |
|---|---|---|
| committer | 2024-02-05 13:58:23 +0800 | |
| commit | 6df10854a418179a907dc971ffd8587d9bbed2bf (patch) | |
| tree | 379c7484b460f2950a45905a58c9b53b83b58b49 | |
| parent | e27fe8371be9252633405a62d09710bd13ac1ca0 (diff) | |
Add debug log for executeTransaction error.
Bug: 322171786
Bug: 260873529
Test: pass existing tests
Change-Id: I3f85bb2b92f218b62a951b84565edaf4afd19d33
3 files changed, 36 insertions, 1 deletions
diff --git a/core/java/android/app/servertransaction/ClientTransaction.java b/core/java/android/app/servertransaction/ClientTransaction.java index 5e5526802fe9..6357a20f592b 100644 --- a/core/java/android/app/servertransaction/ClientTransaction.java +++ b/core/java/android/app/servertransaction/ClientTransaction.java @@ -298,6 +298,33 @@ public class ClientTransaction implements Parcelable, ObjectPoolItem { return result; } + @Override + public String toString() { + final StringBuilder sb = new StringBuilder(); + sb.append("ClientTransaction{"); + if (mTransactionItems != null) { + // #addTransactionItem + sb.append("\n transactionItems=["); + final int size = mTransactionItems.size(); + for (int i = 0; i < size; i++) { + sb.append("\n ").append(mTransactionItems.get(i)); + } + sb.append("\n ]"); + } else { + // #addCallback + sb.append("\n callbacks=["); + final int size = mActivityCallbacks != null ? mActivityCallbacks.size() : 0; + for (int i = 0; i < size; i++) { + sb.append("\n ").append(mActivityCallbacks.get(i)); + } + sb.append("\n ]"); + // #setLifecycleStateRequest + sb.append("\n stateRequest=").append(mLifecycleStateRequest); + } + sb.append("\n}"); + return sb.toString(); + } + /** Dump transaction items callback items and final lifecycle state request. */ void dump(@NonNull String prefix, @NonNull PrintWriter pw, @NonNull ClientTransactionHandler transactionHandler) { diff --git a/core/java/android/app/servertransaction/TransactionExecutor.java b/core/java/android/app/servertransaction/TransactionExecutor.java index ba940770898a..406e00a84710 100644 --- a/core/java/android/app/servertransaction/TransactionExecutor.java +++ b/core/java/android/app/servertransaction/TransactionExecutor.java @@ -97,6 +97,10 @@ public class TransactionExecutor { executeCallbacks(transaction); executeLifecycleState(transaction); } + } catch (Exception e) { + Slog.e(TAG, "Failed to execute the transaction: " + + transactionToString(transaction, mTransactionHandler)); + throw e; } finally { Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER); } diff --git a/services/core/java/com/android/server/wm/ClientLifecycleManager.java b/services/core/java/com/android/server/wm/ClientLifecycleManager.java index c7df83a9ccf9..e84026cf4155 100644 --- a/services/core/java/com/android/server/wm/ClientLifecycleManager.java +++ b/services/core/java/com/android/server/wm/ClientLifecycleManager.java @@ -64,6 +64,10 @@ class ClientLifecycleManager { final IApplicationThread client = transaction.getClient(); try { transaction.schedule(); + } catch (RemoteException e) { + Slog.w(TAG, "Failed to deliver transaction for " + client + + "\ntransaction=" + transaction); + throw e; } finally { if (!(client instanceof Binder)) { // If client is not an instance of Binder - it's a remote call and at this point it @@ -157,7 +161,7 @@ class ClientLifecycleManager { try { scheduleTransaction(transaction); } catch (RemoteException e) { - Slog.e(TAG, "Failed to deliver transaction for " + transaction.getClient()); + Slog.e(TAG, "Failed to deliver pending transaction", e); } } mPendingTransactions.clear(); |