This is an automated email from the ASF dual-hosted git repository.
stillalex pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git
The following commit(s) were added to refs/heads/main by this push:
new ee5063915bd SOLR-17361 OpenJ9 can't compile solr: No method
HotSpotDiagnosticMXBean.dumpHeap (#2929)
ee5063915bd is described below
commit ee5063915bdcf481d137fa5480fd1877cb740c7e
Author: Alex D <[email protected]>
AuthorDate: Fri May 9 05:24:07 2025 -0700
SOLR-17361 OpenJ9 can't compile solr: No method
HotSpotDiagnosticMXBean.dumpHeap (#2929)
---
.../java/org/apache/solr/bench/BaseBenchState.java | 28 ++++++++++++----------
1 file changed, 15 insertions(+), 13 deletions(-)
diff --git a/solr/benchmark/src/java/org/apache/solr/bench/BaseBenchState.java
b/solr/benchmark/src/java/org/apache/solr/bench/BaseBenchState.java
index f45ffaf8aa1..0f401d7d6c8 100644
--- a/solr/benchmark/src/java/org/apache/solr/bench/BaseBenchState.java
+++ b/solr/benchmark/src/java/org/apache/solr/bench/BaseBenchState.java
@@ -16,8 +16,6 @@
*/
package org.apache.solr.bench;
-import com.sun.management.HotSpotDiagnosticMXBean;
-import java.io.IOException;
import java.lang.invoke.MethodHandles;
import java.lang.management.ManagementFactory;
import java.nio.file.Files;
@@ -25,6 +23,7 @@ import java.nio.file.Path;
import java.util.SplittableRandom;
import java.util.concurrent.atomic.AtomicBoolean;
import javax.management.MBeanServer;
+import javax.management.ObjectName;
import org.apache.commons.io.file.PathUtils;
import org.apache.solr.bench.generators.SolrGen;
import org.apache.solr.common.util.SuppressForbidden;
@@ -132,25 +131,28 @@ public class BaseBenchState {
* Dump heap.
*
* @param benchmarkParams the benchmark params
- * @throws IOException the io exception
*/
@SuppressForbidden(reason = "access to force heapdump")
- public static void dumpHeap(BenchmarkParams benchmarkParams) throws
IOException {
+ public static void dumpHeap(BenchmarkParams benchmarkParams) {
String heapDump = System.getProperty("dumpheap");
if (heapDump != null) {
boolean dumpHeap = HEAP_DUMPED.compareAndExchange(false, true);
if (dumpHeap) {
Path file = Path.of(heapDump);
- PathUtils.deleteDirectory(file);
- Files.createDirectories(file);
- Path dumpFile = file.resolve(benchmarkParams.id() + ".hprof");
-
- MBeanServer server = ManagementFactory.getPlatformMBeanServer();
- HotSpotDiagnosticMXBean mxBean =
- ManagementFactory.newPlatformMXBeanProxy(
- server, "com.sun.management:type=HotSpotDiagnostic",
HotSpotDiagnosticMXBean.class);
- mxBean.dumpHeap(dumpFile.toAbsolutePath().toString(), true);
+ try {
+ PathUtils.deleteDirectory(file);
+ Files.createDirectories(file);
+ Path dumpFile = file.resolve(benchmarkParams.id() + ".hprof");
+
+ MBeanServer server = ManagementFactory.getPlatformMBeanServer();
+ ObjectName hotSpot =
ObjectName.getInstance("com.sun.management:type=HotSpotDiagnostic");
+ Object[] params = new Object[]
{dumpFile.toAbsolutePath().toString(), true};
+ String signature[] = new String[] {"java.lang.String", "boolean"};
+ server.invoke(hotSpot, "dumpHeap", params, signature);
+ } catch (Exception e) {
+ log("unable to dump heap " + e.getMessage());
+ }
}
}
}