[
https://issues.apache.org/jira/browse/FLINK-4087?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15348243#comment-15348243
]
ASF GitHub Bot commented on FLINK-4087:
---------------------------------------
Github user zentol commented on a diff in the pull request:
https://github.com/apache/flink/pull/2145#discussion_r68396189
--- Diff:
flink-core/src/main/java/org/apache/flink/metrics/reporter/JMXReporter.java ---
@@ -265,4 +329,72 @@ public Object getValue() {
return gauge.getValue();
}
}
+
+ /**
+ * JMX Server implementation that JMX clients can connect to.
+ *
+ * Heavily based on j256 simplejmx project
+ *
+ *
https://github.com/j256/simplejmx/blob/master/src/main/java/com/j256/simplejmx/server/JmxServer.java
+ */
+ private static class JMXServer {
+ private int port;
+ private Registry rmiRegistry;
+ private JMXConnectorServer connector;
+
+ public JMXServer(int port) {
+ this.port = port;
+ }
+
+ public void start() throws IOException {
+ startRmiRegistry();
+ startJmxService();
+ }
+
+ public void stop() throws IOException {
+ if (connector != null) {
+ try {
+ connector.stop();
+ } finally {
+ connector = null;
+ }
+ }
+ if (rmiRegistry != null) {
+ try {
+
UnicastRemoteObject.unexportObject(rmiRegistry, true);
+ } catch (NoSuchObjectException e) {
+ throw new IOException("Could not
unexport our RMI registry", e);
+ } finally {
+ rmiRegistry = null;
+ }
+ }
+ }
+
+ private void startRmiRegistry() throws IOException {
+ if (rmiRegistry != null) {
+ return;
+ }
+ rmiRegistry = LocateRegistry.createRegistry(port);
+ }
+
+ private void startJmxService() throws IOException {
+ if (connector != null) {
+ return;
+ }
+ String serverHost = "localhost";
+ String registryHost = "";
+ String serviceUrl =
+ "service:jmx:rmi://" + serverHost + ":" + port
+ "/jndi/rmi://" + registryHost + ":" + port + "/jmxrmi";
--- End diff --
No, it does not allow connecting via remote. This also applies to the
current version.
I also remembered that this was not considered a required feature during
implementation.
> JMXReporter can't handle port conflicts
> ---------------------------------------
>
> Key: FLINK-4087
> URL: https://issues.apache.org/jira/browse/FLINK-4087
> Project: Flink
> Issue Type: Improvement
> Components: Metrics
> Affects Versions: 1.1.0
> Reporter: Chesnay Schepler
> Assignee: Chesnay Schepler
> Priority: Blocker
> Fix For: 1.1.0
>
>
> The JMXReporter is currently configured to use a single port that is set as a
> JVM argument.
> This approach has a few disadvantages:
> If multiple TaskManagers run on the same machine only 1 can expose metrics.
> This issue is compounded by the upcoming JobManager metrics, which would then
> prevent TM metrics from being exposed in local setups.
> Currently, we prevent other TM's from exposing metrics by checking the the
> start-daemon-sh whether a TM is already running, and if so clear the
> arguments. This isn't a particular safe way to do it, and this script is not
> used when deploying on yarn, leading to TM failures since the JVM can't
> allocate the JMX port.
> We should find a way to specifiy port-ranges for JMX and log the final port
> used.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)