RMsis fails to start after configuration - possible causes and solutions

Introduction

We have been receiving many support requests where the RMsis Application does not start after configuration. The support team finds it extremely difficult to propose a solution, without having adequate knowledge of the installation site. This document tries to provide background to the user and suggests some solutions
  • We start with an explanation of how RMsis and JIRA co-exist from RMsis versions 1.3.0 onwards.
  • Explain the sequence of installation process at  a high level
  • Identify some common problems and propose solutions / corrective actions

We hope that this information will be useful in finding a quick solutions to the User's problems.

Background Information

  • RMsis has two parts
    • A RMsis Plugin for JIRA, which integrates with JIRA.
    • RMsis application, which runs on it's own instance of Tomcat.
  • JIRA and RMsis use the URL's of each other for communication between the two applications. So, in order to communicate, it is essential that:
    • JIRA Application / RMsis Plugin for JIRA is able to access RMsis URL
    • RMsis Application is able to access JIRA URL

Sequence of Operations for New Installation

  1. UPM installs the RMsis plugin (rmsis-x.x.jar). An error occurring during this process comes in the category of "System Function".
  2. RMsis setup process starts with the first click on RMsis Option of JIRA Menu Bar.
  3. RMsis plugin sets up RMsis Home in JIRA_HOME/rmsis directory. The next steps are
    1. DB Configuration : RMsis plugin saves the database configuration in a file (jdbc.properties) under the RMSIS_HOME.
    2. Mail Configuration : RMsis plugin saves the mail configuration in a file (mail.properties) under the RMSIS_HOME.
    3. RMsis Server Configuration : RMsis plugin saves the server configuration in a file (server.properties) under the RMSIS_HOME
    4. Deploy : RMsis plugin deploys the rmsis application in embedded tomcat server.
  4. Now, to check, whether RMsis has been successfully deployed or not, RMsis plugin checks the URL RMSIS_BASE_URL/rm/jira/getRMsisConfiguration.json
    1. If the response status is 200 then it notifies the end user "RMsis server started successfully. Now click on finish to complete."
    2. else it shows the message "An error has occurred.". The error occurred during this process comes in the category of "Network Configuration".
  5. After clicking on "Finish" button, RMsis application starts and populates the RMsis database with tables and predefined data automatically.
  6. Finally it redirects end user to the license page.

Sequence of Operations for Upgrade

  1. UPM installs the RMsis plugin (rmsis-x.x.jar). The error occurring during this process comes in the category of "System Function".
    1. In this process, RMsis plugin also stops the previously running RMsis server
  2. RMsis plugin notifies the user to take a backup of RMsis database.
  3. In the next step, RMsis plugin deploys the latest RMsis instance in embedded tomcat server
  4. Now, to check, whether it has been successfully deployed or not, RMsis plugin checks the URL RMSIS_BASE_URL/rm/jira/getRMsisConfiguration.json
    1. If the response status is 200 then it notifies the end user "RMsis server started successfully. Now click on finish to complete."
    2. else it shows the message "An error has occurred.". The error occurred during this process comes in the category of "Network Configuration".
  5. After clicking on "Finish" button, RMsis application checks for license:
    1. In the case of valid license (having valid support time), the application upgrade (migration) process starts.
    2. Then it redirects end user to RMsis Home page.
    3. In the case of invalid / expired license, application redirects the end user to the license page.

Built in Diagnostics

In case of installation failure, RMsis installer will present an option to the user to run diagnostics, and captures the result in log files as well as displays on the screen. In case of issues encountered during installation, the following screen is presented to the user

Here the user will have an option to run diagnosis.

Possible Causes and Solutions

#CategoryCause / IssueSymptomsPossible Solution(s)Included in Diagnostics ?
 System FunctionApplication does not have the permissions to create JIRA_HOME/rmsis
  • JIRA_HOME/rmsis directory not created
  • Configuration files not written
Provide adequate permissions to the user.Yes
 System FunctionJRE is not accessible to RMsis Plugin
  • Unable to access / process JAR file
Include JRE location in path.Yes
 System FunctionInsufficient memory to run JAVA / Tomcat / RMsis
  • Unable to start RMsis
User needs to check available memory and increase the available memory, if necessaryNo
 System FunctionDatabase is not accessible
  • Exception while trying to connect to Database
  • Test Database Connection fails, while installing RMsis
  • User will be prevented from going to the next step.
  • Note : One possibility is that the user incorrectly provides JIRA database as RMsis database. This is incorrect and should not be done.
Reconfigure RMsis regarding the DatabaseYes
 System FunctionPlugin is unable to stop instance of RMsis (and Tomcat)
  • Error message during RMsis installation.
  • If successful, expect to see only one instance of Tomcat (corresponding to JIRA).
  1. Kill the JAVA Process corresponding to RMsis.
  2. After RMsis (and Tomcat) processes are manually terminated; click on RMsis tab (on JIRA menu bar) again to resume RMsis.
