From 97e4a9374922bd8fd84e1315f89b189669a7b6d0 Mon Sep 17 00:00:00 2001
From: Daniel Hu <costmuch@amazon.com>
Date: Mon, 26 Aug 2024 16:20:25 +0000
Subject: [PATCH] 8316193: jdk/jfr/event/oldobject/TestListenerLeak.java
 java.lang.Exception: Could not find leak

Backport-of: f6be922952642f40dcf0d27b7896c9a6acdd6378
---
 .../jfr/event/oldobject/TestListenerLeak.java | 22 ++++++++++---------
 1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/test/jdk/jdk/jfr/event/oldobject/TestListenerLeak.java b/test/jdk/jdk/jfr/event/oldobject/TestListenerLeak.java
index 67ef11b2740..92610283525 100644
--- a/test/jdk/jdk/jfr/event/oldobject/TestListenerLeak.java
+++ b/test/jdk/jdk/jfr/event/oldobject/TestListenerLeak.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2023, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -71,15 +71,17 @@ public class TestListenerLeak {
 
     public static void main(String[] args) throws Exception {
         WhiteBox.setWriteAllObjectSamples(true);
-
-        try (Recording r = new Recording()) {
-            r.enable(EventNames.OldObjectSample).withStackTrace().with("cutoff", "infinity");
-            r.start();
-            listenerLeak();
-            r.stop();
-            List<RecordedEvent> events = Events.fromRecording(r);
-            if (OldObjects.countMatchingEvents(events, Stuff[].class, null, null, -1, "listenerLeak") == 0) {
-                throw new Exception("Could not find leak with " + Stuff[].class);
+        while (true) {
+            try (Recording r = new Recording()) {
+                r.enable(EventNames.OldObjectSample).withStackTrace().with("cutoff", "infinity");
+                r.start();
+                listenerLeak();
+                r.stop();
+                List<RecordedEvent> events = Events.fromRecording(r);
+                if (OldObjects.countMatchingEvents(events, Stuff[].class, null, null, -1, "listenerLeak") != 0) {
+                    return; // Success
+                }
+                System.out.println("Could not find leak with " + Stuff[].class + ". Retrying.");
             }
         }
     }
-- 
GitLab