From 2ef7a81c0206fffaee324601014012c6df4ec7bd Mon Sep 17 00:00:00 2001 From: AlmaLinux RelEng Bot Date: Wed, 24 Jun 2026 00:34:56 -0400 Subject: [PATCH] import Oracle_OSS jmc-8.2.0-19.el9_8.2 --- .jmc.metadata | 2 +- SOURCES/4-remove-websocket.patch | 590 +++++++++++++++++++++++++++++++ SOURCES/symlink_libs.sh | 0 SPECS/jmc.spec | 22 +- 4 files changed, 598 insertions(+), 16 deletions(-) create mode 100644 SOURCES/4-remove-websocket.patch mode change 100644 => 100755 SOURCES/symlink_libs.sh diff --git a/.jmc.metadata b/.jmc.metadata index ecc1f15..cf0f192 100644 --- a/.jmc.metadata +++ b/.jmc.metadata @@ -1,2 +1,2 @@ 686f6d6b9bcab052a6a815e59e55bebb272a03fe SOURCES/8.2.0-ga.tar.gz -5a570644593d9f5da81a86e8722be4f8a5748d77 SOURCES/repository-8.2.0.tar.gz +16f9083dc818e16f163106ea3bc729bb460cb08a SOURCES/repository-8.2.0.tar.gz diff --git a/SOURCES/4-remove-websocket.patch b/SOURCES/4-remove-websocket.patch new file mode 100644 index 0000000..549a34d --- /dev/null +++ b/SOURCES/4-remove-websocket.patch @@ -0,0 +1,590 @@ +diff --git a/application/org.openjdk.jmc.feature.flightrecorder/feature.xml b/application/org.openjdk.jmc.feature.flightrecorder/feature.xml +index 81af1d65..af766c5b 100644 +--- a/application/org.openjdk.jmc.feature.flightrecorder/feature.xml ++++ b/application/org.openjdk.jmc.feature.flightrecorder/feature.xml +@@ -157,27 +157,6 @@ + version="0.0.0" + unpack="false"/> + +- +- +- +- +- +- + 0 && port < 65535; +- } +- + public static String validateDumpTimespan(String text) { + try { + IQuantity timespan = UnitLookup.TIMESPAN.parseInteractive(text); +diff --git a/application/org.openjdk.jmc.flightrecorder.ui/src/main/java/org/openjdk/jmc/flightrecorder/ui/JfrEditor.java b/application/org.openjdk.jmc.flightrecorder.ui/src/main/java/org/openjdk/jmc/flightrecorder/ui/JfrEditor.java +index 7dc8dcd7..b5b67d0d 100644 +--- a/application/org.openjdk.jmc.flightrecorder.ui/src/main/java/org/openjdk/jmc/flightrecorder/ui/JfrEditor.java ++++ b/application/org.openjdk.jmc.flightrecorder.ui/src/main/java/org/openjdk/jmc/flightrecorder/ui/JfrEditor.java +@@ -83,7 +83,6 @@ import org.openjdk.jmc.flightrecorder.ui.messages.internal.Messages; + import org.openjdk.jmc.flightrecorder.ui.preferences.PreferenceKeys; + import org.openjdk.jmc.flightrecorder.ui.selection.IFlavoredSelection; + import org.openjdk.jmc.flightrecorder.ui.selection.SelectionStore; +-import org.openjdk.jmc.flightrecorder.ui.websocket.WebsocketServer; + import org.openjdk.jmc.ui.MCPathEditorInput; + import org.openjdk.jmc.ui.idesupport.IDESupportUIToolkit; + import org.openjdk.jmc.ui.misc.CompositeToolkit; +@@ -113,8 +112,6 @@ public class JfrEditor extends EditorPart implements INavigationLocationProvider + private Reference resultPageRef = new WeakReference<>(null); + private RuleManager ruleEngine; + private IPropertyChangeListener analysisEnabledListener; +- private IPropertyChangeListener websocketServerEnabledListener; +- private WebsocketServer websocketServer; + + public JfrEditor() { + super(); +@@ -126,29 +123,7 @@ public class JfrEditor extends EditorPart implements INavigationLocationProvider + } + } + }; +- if (FlightRecorderUI.getDefault().isWebsocketServerEnabled()) { +- int websocketServerPort = FlightRecorderUI.getDefault().getWebsocketPort(); +- websocketServer = new WebsocketServer(websocketServerPort); +- } +- websocketServerEnabledListener = e -> { +- if (e.getProperty().equals(PreferenceKeys.PROPERTY_WEBSOCKET_SERVER_PORT)) { +- int newWebsocketServerPort = FlightRecorderUI.parseWebsocketPort((String) e.getNewValue()); +- if (newWebsocketServerPort > 0) { +- if (websocketServer != null) { +- websocketServer.shutdown(); +- websocketServer = null; +- } +- websocketServer = new WebsocketServer(newWebsocketServerPort); +- } else { +- if (websocketServer != null) { +- websocketServer.shutdown(); +- websocketServer = null; +- } +- } +- } +- }; + FlightRecorderUI.getDefault().getPreferenceStore().addPropertyChangeListener(analysisEnabledListener); +- FlightRecorderUI.getDefault().getPreferenceStore().addPropertyChangeListener(websocketServerEnabledListener); + } + + @Override +@@ -214,9 +189,6 @@ public class JfrEditor extends EditorPart implements INavigationLocationProvider + if (!items.hasItems() && currentPage != null) { + selectionItems = getModel().getItems().apply(getDisplayablePage(currentPage).getDefaultSelectionFilter()); + } +- if (websocketServer != null) { +- websocketServer.notifyAll(selectionItems); +- } + getSite().getSelectionProvider().setSelection(new StructuredSelection(selectionItems)); + } + +@@ -429,7 +401,6 @@ public class JfrEditor extends EditorPart implements INavigationLocationProvider + public void dispose() { + ruleEngine.dispose(); + FlightRecorderUI.getDefault().getPreferenceStore().removePropertyChangeListener(analysisEnabledListener); +- FlightRecorderUI.getDefault().getPreferenceStore().removePropertyChangeListener(websocketServerEnabledListener); + super.dispose(); + } + +diff --git a/application/org.openjdk.jmc.flightrecorder.ui/src/main/java/org/openjdk/jmc/flightrecorder/ui/messages/internal/Messages.java b/application/org.openjdk.jmc.flightrecorder.ui/src/main/java/org/openjdk/jmc/flightrecorder/ui/messages/internal/Messages.java +index 278456a7..771529fe 100644 +--- a/application/org.openjdk.jmc.flightrecorder.ui/src/main/java/org/openjdk/jmc/flightrecorder/ui/messages/internal/Messages.java ++++ b/application/org.openjdk.jmc.flightrecorder.ui/src/main/java/org/openjdk/jmc/flightrecorder/ui/messages/internal/Messages.java +@@ -453,9 +453,6 @@ public class Messages extends NLS { + public static String PREFERENCES_REMOVE_FINISHED_RECORDING_TEXT; + public static String PREFERENCES_RULES_CONFIGURE_SELECTED; + public static String PREFERENCES_SHOW_MONITORING_WARNING_TEXT; +- public static String PREFERENCES_WEBSOCKET_SERVER_PORT_INVALID; +- public static String PREFERENCES_WEBSOCKET_SERVER_PORT_TEXT; +- public static String PREFERENCES_WEBSOCKET_SERVER_PORT_TOOLTIP; + public static String ProcessesPage_AGGR_CONCURRENT_PROCESSES; + public static String ProcessesPage_AGGR_CONCURRENT_PROCESSES_DESC; + public static String ProcessesPage_AGGR_FIRST_SAMPLE; +diff --git a/application/org.openjdk.jmc.flightrecorder.ui/src/main/java/org/openjdk/jmc/flightrecorder/ui/preferences/GeneralPage.java b/application/org.openjdk.jmc.flightrecorder.ui/src/main/java/org/openjdk/jmc/flightrecorder/ui/preferences/GeneralPage.java +index 7207a8a6..a7332aa3 100644 +--- a/application/org.openjdk.jmc.flightrecorder.ui/src/main/java/org/openjdk/jmc/flightrecorder/ui/preferences/GeneralPage.java ++++ b/application/org.openjdk.jmc.flightrecorder.ui/src/main/java/org/openjdk/jmc/flightrecorder/ui/preferences/GeneralPage.java +@@ -93,7 +93,6 @@ public class GeneralPage extends PreferencePage implements IWorkbenchPreferenceP + private Text itemListValue; + private Text propertiesArrayStringSizeValue; + private Text editorRuleEvaluationThreadsValue; +- private Text websocketPortValue; + + @Override + protected Control createContents(Composite parent) { +@@ -170,21 +169,12 @@ public class GeneralPage extends PreferencePage implements IWorkbenchPreferenceP + editorRuleEvaluationThreadsValue.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); + QuantityKindProposal.install(editorRuleEvaluationThreadsValue, UnitLookup.NUMBER); + +- Label websocketPortLabel = new Label(defaultTimespanContainer, SWT.NONE); +- websocketPortLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false)); +- websocketPortLabel.setText(Messages.PREFERENCES_WEBSOCKET_SERVER_PORT_TEXT); +- websocketPortLabel.setToolTipText(Messages.PREFERENCES_WEBSOCKET_SERVER_PORT_TOOLTIP); +- websocketPortValue = new Text(defaultTimespanContainer, SWT.BORDER); +- websocketPortValue.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); +- QuantityKindProposal.install(websocketPortValue, UnitLookup.NUMBER); +- + loadDumpTypeFromPrefStore(false); + loadTimespanFromPrefStore(false); + loadSelectionStoreSizeFromPrefStore(false); + loadItemListSizeFromPrefStore(false); + loadPropertiesArrayStringSizeFromPrefStore(false); + loadEditorRuleEvaluationThreadsFromPrefStore(false); +- loadWebsocketPortFromPrefStore(false); + timespanValue.addModifyListener(new ModifyListener() { + @Override + public void modifyText(ModifyEvent e) { +@@ -215,12 +205,6 @@ public class GeneralPage extends PreferencePage implements IWorkbenchPreferenceP + validatePage(); + } + }); +- websocketPortValue.addModifyListener(new ModifyListener() { +- @Override +- public void modifyText(ModifyEvent e) { +- validatePage(); +- } +- }); + + return container; + } +@@ -241,23 +225,7 @@ public class GeneralPage extends PreferencePage implements IWorkbenchPreferenceP + if (error == null && error2 == null && error3 == null) { + setErrorMessage(error4); + } +- String error5 = validateWebsocketPort(websocketPortValue.getText()); +- if (error == null && error2 == null && error3 == null) { +- setErrorMessage(error5); +- } +- setValid(error == null && error2 == null && error3 == null && error4 == null && error5 == null); +- } +- +- public static String validateWebsocketPort(String text) { +- try { +- int port = Integer.parseInt(text); +- if (port < 0 || port > 65535) { +- return Messages.PREFERENCES_WEBSOCKET_SERVER_PORT_INVALID; +- } +- } catch (NumberFormatException e) { +- return Messages.PREFERENCES_WEBSOCKET_SERVER_PORT_INVALID; +- } +- return null; ++ setValid(error == null && error2 == null && error3 == null && error4 == null); + } + + public static String validateNumEvaluationThreads(String text) { +@@ -337,12 +305,6 @@ public class GeneralPage extends PreferencePage implements IWorkbenchPreferenceP + editorRuleEvaluationThreadsValue.setText(FlightRecorderUI.parseItemListSize(size).interactiveFormat()); + } + +- private void loadWebsocketPortFromPrefStore(boolean loadDefault) { +- String port = loadDefault ? getPreferenceStore().getDefaultString(PreferenceKeys.PROPERTY_WEBSOCKET_SERVER_PORT) +- : getPreferenceStore().getString(PreferenceKeys.PROPERTY_WEBSOCKET_SERVER_PORT); +- websocketPortValue.setText(Integer.toString(FlightRecorderUI.parseWebsocketPort(port))); +- } +- + // private Button createClearButton(Composite parent) { + // Button button = new Button(parent, SWT.NONE); + // button.setText(Messages.PREFERENCES_CLEAR_USER_SETTINGS_TEXT); +@@ -424,7 +386,6 @@ public class GeneralPage extends PreferencePage implements IWorkbenchPreferenceP + loadItemListSizeFromPrefStore(true); + loadPropertiesArrayStringSizeFromPrefStore(true); + loadEditorRuleEvaluationThreadsFromPrefStore(true); +- loadWebsocketPortFromPrefStore(true); + super.performDefaults(); + } + +@@ -476,13 +437,6 @@ public class GeneralPage extends PreferencePage implements IWorkbenchPreferenceP + setErrorMessage(qce.getLocalizedMessage()); + return false; + } +- try { +- int port = Integer.parseInt(websocketPortValue.getText()); +- getPreferenceStore().setValue(PreferenceKeys.PROPERTY_WEBSOCKET_SERVER_PORT, Integer.toString(port)); +- } catch (NumberFormatException e) { +- setErrorMessage(Messages.PREFERENCES_WEBSOCKET_SERVER_PORT_INVALID); +- return false; +- } + + setErrorMessage(null); + if (timespanRadio.getSelection()) { +diff --git a/application/org.openjdk.jmc.flightrecorder.ui/src/main/java/org/openjdk/jmc/flightrecorder/ui/preferences/PreferenceKeys.java b/application/org.openjdk.jmc.flightrecorder.ui/src/main/java/org/openjdk/jmc/flightrecorder/ui/preferences/PreferenceKeys.java +index ecbd086a..ade4d320 100644 +--- a/application/org.openjdk.jmc.flightrecorder.ui/src/main/java/org/openjdk/jmc/flightrecorder/ui/preferences/PreferenceKeys.java ++++ b/application/org.openjdk.jmc.flightrecorder.ui/src/main/java/org/openjdk/jmc/flightrecorder/ui/preferences/PreferenceKeys.java +@@ -45,8 +45,6 @@ public class PreferenceKeys { + public static final String PROPERTY_DEFAULT_DUMP_TIMESPAN = "flightrecorder.controlpanel.default.dump.timespan"; //$NON-NLS-1$ + public static final String PROPERTY_DEFAULT_DUMP_TYPE = "flightrecorder.controlpanel.default.dump.type"; //$NON-NLS-1$ + public static final String PROPERTY_ENABLE_RECORDING_ANALYSIS = "flightrecorder.controlpanel.enable.recording.analysis"; //$NON-NLS-1$ +- public static final int DEFAULT_WEBSOCKET_PORT = 0; +- public static final String PROPERTY_WEBSOCKET_SERVER_PORT = "flightrecorder.controlpanel.websocket.server.port"; //$NON-NLS-1$ + public static final String PROPERTY_INCLUDE_EXPERIMENTAL_EVENTS_AND_FIELDS = "flightrecorder.ui.includeExperimentalEventsAndFields"; //$NON-NLS-1$ + public static final String PROPERTY_ALLOW_INCOMPLETE_RECORDING_FILE = "flightrecorder.ui.allowIncompleteRecordingFile"; //$NON-NLS-1$ + public static final IQuantity DUMP_TIMESPAN_DEFAULT = UnitLookup.MINUTE.quantity(5); +diff --git a/application/org.openjdk.jmc.flightrecorder.ui/src/main/java/org/openjdk/jmc/flightrecorder/ui/websocket/WebsocketServer.java b/application/org.openjdk.jmc.flightrecorder.ui/src/main/java/org/openjdk/jmc/flightrecorder/ui/websocket/WebsocketServer.java +deleted file mode 100644 +index 22bd2eb9..00000000 +--- a/application/org.openjdk.jmc.flightrecorder.ui/src/main/java/org/openjdk/jmc/flightrecorder/ui/websocket/WebsocketServer.java ++++ /dev/null +@@ -1,256 +0,0 @@ +-/* +- * Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved. +- * Copyright (c) 2021, Datadog, Inc. All rights reserved. +- * +- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +- * +- * The contents of this file are subject to the terms of either the Universal Permissive License +- * v 1.0 as shown at http://oss.oracle.com/licenses/upl +- * +- * or the following license: +- * +- * Redistribution and use in source and binary forms, with or without modification, are permitted +- * provided that the following conditions are met: +- * +- * 1. Redistributions of source code must retain the above copyright notice, this list of conditions +- * and the following disclaimer. +- * +- * 2. Redistributions in binary form must reproduce the above copyright notice, this list of +- * conditions and the following disclaimer in the documentation and/or other materials provided with +- * the distribution. +- * +- * 3. Neither the name of the copyright holder nor the names of its contributors may be used to +- * endorse or promote products derived from this software without specific prior written permission. +- * +- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR +- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY +- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +- */ +-package org.openjdk.jmc.flightrecorder.ui.websocket; +- +-import java.io.IOException; +-import java.time.Duration; +-import java.util.HashMap; +-import java.util.List; +-import java.util.concurrent.CopyOnWriteArrayList; +-import java.util.concurrent.ExecutorService; +-import java.util.concurrent.Executors; +-import java.util.concurrent.TimeoutException; +-import java.util.function.Function; +-import java.util.logging.Level; +-import java.util.stream.Collectors; +- +-import org.eclipse.jetty.server.Server; +-import org.eclipse.jetty.server.ServerConnector; +-import org.eclipse.jetty.servlet.ServletContextHandler; +-import org.eclipse.jetty.websocket.api.Session; +-import org.eclipse.jetty.websocket.api.WebSocketAdapter; +-import org.eclipse.jetty.websocket.server.config.JettyWebSocketServletContainerInitializer; +-import org.eclipse.jetty.websocket.servlet.WebSocketUpgradeFilter; +-import org.openjdk.jmc.common.item.IItemCollection; +-import org.openjdk.jmc.flightrecorder.serializers.dot.DotSerializer; +-import org.openjdk.jmc.flightrecorder.serializers.json.FlameGraphJsonSerializer; +-import org.openjdk.jmc.flightrecorder.serializers.json.IItemCollectionJsonSerializer; +-import org.openjdk.jmc.flightrecorder.stacktrace.FrameSeparator; +-import org.openjdk.jmc.flightrecorder.stacktrace.FrameSeparator.FrameCategorization; +-import org.openjdk.jmc.flightrecorder.stacktrace.graph.StacktraceGraphModel; +-import org.openjdk.jmc.flightrecorder.stacktrace.tree.StacktraceTreeModel; +-import org.openjdk.jmc.flightrecorder.ui.FlightRecorderUI; +- +-public class WebsocketServer { +- +- private static int MAX_MESSAGE_SIZE = 1024 * 1024 * 1024; +- private static int IDLE_TIMEOUT_MINUTES = 5; +- +- private final int port; +- private Server server; +- private List handlers = new CopyOnWriteArrayList<>(); +- private List treeHandlers = new CopyOnWriteArrayList<>(); +- private List graphHandlers = new CopyOnWriteArrayList<>(); +- private final ExecutorService executorService = Executors.newSingleThreadExecutor(); +- private IItemCollection currentSelection = null; +- +- public WebsocketServer(int port) { +- this.port = port; +- executorService.execute(() -> startServer()); +- } +- +- public int getPort() { +- return port; +- } +- +- private void startServer() { +- server = new Server(); +- ServerConnector connector = new ServerConnector(server); +- connector.setHost("127.0.0.1"); +- connector.setPort(port); +- server.addConnector(connector); +- +- ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS); +- context.setContextPath("/"); +- server.setHandler(context); +- +- JettyWebSocketServletContainerInitializer.configure(context, (servletContext, container) -> { +- container.setMaxBinaryMessageSize(MAX_MESSAGE_SIZE); +- container.setIdleTimeout(Duration.ofMinutes(IDLE_TIMEOUT_MINUTES)); +- container.addMapping("/events/*", (req, resp) -> { +- // try to send the current selection when the client connects +- // for simplicity, we serialise for every new connection +- String eventsJson = WebsocketServer.toEventsJsonString(currentSelection); +- WebsocketConnectionHandler handler = new WebsocketConnectionHandler(eventsJson); +- handlers.add(handler); +- return handler; +- }); +- container.addMapping("/tree/*", (req, resp) -> { +- String treeJson = WebsocketServer.toTreeModelJsonString(currentSelection); +- WebsocketConnectionHandler handler = new WebsocketConnectionHandler(treeJson); +- treeHandlers.add(handler); +- return handler; +- }); +- container.addMapping("/graph/*", (req, resp) -> { +- String dot = WebsocketServer.toGraphModelDotString(currentSelection); +- WebsocketConnectionHandler handler = new WebsocketConnectionHandler(dot); +- graphHandlers.add(handler); +- return handler; +- }); +- }); +- +- try { +- WebSocketUpgradeFilter.ensureFilter(context.getServletContext()); +- FlightRecorderUI.getDefault().getLogger().log(Level.INFO, +- "Starting websocket server listening on port " + port); +- server.start(); +- server.join(); +- } catch (Exception e) { +- FlightRecorderUI.getDefault().getLogger().log(Level.SEVERE, "Failed to start websocket server", e); +- } +- } +- +- public void notifyAll(IItemCollection events) { +- currentSelection = events; +- notifyAllEventHandlers(events); +- notifyAllGraphHandlers(events); +- notifyAllTreeHandlers(events); +- } +- +- private void notifyAllEventHandlers(IItemCollection events) { +- handlers = notifyAllHandlers(events, handlers, WebsocketServer::toEventsJsonString); +- } +- +- private void notifyAllGraphHandlers(IItemCollection events) { +- graphHandlers = notifyAllHandlers(events, graphHandlers, WebsocketServer::toGraphModelDotString); +- } +- +- private void notifyAllTreeHandlers(IItemCollection events) { +- treeHandlers = notifyAllHandlers(events, treeHandlers, WebsocketServer::toTreeModelJsonString); +- } +- +- private static String toEventsJsonString(IItemCollection items) { +- if (items == null) { +- return null; +- } +- return IItemCollectionJsonSerializer.toJsonString(items); +- } +- +- private static String toGraphModelDotString(IItemCollection items) { +- if (items == null) { +- return null; +- } +- FrameSeparator frameSeparator = new FrameSeparator(FrameCategorization.METHOD, false); +- StacktraceGraphModel model = new StacktraceGraphModel(frameSeparator, items, null); +- return DotSerializer.toDot(model, 10_000, new HashMap<>()); +- } +- +- private static String toTreeModelJsonString(IItemCollection items) { +- if (items == null) { +- return null; +- } +- StacktraceTreeModel model = new StacktraceTreeModel(items); +- return FlameGraphJsonSerializer.toJson(model); +- } +- +- private List notifyAllHandlers( +- IItemCollection events, List handlers, +- Function jsonSerializer) { +- handlers = handlers.stream().filter(h -> h.isConnected()).collect(Collectors.toList()); +- if (handlers.size() == 0 || events == null) { +- // do nothing if no handlers are registered +- return handlers; +- } +- String json = jsonSerializer.apply(events); +- handlers.forEach(handler -> handler.sendMessage(json)); +- return handlers; +- } +- +- public void shutdown() { +- try { +- FlightRecorderUI.getDefault().getLogger().log(Level.INFO, +- "Stopping websocket server listening on port " + port); +- server.stop(); +- // TODO: see if we need to cleanup executor service and thread +- } catch (Exception e) { +- FlightRecorderUI.getDefault().getLogger().log(Level.SEVERE, "Failed to stop websocket server", e); +- } +- } +- +- private static class WebsocketConnectionHandler extends WebSocketAdapter { +- private String firstMessage; +- +- WebsocketConnectionHandler(String firstMessage) { +- this.firstMessage = firstMessage; +- } +- +- public void sendMessage(String message) { +- if (getSession() != null && isConnected()) { +- FlightRecorderUI.getDefault().getLogger().log(Level.INFO, +- "Sending message to " + getSession().getRemoteAddress().toString()); +- try { +- getSession().getRemote().sendString(message); +- } catch (IOException e) { +- FlightRecorderUI.getDefault().getLogger().log(Level.SEVERE, "Failed to send websocket message", e); +- } +- } +- } +- +- @Override +- public void onWebSocketConnect(Session sess) { +- super.onWebSocketConnect(sess); +- FlightRecorderUI.getDefault().getLogger().log(Level.INFO, +- "Socket connected to " + sess.getRemoteAddress().toString()); +- try { +- if (firstMessage != null) { +- getSession().getRemote().sendString(firstMessage); +- firstMessage = null; +- } +- } catch (IOException e) { +- FlightRecorderUI.getDefault().getLogger().log(Level.SEVERE, "Failed to show outline view", e); +- } +- } +- +- @Override +- public void onWebSocketText(String message) { +- super.onWebSocketText(message); +- } +- +- @Override +- public void onWebSocketClose(int statusCode, String reason) { +- super.onWebSocketClose(statusCode, reason); +- FlightRecorderUI.getDefault().getLogger().log(Level.INFO, "Socket closed: [" + statusCode + "] " + reason); +- } +- +- @Override +- public void onWebSocketError(Throwable cause) { +- super.onWebSocketError(cause); +- if (cause.getCause() instanceof TimeoutException) { +- FlightRecorderUI.getDefault().getLogger().log(Level.INFO, "Websocket timed out"); +- } else { +- FlightRecorderUI.getDefault().getLogger().log(Level.SEVERE, "Websocket error", cause); +- } +- } +- } +-} +diff --git a/application/org.openjdk.jmc.flightrecorder.ui/src/main/resources/org/openjdk/jmc/flightrecorder/ui/messages/internal/messages.properties b/application/org.openjdk.jmc.flightrecorder.ui/src/main/resources/org/openjdk/jmc/flightrecorder/ui/messages/internal/messages.properties +index af337b20..fa4ddf3c 100644 +--- a/application/org.openjdk.jmc.flightrecorder.ui/src/main/resources/org/openjdk/jmc/flightrecorder/ui/messages/internal/messages.properties ++++ b/application/org.openjdk.jmc.flightrecorder.ui/src/main/resources/org/openjdk/jmc/flightrecorder/ui/messages/internal/messages.properties +@@ -389,8 +389,6 @@ NAVIGATOR_ZOOM_OUT_TEXT=Zoom Out + + PREFERENCES_CONFIRM_REMOVE_TEMPLATE_TEXT=Ask for confirmation before removing flight recording templates + PREFERENCES_ENABLE_RECORDING_ANALYSIS=Enable flight recording analysis +-PREFERENCES_WEBSOCKET_SERVER_PORT_TEXT=Websocket server port (set to 0 to disable) +-PREFERENCES_WEBSOCKET_SERVER_PORT_TOOLTIP=Start a websocket server bound to 127.0.0.1 and the selected port. The server pushes updates whenever the selection changes in the UI. + PREFERENCES_INCLUDE_EXPERIMENTAL_EVENTS_AND_FIELDS=Include experimental events and fields when reading flight recording files + PREFERENCES_ALLOW_INCOMPLETE_RECORDING_FILE=Enable reading of incomplete flight recording files + PREFERENCES_SHOW_MONITORING_WARNING_TEXT=Show warnings for problems that occur while monitoring flight recordings. +@@ -400,7 +398,6 @@ PREFERENCES_ENABLED_RULES=Enabled Rules + PREFERENCES_EVALUATION_THREAD_NUMBER_TEXT=Number of rule evaluation threads: + PREFERENCES_EVALUATION_THREAD_NUMBER_TOOLTIP=This sets the number of threads each editor will create and run in parallel to evaluate rules for that flight recording. + PREFERENCES_EVALUATION_THREAD_NUMBER_LESS_THAN_ONE=Number of rule evaluation threads: Must be at least 1 +-PREFERENCES_WEBSOCKET_SERVER_PORT_INVALID=Websocket server port must be a number between 0 and 65535 + # {0} is an exception message + PREFERENCES_EVALUATION_THREAD_NUMBER_UNPARSEABLE=Number of rule evaluation threads: {0} + PREFERENCES_PROPERTIES_ARRAY_STRING_SIZE_TEXT=Maximum display length of arrays in Properties view +diff --git a/releng/platform-definitions/platform-definition-2021-06/platform-definition-2021-06.target b/releng/platform-definitions/platform-definition-2021-06/platform-definition-2021-06.target +index 70d29746..e2315328 100644 +--- a/releng/platform-definitions/platform-definition-2021-06/platform-definition-2021-06.target ++++ b/releng/platform-definitions/platform-definition-2021-06/platform-definition-2021-06.target +@@ -45,10 +45,6 @@ + + + +- +- +- +- + + + +diff --git a/releng/platform-definitions/platform-definition-2021-12/platform-definition-2021-12.target b/releng/platform-definitions/platform-definition-2021-12/platform-definition-2021-12.target +index ebfc34eb..48bd6cbe 100644 +--- a/releng/platform-definitions/platform-definition-2021-12/platform-definition-2021-12.target ++++ b/releng/platform-definitions/platform-definition-2021-12/platform-definition-2021-12.target +@@ -45,10 +45,6 @@ + + + +- +- +- +- + + + diff --git a/SOURCES/symlink_libs.sh b/SOURCES/symlink_libs.sh old mode 100644 new mode 100755 diff --git a/SPECS/jmc.spec b/SPECS/jmc.spec index 5c07f33..709661f 100644 --- a/SPECS/jmc.spec +++ b/SPECS/jmc.spec @@ -4,7 +4,7 @@ %global patchlevel 0 # Revision -%global revnum 18 +%global revnum 19 # set to 1 for snapshots, 0 for release %global usesnapshot 1 @@ -81,6 +81,8 @@ Patch1: 1-remove-non-linux-environments.patch Patch2: 2-skip-writer-tests.patch # Bump the lz4 version up to 1.10.2, as well as the p2 plugin version to resolve an osgi issue Patch3: 3-bump-lz4-version.patch +# Remove the websocket plugin. +Patch4: 4-remove-websocket.patch # Dependencies are bundled into a tar.gz and passed as a local maven repository for the build ExclusiveArch: x86_64 @@ -365,26 +367,12 @@ Provides: bundled(osgi(org.eclipse.help.ui.nl_zh)) = 4.21.0 Provides: bundled(osgi(org.eclipse.help.webapp.nl_ja)) = 4.21.0 Provides: bundled(osgi(org.eclipse.help.webapp.nl_zh)) = 4.21.0 Provides: bundled(osgi(org.eclipse.jetty.http)) = 10.0.6 -Provides: bundled(osgi(org.eclipse.jetty.http)) = 10.0.7 Provides: bundled(osgi(org.eclipse.jetty.io)) = 10.0.6 -Provides: bundled(osgi(org.eclipse.jetty.io)) = 10.0.7 Provides: bundled(osgi(org.eclipse.jetty.security)) = 10.0.6 -Provides: bundled(osgi(org.eclipse.jetty.security)) = 10.0.7 Provides: bundled(osgi(org.eclipse.jetty.server)) = 10.0.6 -Provides: bundled(osgi(org.eclipse.jetty.server)) = 10.0.7 Provides: bundled(osgi(org.eclipse.jetty.servlet)) = 10.0.6 -Provides: bundled(osgi(org.eclipse.jetty.servlet)) = 10.0.7 Provides: bundled(osgi(org.eclipse.jetty.util)) = 10.0.6 -Provides: bundled(osgi(org.eclipse.jetty.util)) = 10.0.7 Provides: bundled(osgi(org.eclipse.jetty.util.ajax)) = 10.0.6 -Provides: bundled(osgi(org.eclipse.jetty.webapp)) = 10.0.7 -Provides: bundled(osgi(org.eclipse.jetty.websocket.api)) = 10.0.7 -Provides: bundled(osgi(org.eclipse.jetty.websocket.common)) = 10.0.7 -Provides: bundled(osgi(org.eclipse.jetty.websocket.core.common)) = 10.0.7 -Provides: bundled(osgi(org.eclipse.jetty.websocket.core.server)) = 10.0.7 -Provides: bundled(osgi(org.eclipse.jetty.websocket.server)) = 10.0.7 -Provides: bundled(osgi(org.eclipse.jetty.websocket.servlet)) = 10.0.7 -Provides: bundled(osgi(org.eclipse.jetty.xml)) = 10.0.7 Provides: bundled(osgi(org.eclipse.jface)) = 3.23.0 Provides: bundled(osgi(org.eclipse.jface.databinding)) = 1.13.0 Provides: bundled(osgi(org.eclipse.jface.databinding.nl_ja)) = 4.21.0 @@ -550,6 +538,7 @@ applications running locally or deployed in production environments. %patch1 -p1 %patch2 -p1 %patch3 -p1 +%patch4 -p1 # explicitly use maven-clean-plugin at v2.5 cat > settings-offline.xml < - 8.2.0-5 +- Remove the websocket plugin. Related: RHEL-168615 + * Wed Jan 7 2026 Joshua Matsuoka - 8.2.0-4 - Bump LZ4 Version to 1.10.2. Related: RHEL-135478