Merge branch 'stable-3.12'

* stable-3.12:
  Never throw when describing a queued ITS task
  Describe ITS change events without resolving the patch set

Change-Id: Ie7c1b8b3d20dbb5c082b608b6bb1c97dde03beba
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/ActionController.java b/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/ActionController.java
index 4b5a423..74bf8e6 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/ActionController.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/ActionController.java
@@ -17,11 +17,9 @@
 import com.google.common.flogger.FluentLogger;
 import com.google.gerrit.entities.Change;
 import com.google.gerrit.entities.Project;
-import com.google.gerrit.server.data.PatchSetAttribute;
 import com.google.gerrit.server.events.ChangeEvent;
 import com.google.gerrit.server.events.Event;
 import com.google.gerrit.server.events.EventListener;
-import com.google.gerrit.server.events.PatchSetEvent;
 import com.google.gerrit.server.events.RefEvent;
 import com.google.inject.Inject;
 import com.googlesource.gerrit.plugins.its.base.Actions;
@@ -144,11 +142,8 @@
 
     private String refEventToString() {
       String target = refEvent.getBranchNameKey().toString();
-      if (refEvent instanceof PatchSetEvent patchSetEvent) {
-        PatchSetAttribute patchSet = patchSetEvent.patchSet.get();
-        if (patchSet != null) {
-          target = refEvent.getProjectNameKey().get() + " " + patchSet.ref;
-        }
+      if (refEvent instanceof ChangeEvent changeEvent) {
+        target = target + " " + changeEvent.getChangeKey();
       }
       return refEvent.getType() + " " + target;
     }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/RuntimeQueueMap.java b/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/RuntimeQueueMap.java
index df71201..52f06e6 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/RuntimeQueueMap.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/RuntimeQueueMap.java
@@ -119,7 +119,17 @@
 
     @Override
     public String toString() {
-      return activeTask.task.toString();
+      try {
+        Runnable current = activeTask.task;
+        try {
+          return current.toString();
+        } catch (Exception e) {
+          logger.atWarning().withCause(e).log("Cannot describe task");
+          return current.getClass().getName();
+        }
+      } catch (Exception e) {
+        return "unknown task";
+      }
     }
   }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/Throttle.java b/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/Throttle.java
index 35734d5..0286570 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/Throttle.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/base/workflow/Throttle.java
@@ -69,7 +69,16 @@
 
     @Override
     public String toString() {
-      return task.toString();
+      try {
+        try {
+          return task.toString();
+        } catch (Exception e) {
+          logger.atWarning().withCause(e).log("Cannot describe task");
+          return task.getClass().getName();
+        }
+      } catch (Exception e) {
+        return "unknown task";
+      }
     }
   }
 }