You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@knox.apache.org by GitBox <gi...@apache.org> on 2019/08/15 09:41:49 UTC

[GitHub] [knox] smolnar82 opened a new pull request #131: KNOX-1957 - Optional APP_JAVA_OPTS are handled properly

smolnar82 opened a new pull request #131: KNOX-1957 - Optional APP_JAVA_OPTS are handled properly
URL: https://github.com/apache/knox/pull/131
 
 
   ## What changes were proposed in this pull request?
   
   It seems [KNOX-1816](https://issues.apache.org/jira/browse/KNOX-1816) caused a regression wrt the way options are handled in the scripts (e.g., gateway.sh).
   
   Specifically, if the `KNOX_GATEWAY_DBG_OPTS `env var is set, even though the value is included in the resulting command, the JVM does not listen on the configured port.
   
   The issue appears to be the double-quoting of `$APP_JAVA_OPTS` in knox-functions.sh, specifically in the `appStart` function (for this particular error).
   
   ## How was this patch tested?
   
   Running JUnit tests:
   ```
   $ mvn clean -Dshellcheck=true -T1C verify -Prelease,package
   ...
   [INFO] ------------------------------------------------------------------------
   [INFO] BUILD SUCCESS
   [INFO] ------------------------------------------------------------------------
   [INFO] Total time: 17:52 min (Wall Clock)
   [INFO] Finished at: 2019-08-15T11:17:57+02:00
   [INFO] Final Memory: 383M/2232M
   [INFO] ------------------------------------------------------------------------
   ```
   
   Additionally, I tested the Knox CLI as follows:
   ```
   ################
   ## knoxcli.sh ##
   ################
   
   $ bin/knoxcli.sh create-master --master master
   APP_JAVA_OPTS = -Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=y -Djava.library.path=/Users/smolnar/test/knoxGateway/ext/native
   Listening for transport dt_socket at address: 5005
   
   $ unset KNOX_CLI_DBG_OPTS
   
   $ bin/knoxcli.sh create-master --master master
   APP_JAVA_OPTS = -Djava.library.path=/Users/smolnar/test/knoxGateway/ext/native
   Master secret has been persisted to disk.
   
   $ bin/knoxcli.sh create-master --master master
   APP_JAVA_OPTS = -Djava.library.path=/Users/smolnar/test/knoxGateway/ext/native
   Master secret is already present on disk. Please be aware that overwriting it will require updating other security artifacts.  Use --force to overwrite the existing master secret.
   
   $ bin/knoxcli.sh create-master --master master --force
   APP_JAVA_OPTS = -Djava.library.path=/Users/smolnar/test/knoxGateway/ext/native
   Master secret has been persisted to disk.
   ```
   
   ```
   ################
   ## gateway.sh ##
   ################
   
   $ bin/gateway.sh
   Usage: bin/gateway.sh {start|stop|status|clean}
   
   $ bin/gateway.sh status
   Gateway is not running. No PID file found.
   
   $ bin/gateway.sh clean
   Removed the Gateway PID file.
   Removed the Gateway OUT file.
   Removed the Gateway ERR file.
   
   $ bin/gateway.sh start
   APP_JAVA_OPTS = -Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=y -Djava.library.path=/Users/smolnar/test/knoxGateway/ext/native
   Starting Gateway succeeded with PID 49362.
   
   $ bin/gateway.sh status
   Gateway is running with PID 49362.
   
   $ bin/gateway.sh clean
   Can't clean files.  Gateway is running with PID 49362.
   
   $ bin/gateway.sh start
   APP_JAVA_OPTS = -Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=y -Djava.library.path=/Users/smolnar/test/knoxGateway/ext/native
   Gateway is already running with PID 49362.
   
   $ bin/gateway.sh stop
   Stopping Gateway with PID 49362 succeeded.
   
   $ bin/gateway.sh status
   Gateway is not running. No PID file found.
   ```
   During gateway start I was able to connect to the Java process on localhost:5005 using my IDE's remote debugging feature.
   
   ```
   #############
   ## ldap.sh ##
   #############
   
   $ bin/ldap.sh
   Usage: bin/ldap.sh {start|stop|status|clean}
   
   $ bin/ldap.sh status
   LDAP is not running. No PID file found.
   
   $ bin/ldap.sh stop
   LDAP is not running.
   
   $ bin/ldap.sh clean
   Removed the LDAP PID file.
   Removed the LDAP OUT file.
   Removed the LDAP ERR file.
   $ bin/ldap.sh start
   APP_JAVA_OPTS = -Djava.library.path=/Users/smolnar/test/knoxGateway/ext/native
   Starting LDAP succeeded with PID 49719.
   
   $ bin/ldap.sh start
   APP_JAVA_OPTS = -Djava.library.path=/Users/smolnar/test/knoxGateway/ext/native
   LDAP is already running with PID 49719.
   
   $ bin/ldap.sh clean
   Can't clean files.  LDAP is running with PID 49719.
   
   $ bin/ldap.sh status
   LDAP is running with PID 49719.
   
   $ bin/ldap.sh clean
   Can't clean files.  LDAP is running with PID 49719.
   
   $ bin/ldap.sh stop
   Stopping LDAP with PID 49719 succeeded.
   
   $ bin/ldap.sh stop
   LDAP is not running.
   ```
   
   
   ```
   ##################
   ## knoxshell.sh ##
   ##################
   
   $ bin/knoxshell.sh help
   
   Apache Knox Client Shell
   The client shell facility provide a CLI for establishing and managing Apache Knox Sessions
   and executing the Apache Knox groovy-based DSL scripts. It may also be used to enter an
   interactive shell where groovy-based DSL and groovy code may be entered and executed in realtime.
   
   knoxshell usage: 
      knoxshell.sh [[buildTrustStore <knox-gateway-url>|init <topology-url>|list|destroy|help] | [<script-file-name>]]
      ----------------------------------------------------------
      buildTrustStore <knox-gateway-url> - downloads the given gateway server's public certificate and builds a trust store to be used by KnoxShell
           example: knoxshell.sh buildTrustStore https://localhost:8443/
      init <topology-url> - requests a session from the knox token service at the url
           example: knoxshell.sh init https://localhost:8443/gateway/sandbox
      list - lists the details of the cached knox session token
           example: knoxshell.sh list
      destroy - removes the cached knox session token
           example: knoxshell.sh destroy
      <script-file-name> - executes the groovy script file
           example: knoxshell.sh ~/bin/ls.groovy
   
   $ bin/knoxshell.sh buildTrustStore  https://localhost:8443/
   Opening connection to localhost:8443...
   Starting SSL handshake...
   Gateway server's certificate is exported into /Users/smolnar/gateway-client-trust.jks
   
   $ bin/knoxshell.sh init https://localhost:8443/gateway/sandbox
   Enter username: admin
   Enter password: 
   log4j:WARN No appenders could be found for logger (org.apache.http.client.protocol.RequestAddCookies).
   log4j:WARN Please initialize the log4j system properly.
   log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
   knoxinit successful!
   Token Type: Bearer
   Expires On: 08/15/2019 08:44:49
   Target URL: https://localhost:8443/gateway/tokenbased
   
   $ bin/knoxshell.sh list
   Token Type: Bearer
   Expires On: 08/15/2019 08:44:49
   Target URL: https://localhost:8443/gateway/tokenbased
   ```

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services