You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "Juan José Ramos Cassella (JIRA)" <ji...@apache.org> on 2017/07/25 14:15:00 UTC

[jira] [Created] (GEODE-3292) Embedded PULSE Connection Failure When jmx-manager-bind-address != localhost

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)