Yes
 Network ConfigurationFirewall is blocking RMsis / JIRA ports.
  • Timeout while trying to connect to RMsis.
Enable access to RMsis URL and portsYes
 Network ConfigurationA network Element / Proxy is directing all traffic to the Gateway, ignoring traffic meant for the server hosting RMsis and JIRA.
  • Timeout while trying to connect to RMsis.
Exclude JIRA / RMsis server from the proxy settingsYes
 Network ConfigurationReverse Proxy prohibits communication between two applications.
  • Timeout while trying to connect to RMsis.
Reconfigure reverse proxy to enable communication between two processes.Yes
 Network ConfigurationRMsis cannot connect with JIRA over HTTP. Network configuration problem.
  • JIRA Internal URL access failure.

 

Test connection while configuring JIRA Internal URL.

Yes
 Network ConfigurationRMsis cannot connect with JIRA over HTTPS even though other users can access JIRA. Client side certificate not installed.
  • JIRA Internal URL access failure.
  1. Test connection while configuring JIRA Internal URL.
  2. Install client side keys. Refer document Running RMsis on SSL or HTTPS
Yes
 Network ConfigurationJIRA is unable to access RMsis URL using HTTP. Network configuration problem.
  • While trying to connect to RMsis, the following errors are possible
    • Timeout
    • Connection Refused
  • An attempt to access RMsis URL from a browser installed on the server (where JIRA and RMsis are running) fails.
  1. Check if RMsis URL is correctly specified in the configuration.
  2. Check if firewall is blocking access to RMsis port. Provide access
Yes
 Network ConfigurationJIRA is unable to access RMsis URL using HTTPS. Invalid certificate OR incorrect certificate installation.
  • While trying to connect to RMsis, the following errors are possible
    • Timeout
    • Connection Refused
  • An attempt to access RMsis url from a browser installed on the server (where JIRA and RMsis are running) fails.
  1. Install client side keys. Refer document Running RMsis on SSL or HTTPS
Yes

Problem is still unresolved ?

Contact support@optimizory.com with RMsis Logs generated through RMsis > Send Log Files option in JIRA Menu Bar.

A typical Reverse Proxy Configuration

Here is an example of a typical reverse Proxy Configuration with both JIRA and RMsis running on HTTP. Key points to note for this configuration to work correctly

  • Reverse proxy should not be blocking access from
    • JIRA to RMsis
    • RMsis to JIRA

A corresponding (network) configuration in RMsis would be:

Reverse Proxy Configuration for Apache : Sample 1

If JIRA is running under the context "/jira", then the sample reverse proxy configuration for both servers would be:

NameVirtualHost *:443
<VirtualHost *:443>
    ServerName example.com
    ProxyRequests Off
    ProxyPreserveHost On
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
    SSLEngine On
    SSLCertificateFile /home/user/ssl/server.crt
    SSLCertificateKeyFile /home/user/ssl/server.key
    SSLCertificateChainFile /home/user/ssl/cabundle.crt
 
    #for JIRA Server
    ProxyPass /jira http://localhost:8080/jira
    ProxyPassReverse /jira http://localhost:8080/jira
 
    #for RMsis Server
    ProxyPass /rm http://localhost:3060/rm
    ProxyPassReverse /rm http://localhost:3060/rm

    <Location />
        Order allow,deny
        Allow from all
    </Location>
</VirtualHost>

 

Reverse Proxy Configuration for Apache : Sample 2

If JIRA is running under the root context "/",then

  • the sample reverse proxy configuration for JIRA server would be:

    NameVirtualHost *:443
    <VirtualHost *:443>
        ServerName jira.example.com
        ProxyRequests Off
        ProxyPreserveHost On
        <Proxy *>
            Order deny,allow
            Allow from all
        </Proxy>
        SSLEngine On
        SSLCertificateFile /home/user/ssl/server.crt
        SSLCertificateKeyFile /home/user/ssl/server.key
        SSLCertificateChainFile /home/user/ssl/cabundle.crt
     
        #for JIRA Server
        ProxyPass / http://localhost:8080/
        ProxyPassReverse / http://localhost:8080/
     
        <Location />
            Order allow,deny
            Allow from all
        </Location>
    </VirtualHost>
  • the sample reverse proxy configuration for RMsis server would be:
     

    NameVirtualHost *:443
    <VirtualHost *:443>
        ServerName rm.example.com
        ProxyRequests Off
        ProxyPreserveHost On
        <Proxy *>
            Order deny,allow
            Allow from all
        </Proxy>
        SSLEngine On
        SSLCertificateFile /home/user/ssl/server.crt
        SSLCertificateKeyFile /home/user/ssl/server.key
        SSLCertificateChainFile /home/user/ssl/cabundle.crt
     
        #for RMsis Server
        ProxyPass /rm http://localhost:3060/rm
        ProxyPassReverse /rm http://localhost:3060/rm
    
        <Location />
            Order allow,deny
            Allow from all
        </Location>
    </VirtualHost>