Juan José Ramos Cassella created GEODE-3292:
-----------------------------------------------
Summary: Embedded PULSE Connection Failure When
jmx-manager-bind-address != localhost
Key: GEODE-3292
URL: https://issues.apache.org/jira/browse/GEODE-3292
Project: Geode
Issue Type: Bug
Components: pulse
Reporter: Juan José Ramos Cassella
The PULSE webApp (embedded mode) fails to connect to the jmx-manager when a
non-default {{jmx-manager-bind-address}} is configured. The app tries to
connect by default to
{{service:jmx:rmi://localhost/jndi/rmi://localhost:17991/jmxrmi}} whenever it
detects it's running in embedded mode, instead of getting the local hostname
through {{InetAddress.getLocalHost().getCanonicalHostName()}} as it used to do
before.
The problem was introduced by
[GEODE-2927|https://issues.apache.org/jira/browse/GEODE-2927], commit
[0f978a6df711d04e0c7c1926fb1e297d07c21aa3|https://git-wip-us.apache.org/repos/asf?p=geode.git;h=0f978a6].
Steps to reproduce:
{code:none}
$ export JAVA_ARGS="-Dgfsh.log-level=config -Dgfsh.log-dir=$(pwd)"
$ gfsh start locator --name=locator1 --force=true --connect=false \
--J=-Dpulse.Log-Level=debug --J=-Dpulse.Log-File-Name=pulse.log
--J=-Dpulse.Log-FileLocation=$(pwd) \
--J=-Dgemfire.jmx-manager=true --J=-Dgemfire.jmx-manager-start=true
--J=-Dgemfire.jmx-manager-port=17991 \
--J=-Dgemfire.jmx-manager-bind-address=$(ipconfig getifaddr en0)
$ gfsh start pulse
{code}
At this point, and after a successful login to PULSE, the application doesn't
show any cluster data and the exception can be seen (both in the logs and in
the PULSE screen).
The easiest solution would be to revert back some lines of the changes made by
commit
[0f978a6df711d04e0c7c1926fb1e297d07c21aa3|https://git-wip-us.apache.org/repos/asf?p=geode.git;h=0f978a6],
as follows:
{code:title=PulseAppListener.java|borderStyle=solid}
@Override
public void contextInitialized(ServletContextEvent event) {
(...)
boolean sysIsEmbedded =
Boolean.getBoolean(PulseConstants.SYSTEM_PROPERTY_PULSE_EMBEDDED);
if (sysIsEmbedded) {
// jmx connection parameters
logger.info(resourceBundle.getString("LOG_MSG_APP_RUNNING_EMBEDDED_MODE"));
repository.setJmxUseLocator(false);
//----------------------------------------------------------------------------------------
String sysPulseHost;
try {
// Get host name of machine running pulse in embedded mode
sysPulseHost = InetAddress.getLocalHost().getCanonicalHostName();
} catch (Exception e) {
logger.debug(resourceBundle.getString("LOG_MSG_JMX_CONNECTION_UNKNOWN_HOST"),
e);
// Set default host name
sysPulseHost = PulseConstants.GEMFIRE_DEFAULT_HOST;
}
repository.setHost(sysPulseHost);
//----------------------------------------------------------------------------------------
repository.setPort(System.getProperty(PulseConstants.SYSTEM_PROPERTY_PULSE_PORT,
PulseConstants.GEMFIRE_DEFAULT_PORT));
// SSL, all the other system properties are already set in the embedded VM
repository.setUseSSLManager(
Boolean.valueOf(System.getProperty(PulseConstants.SYSTEM_PROPERTY_PULSE_USESSL_MANAGER)));
repository.setUseSSLLocator(
Boolean.valueOf(System.getProperty(PulseConstants.SYSTEM_PROPERTY_PULSE_USESSL_LOCATOR)));
(...)
}
{code}
I can make the changes and submit a PR if someone assigns me this ticket.
Cheers.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)