Upgrade From Previous Major Version
Introduction
This guide addresses upgrades from Resolve Actions Pro 6.x to Actions Pro 7.9. For upgrading from one minor Actions Pro 7 release to another (7.x to 7.x), refer to Upgrading to Minor or Patch Version.
You can upgrade to this latest release of Actions Pro from the following releases:
- Actions Pro 7.0.0.12 or later—refer to the Upgrading to Minor or Patch Version for this type of upgrade
Upgrade from Actions Pro 6.5 or a later version on the 6 branch is not directly supported. To upgrade, go through the following multistep process:
- First step: Upgrade from 6.5 to 7.0.0.12.
- Second step: Upgrade from 7.0.0.12 to 7.9.
Contact your Resolve representative if you are running an earlier version than 6.5.
Prerequisites
Before upgrading to the current version, check the following.
Back Up Your Deployment
Make a hard backup of the Actions Pro installation directory, Elasticsearch, and database before upgrading. One way to do that is through VM snapshots.
Due to changes in Elasticsearch, rollback is not possible with this upgrade.
Review the Release Notes
Review the Release Notes before you start the upgrade.
Review the System Requirements
Ensure that the system requirements are met before you start the upgrade:
Actions Pro 6.x installed on CentOS 6 requires OS upgrade to one of the supported OS versions before upgrading to Actions Pro v7.x.
Validate Production Use Cases
Between releases, Actions Pro makes regular changes to the JAR files that are part of Actions Pro to introduce new functionality and to provide the latest stability and security updates. This may impact your existing use cases. Identify your use cases and validate full functionality before you upgrade your production environment(s).
Verify the following use cases:
- Automations
- Dashboards
Check what JAR files have been updated between your Actions Pro version and the version that you are upgrading to:
Uptime Tasks
Uptime tasks are tasks that you need to perform while your Actions Pro deployment is still up and running, before you stop the Actions Pro services for the upgrade.
Identify All Connected Components
Version-mismatched components that try to connect to RabbitMQ (usually external RSRemote instances) will have an adverse effect on the upgrade. To identify the current connections before taking remediating action, use any of the approaches described below.
Identify Connections by IP
Run the following command:
<actions-pro-home>/rabbitmq/linux64/rabbitmq/sbin/rabbitmqctl list_connections
Identify Connections from the UI
Log in to Action and from the main menu, go to System Administration > List Registration.
Identify Connections Using RSConsole
After you log in to the RSConsole command-line utility, run these commands:
CONNECT BROADCAST
Info/info
In large environments, it is recommended to either increase the console buffer or record the command line while performing this task as the output might be large.
For more information on how to use RSConsole, see System Administration.
Downtime Tasks
Downtime tasks are tasks that you need to perform after you stop the Actions Pro services for the upgrade.
Where the tasks involve Blueprint.properties
configuration changes, remember to run the configuration script after you make the changes to apply them:
<actions-pro-home>/bin/config.sh
CSRF Guard Properties
In Actions Pro 7.x, CSRF Guard properties are managed through the blueprint properties file, as the csrfguard.properties
file is deleted with the upgrade. You must migrate any custom csrfguard.properties
properties that you might have to the following rsview.csrfguard.unprotected
section in the Blueprint.properties
file.
Use the following rules to migrate the properties:
- New format is
rsview.csrfguard.unprotected.<serial number>=<CSRFguard ALIAS>=/<URL PATH>
, where:- serial number is ascending integer starting with 1 (2, 3, 4, and so on)
- CSRFguard ALIAS is an arbitrary property name
- URL PATH is the protected URL
- Multi-node RSView instances must match the primary node
Example: rsview.csrfguard.unprotected.1=WikiView=/resolve/service/wiki/view/*
Elasticsearch Settings
Starting with Actions Pro 7.2, the Actions Pro archiving feature started utilizing Elasticsearch Lifecycle Management instead of RSArchive.
If you are upgrading from Actions Pro version 7.1 or earlier, ensure the following Blueprint.properties
configuration changes are in place before starting the upgrade:
rssearch.shards=1
The property might have been set to 1 or higher in your environment even with RSArchive running. Resources will free up as the older indices with more shards are rolled over. To speed up the process, archive as much worksheet data as you can using RSArchive prior to the upgrade.
Operating System Tasks
Review the list of OS settings below to ensure that your system meets the minimum requirements. If it doesn’t, run the <actions-pro-home>/bin/setup_limits.sh
and <actions-pro-home>/bin/setup_sysctl.sh
commands as root
to set higher limits.
- FILE LIMIT=131072
- MEMORY_LIMIT=unlimited
- ADDRESS_LIMIT=unlimited
- PROCESS_LIMIT=10240
- ulimit = 131072
- vm.max_map_count = 262144
Network Connections
Ensure the network connectivity between the database and the Actions Pro cluster machines works without issue.
- Verify network ports. For more information, refer to System Requirements:
- Also see Elasticsearch Data Migration Requirements.
Elasticsearch Data Migration Requirements
As of Actions Pro 7.0, the internal Elasticsearch (ES) database has been upgraded from 5.x to 7.x. For Actions Pro to function properly when updating from Actions Pro 6.x, existing ES data is migrated automatically to the new ES format.
To minimize the performance impact and to ensure data integrity, the data migration is performed by standing up a new ES cluster and migrating the data from the existing ES cluster to the new one. On each ES node, ensure the following system requirements are met:
- Memory: double the current
rssearch.run.Xmx
value and then add 4 GB more temporary RAM on top of it. - Disk space: double the capacity used by the old ES version and then add 40% headroom.
- Example: If the current disk size is 10 GB and 6 GB is allocated to ES, the new disk space should be at least 20 GB.
- System load: ensure that during the time of migration the system is not under a heavy load.
- Temporary network ports:
- Open ports for communication between the existing and the new ES clusters during data migration. You can close the ports after successful migration.
- By default, the new ports are the current ports +400.
- The current ports are defined in the blueprint file. For the default values (9200 and 9300), the new ports to open are 9600 and 9700.
Because of the migration, the Actions Pro upgrade consists of two steps:
- Data migration: Migrating ES data to a new ES cluster. The existing Actions Pro cluster continues to function during the process.
- Upgrading Actions Pro: Upgrading to the new Actions Pro release together with all daily indices and all other non-daily indices data.
Too many ES indices will cause the upgrade to fail. As a rule of thumb, you are likely to have too many indices if you have set the rsarchive.archive.expiry
Blueprint property to more than 30 days.
Do the following to reduce the index size before running the upgrade:
- Run RSArchive to ensure old index data is archived. Do either of the following:
- Wait for the next scheduled run to happen.
- Change the schedule to run sooner and then restart RSArchive.
- If you have set
rsarchive.archive.expiry
to more than 30 days, consider deleting older indices:- For a list of index names and the naming format, see the RSArchive guide for the version that you are upgrading from.
- Use
curl
to delete one or more of the indices. Use wildcards to delete multiple files. For example:curl -XDELETE http://<ES URL>:9200/worksheet-202108*
- The Actions Pro ES index data consists of non-daily and daily index data:
- The daily index is data related to worksheets, process requests, task results, and others. A new index is created for each calendar day and its index name ends in
_yyyyMMdd
. - The non-daily index data is stored in ES without by-day separation. Its index name does not contain a date.
- The daily index is data related to worksheets, process requests, task results, and others. A new index is created for each calendar day and its index name ends in
Groovy Sandbox File Backup
If you are upgrading from Actions Pro 7.6 or an earlier 7.x release, you need to take additional steps in relation to Groovy Sandbox whitelisting improvements made in Actions Pro 7.7.
You need to back up your Groovy Sandbox configuration before starting the upgrade. Back up the following files for each Actions Pro component that has Groovy Sandbox enabled:
groovy_blacklist
groovy_whitelist
groovy_sandbox_properties
These files will be overwritten with defaults for RSArchive, RSConsole, RSControl, RSMgmt, RSRemote, and RSView during the upgrade.
After the upgrade, you can restore your original files or append to the new default files.
Running the Upgrade
This section contains information about the preparation phase of the migration. It also instructs about upgrading clustered environments and the related procedure.
Upgrading a Standalone Deployment
To upgrade your standalone Actions Pro deployment, take the following steps:
- Ensure that Actions Pro is down (including all standalone RSRemote instances). Run the following on each node:
Refer to Identify All Connected Components for help.# Stop the services
<actions-pro-home>/bin/stop.sh all
# Check if the services have indeed stopped
<actions-pro-home>/bin/status.sh all - Copy the Actions Pro upgrade ZIP file to your Actions Pro installation directory.
- Run the following command from the Actions Pro installation directory:
<actions-pro-home>/bin/update.sh -u <rsconsole admin name> -p <rsconsole admin password> -f <upgrade zip file>
The upgrade script accepts the following options:
Option | Description |
-u <username> | Where <username> is the username for logging into the RSConsole. |
-p <password> | Use the default password if it hasn't been changed intentionally in a previous upgrade. note Ensure the username/password is correct. Otherwise several data migration steps may fail and the user will need to reapply the upgrade. |
-f upgrade-x-x-x-x.zip | The name of the upgrade ZIP file. |
-dns <hostname> | DNS host name to set into RSView properties for system URL (if not already set). |
-port <port> | Host port to set into RSView properties for system URL (if not already set). |
-lic | Enter license files (optional). |
Continue | An upgrade option that should only be used prior to consulting with Resolve Support. |
Upgrading Clustered Deployments
Items to consider before you start the clustered upgrade:
- During the upgrade, the primary server will update the Actions Pro database, run data migration, and import the latest base Actions Pro imports. Depending on the server speed, this process might take 30+ minutes. You can monitor the process from the primary server’s
rsview.log
,rsmgmt.log
andupdate.log
. - All the secondary Actions Pro servers within the cluster will wait until the primary has finished the upgrade tasks before upgrading themselves.
- Actions Pro does not support an upgrade on one server while other servers run an older Actions Pro version.
To upgrade your clustered Actions Pro deployment, take the following steps simultaneously on all Actions Pro machines in the cluster:
- Ensure that Actions Pro is down (including all standalone RSRemote instances). Run the following on each node:
Refer to Identify All Connected Components for help.# Stop the services
<actions-pro-home>/bin/stop.sh all
# Check if the services have indeed stopped
<actions-pro-home>/bin/status.sh all - Copy the Actions Pro upgrade ZIP file to your Actions Pro installation directory.
- Run the following command from the Actions Pro installation directory:At any points of the upgrade process, if a task times out, it may display an option to continue. For example:
```bash
<actions-pro-home>/bin/update.sh -u <rsconsole admin name> -p <rsconsole admin password> -f <upgrade zip file>
```
WARNING!!! RSSearch Status is unavailable or 'red'.
If you want to continue with the Update, manually Monitor the Elasticsearch Cluster Status and Hit Y when the Status is at least Yellow.
To Cancel the Update hit N. (Y/N):
At this point, type N to cancel the current upgrade or provide no answer while you research and resolve the issue in a separate session. After you resolve the issue, type Y to continue the upgrade process.
Reapplying an Upgrade
This Actions Pro version performs data migration and reindexing of Actions Pro data during the upgrade. If the upgrade fails, take the following steps:
Research and determine the issue that prevented the successful upgrade.
After correcting all errors, run the upgrade again with the
--continue
option to make sure all upgrade tasks are completed.bin/update.sh –u <rsconsole user> -p <rsconsole password> -f <update file> --continue
If the upgrade still fails, restore previous Actions Pro version from the backup and reapply the upgrade.
Without the --continue
option, the upgrade might fail when it encounters updated files it has already applied. This is an example of a typical message:
WARNING!!! Update File <Update File Name> Has Not Been Moved/Backed Up, Cancelling Update
Post-Upgrade Steps
After the Actions Pro upgrade process is complete, there are several required and optional steps to take to finish the installation.
Required Actions
MariaDB Driver URL Scheme Update
The latest version of the MariaDB driver that comes with Actions Pro removes the support for the jdbc:mysql
scheme in the JDBC URL, replacing it with jdbc:mariadb
instead. Using the old scheme results in an error indicating that it cannot find the driver, due to the mariadb-java-client
JAR file removing the MySQLDataSource
class.
You need to update the DB URL scheme if you are using MariaDB as the Actions Pro DB and you are upgrading from the following versions:
- Any version preceding Actions Pro 7.6.0
You don't need to take any action if you are upgrading from Actions Pro 7.6.0 or later.
The upgrade updates most DB URL schemes in the product automatically, including the DB_URL
property in blueprint.properties
if it was set to jdbc:mysql
, but does not update URLs in the following resource categories:
- Database Gateway settings
- ActionTasks and other content
See the following sections to learn how to update these resources.
Updating Database Gateway Settings
You can use an RSConsole script to automatically update any jdbc:mysql
schemes in your Database Gateway settings.
- Log in to any of the core machines that have the RSConsole component installed.
- Start RSConsole and then log in to it:
<actions-pro-home>/rsconsole/bin/run.sh
- Change to the management directory:
CD mgmt
- Run the scheme auto-update command:
UpdateDBConnPool.groovy
Updating ActionTasks and Other Content
The potential types of content where you could have used the outdated Database Connection Pool URL in Action Pro are as follows:
- Wiki Documents
- ActionTasks
- System Scripts
- Task Properties
- Legacy Gateways
- SDK2 Push Gateways
- SDK2 Pull Gateways
- SDK2 MSG Gateways
You will have to update the Database Connection Pool URL in these locations manually.
To make the process easier, Resolve provides the JDBC MySql Check automation on Resolve Exchange that can find and list all instances of the outdated Database Connection Pool URL in your code.
For example, you might have the following code in an ActionTask content section:
try (Connection conn = DriverManager.getConnection( "jdbc:mysql://127.0.0.1:3306/test", "root", "password")) {
...
To keep using this code after the upgrade, you would need to update it as follows:
try (Connection conn = DriverManager.getConnection( "jdbc:mariadb://127.0.0.1:3306/test", "root", "password")) {
...
RSView Reindexing
After the initial upgrade is complete, a full reindexing will occur on the primary RSView system. Let the RSView reindexing finish:
- Do not stop the primary RSView until this indexing is complete.
- Look for messages indicating reindexing progress in
rsview.log
.
Browser Cache
After you have upgraded Actions Pro to the latest version, clear your browser cache before accessing the user interface.
Optional Actions
- Linux services:
- To set up the Actions Pro components to start automatically when the server is rebooted, run:
bin/setup_service.sh
- For more information, see the Post-Installation Tasks in:
- To set up the Actions Pro components to start automatically when the server is rebooted, run:
- Review the security suggestions in ::title.
- Log4j2 guidance
- Starting with Actions Pro 6.5, Actions Pro moved from Log4j to Log4j v2 for it's core logging framework. This change means that any existing SDK Gateway builds will not be supported anymore. Request the latest gateway builds from Resolve Support and install them using the following steps to ensure Gateways are up and running after upgrade.
The following steps can be used as a guide to upgrading gateway builds to make them compatible with Actions Pro 6.5 and later. Performed the steps for each installation of Actions Pro that has RSRemote and standalone installations of RSRemote.
- For an Actions Pro installation, stop RSRemote, RSView, and RSControl running on the server. For a standalone RSRemote installation, just stop RSRemote.
<actions-pro-home>/bin/stop.sh rsremote rsview rscontrol
- Copy the .jar files from
/opt/resolve/rsgateways/<gateway-name>/lib/
to/opt/resolve/gatewaylibs
, overwriting any existing files. - Open
/opt/resolve/rsgateways/<gateway-name>/config/blueprint.properties
for editing. This blueprint is provided for reference and is not used by the application. Compare it with thersremote/resolve
blueprint properties. Add any new properties fromrsgateways/<gateway-name>/config/blueprint.properties
torsremote/resolve
blueprint properties.\ - Save the blueprint changes to the main blueprint configuration file.
- Run the configuration script:
<actions-pro-home>/bin/config.sh
- Start the components:
<actions-pro-home>/bin/run.sh rsremote rsview rscontrol
Troubleshooting
This section gives instructions related to data migration and Actions Pro upgrade issues and how to resolve them.
General Upgrade Errors
The following are some of the error messages that may occur during the upgrade and how they can be resolved. Each of these error messages may be preceded by WARNING!!!
in the output.
Error Message | Resolution |
---|---|
File upgrade-7.x.0.0.zip does not appear to be an Update file. Actual file name may vary. | Ensure that the upgrade file is in the format: upgrade-x.x.x.x.zip .Remove /tmp/update.xml from the Action installation directory and then rerun the upgrade. |
Current User ID does not match the resolve.user property specified in the blueprint.properties | Check that you are logged in as the user specified in resolve.user in the blueprint.properties . |
Unable to replace INSTALLDIR in RSMgmt Config file, configuration may fail | Configuration might have failed. Check update.log for details. |
The RSMQ Instance does not appear to have started properly | Validate that RSMQ is up and running. |
Failed to run Index Configure | RSSearch index may not be configured, Runbook executions and reads might fail. Check rsview.log for details and restart the upgrade after resolving the root issue. |
Failed to Re-Index Action Task Data, Result Display May not Behave as Expected | Worksheet data may not display. Check rsview.log for details and restart the upgrade after resolving the root issue. |
Unable to Monitor RSSearch Task Data Re-Index Status | Worksheet data may not display. Check update.log for details and restart the upgrade after resolving the root issue. |
Unexpected Error During Update/Upgrade Process. See update.log for more details | Generic exception. Check update.log for details and restart upgrade after resolving the root issue. |
Execute Update Process Failed | Contact Resolve Support. |
Resolve Update Failed in x seconds | Contact Resolve Support. |
If rsremote stdout log displays the following exception: java.lang.NoSuchFieldError: log at com.resolve.gateway.splunk.ConfigReceiveSplunk.load(ConfigReceiveSplunk.java:214) at com.resolve.rsremote.Main.loadSDKDevelopedGateway(Main.java:1003) at com.resolve.rsremote.Main.loadSDKDevelopedGateways(Main.java:1065) | Check that only one .jar file is present for the gateway that throws the exception. The above is an example; other gateways may throw the same error. In the example, Splunk is throwing the exception, so make sure that only one Splunk gateway .jar file is present. A possible reason for the issue is because some of the jars might have been renamed, in which case the old .jar file is not removed automatically. Ensure that the old .jar file has been removed and only the new .jar file is present in the folder. |
WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.codehaus.groovy.reflection.CachedClass (file:/opt/resolve/rsmgmt/lib/groovy-all-2.4.15.jar) to method java.lang.Object.finalize() WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.reflection.CachedClass WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release | Use of a deprecated feature from one of the libraries we use. This warning can be safely ignored. |
SEVERE: Could not contact [localhost:[8005]]. Tomcat may not be running.Jul 07, 2020 2:25:51 AM org.apache.catalina.startup.Catalina stopServer SEVERE: Catalina.stop:java.net.ConnectException: Connection refused at java.base/sun.nio.ch.Net.connect0(Native Method) at java.base/sun.nio.ch.Net.connect(Net.java:493) at java.base/sun.nio.ch.Net.connect(Net.java:482) at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:588) at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:339) at java.base/java.net.Socket.connect(Socket.java:603) at java.base/java.net.Socket.connect(Socket.java:552) at java.base/java.net.Socket.<init>(Socket.java:475) at java.base/java.net.Socket.<init>(Socket.java:249) at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:491) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:567) at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:408) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:497) | Appears when RSView was stopped manually before the upgrade was started. The error appears because the upgrade script failed to stop RSView which was already stopped. |
epmd: Cannot connect to local epmd | Appears when RabbitMQ was stopped manually before the upgrade was started.The error appears because the upgrade script failed to stop RabbitMQ which was already stopped. |
[WARN ][o.e.c.l.LogConfigurator ] [<hostname>] Some logging configurations have %marker but don't have %codename. We will automatically add %node name to the pattern to ease the migration for users who customize log4j2.properties but will stop this behaviour in 7.0. You should manually replace %node_name with [%node_name]%marker in these locations: /opt/resolve/elasticsearch. New/config/log4j2.properties Started ElasticSearch pid: 3445 | Use of a deprecated feature from one of the libraries we use. This warning can be safely ignored. |
./run.sh: line 30: [: -gt: unary operator expected | Used for compatibility purposes on some systems. These errors can be safely ignored. |
log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. | Use of a deprecated feature from one of the libraries we use. This warning can be safely ignored. |
Cannot Find sree properties file: /opt/resolve/tomcat/webapps/sree/WEB-INF/classes/sree.properties Cannot Find newsree properties file: /opt/resolve/tomcat/webapps/sree/WEB-INF/classes/newsree.properties Cannot Find dashboard file: /opt/resolve/bin/dashboard.properties | Used for compatibility purposes with older versions of Actions Pro. This error can be safely ignored. |
Response for creation of daily index worksheet_20200703{"error":{"root_cause": [{"type":"resource_already_exists_exception", "reason":"index [worksheet_20200703/q0MCSc-2TAadq2p4FZWt7w] already exists", "index_uuid":"q0MCSc-2TAadq2p4FZWt7w","index":"worksheet_20200703"}], "type":"resource_already_exists_exception", "reason":"index [worksheet_20200703/q0MCSc-2TAadq2p4FZWt7w] already exists", "index_uuid":"q0MCSc-2TAadq2p4FZWt7w","index":"worksheet_20200703"},"status":400} Response for alias worksheet_20200703: {"acknowledged":true} Failed : HTTP error code : 400 | The ElasticSearch migration failed to create an index as it already existed. Errors referring to already-existing resources during the creation of daily indexes can be safely ignored. |
Data Migration Errors
Refer to the table below to repair operational problems during upgrade.
Error Message | Resolution |
---|---|
Unexpected Exception Running Update Command - Can't DROP 'u_name'; check that column/key exists java.sql.SQLSyntaxErrorException: Can't DROP 'u_name'; check that column/key exists at org.mariadb.jdbc.internal.SQLExceptionMapper.get(SQLExceptionMapper.java:138) at org.mariadb.jdbc.internal.SQLExceptionMapper.throwException(SQLExceptionMapper.java:106) | This error is acceptable. The upgrade will continue successfully. |
2017-10-05 00:36:31,503 DEBUG [main] (Main.java:1011) - onetime file exists: true 2017-10-05 00:36:31,505 ERROR [main] (Main.java:1272) - Unexpected Exception Running Update Command - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(3)' at line 1_Query is:_sql : 'ALTER TABLE archive_action_result MODIFY COLUMN sys_updated_on DATETIME(3)' java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(3)' at line 1 Query is: sql : 'ALTER TABLE archive_action_result MODIFY COLUMN sys_updated_on DATETIME(3)'at org.mariadb.jdbc.internal.SQLExceptionMapper.get(SQLExceptionMapper.java:138) | The upgrade will continue successfully. |
2017-10-12 15:32:07,813 ERROR [main] (Compress.java:365) - Failed to zip directory: java.io.FileNotFoundException: /opt/Resolve6503/tomcat/webapps/Resolve/mcp (No such file or directory) 2017-10-12 15:32:07,813 DEBUG [main] (?:?) - Removing /opt/Resolve6503/tomcat/webapps/Resolve/mcp | This error is acceptable. A back up was attempted, however the mcp javascript doesn't exist in the specified version (6.5.0.3 in the example ( Resolve6503 ). |
Waiting Indefinitely for New ES Cluster to have 'green' status…… | If this message persists, then the new ES (7.x series) has not properly started. The log files under elasticsearch.new/logs/ contain more information. |