EclecticIQ 2.5.0 hotfix 1
ID |
EclecticIQ 2.5.0 hotfix 1 |
Severity |
2 - MEDIUM |
Affected versions |
2.5.0 |
Release date |
22 Oct 2019 |
Hotfix |
This hotfix addresses a specific edge case that may occur during data migration as part of a platform upgrade process.
If the edge case the hotfix addresses does not occur in your platform instance, you are unaffected: do not apply the hotfix.
Scenario
An edge case may occur in the following scenario:
A platform upgrade process is taking place.
The platform instance being upgraded holds more than 25 million entities.
Elasticsearch data migration is a step in the upgrade process.
The Elasticsearch data migration fails, and it is not possible to resume it successfully.
Issue
Before beginning a platform upgrade to release 2.5.0, you may want to consult with our support team to receive the latest information, as well as to receive assistance before and during the upgrade, if need be.
The EclecticIQ Platform product team is reaching out to inform you that although EclecticIQ Platform 2.5.0 is a minor release, the changes it introduces under the hood affect the installation and upgrade mechanisms.
During the Elasticsearch data migration of a platform instance holding more than 25 million entities, an edge case could occur that causes the data migration to fail. If you observed this edge case and if you are affected, download and apply the EclecticIQ 2.5.0 hotfix 1 to address the issue.
Cause
The root cause of the issue is an edge case where the migration of a very large data corpus (> 25 million entities) may slow down data processing. As a result of the lag, a variable may hang in a transient state. This may produce a division by zero that impacts the Elasticsearch data migration: the operation aborts, and it is not possible to resume it.
More specifically:
The issue may occur during a platform upgrade process.
For more information, see the relevant documentation for CentOS, RHEL, or Ubuntu.)The issue may occur during the Elasticsearch database migration.
For more information, see the relevant documentation for CentOS, RHEL, or Ubuntu.)
The command that may produce the issue is:
eiq_platform search upgrade
The error message in the Python traceback that notifies about the issue is:
ZeroDivisionError:
float
division by zero
Mitigation
If the edge case the hotfix addresses does not occur in your platform instance, you are unaffected: do not apply the hotfix.
If your platform instance is affected, apply the EclecticIQ 2.5.0 hotfix 1 .patch file to solve it, so that you can resume data migration, and you can proceed with the upgrade.
Recommended course of action:
Download the hotfix
To download the hotfix, click eclecticiq-250-hotfix-1.zip.
Save the archive to a temporary directory; for example, /tmp.
Decompress the archive to extract the .patch file.
Apply the hotfix
To successfully execute commands in the command line or in the terminal, you may require root-level access rights.
Obtain root-level access by running sudo -i:
# Root-access login shell
sudo
-i
To access resources as a different user than the currently active one, append -u:# Grant the currently logged in user root-level access
sudo
-i
# Grant root-level access to a different user
sudo
-i -u ${user_name}
# Run a command as a different user, with root-level access
sudo
-i -u ${user_name} ${
command
} ${options}
To apply the EclecticIQ 2.5.0 hotfix 1 .patch file to your platform instance:
Make sure the Linux /bin/patch utility is installed on the platform instance you are applying the hotfix .patch file to.
If it is not available, install it by running the following command in a terminal session:# Install the /bin/patch utility
yum
install
patch.x86_64
Create a backup copy of the unpatched search_index.py file:
# The following command copies 'search_index.py' to the 'tmp' dir
cp
/opt/eclecticiq/platform/api/lib/python3
.6
/site-packages/eiq/platform/search_index
.py
/tmp
At this point, no platform services are running.
To inspect if any platform services might be running:systemctl | grep
"eclecticiq-platform*"
To stop systemd-managed platform services through the command line:
systemctl stop eclecticiq-platform-backend-services
Apply the eclecticiq-250-hotfix-1.patch hotfix:
patch
/opt/eclecticiq/platform/api/lib/python3
.6
/site-packages/eiq/platform/search_index
.py <
/tmp/eclecticiq-250-hotfix-1
.patch
Resume the upgrade
To resume the platform upgrade, run the installation script in a terminal session, and start from the step where the process failed.
Append -s or --step to the install script file name, followed by the installation step number you want to resume the operation from.
The default naming format of the installation script is eclecticiq-install-${major_version}.${minor_version}.x-${install_script_reference_number}.sh
Example: eclecticiq-install-2.5.x-26.sh# Append the
'-s'
or
'--step'
option, followed by a step number
./eclecticiq-install-${major_version}.${minor_version}.x-${install_script_reference_number}.sh --step ${step_number}
# Example: the installation script resumes execution from step number
53
./eclecticiq-install-
2.5
.x-
26
.sh --step
53
If this does not work as expected, add the --force-upgrade option to enforce executing the upgrade procedure:
# Example: the installation script resumes execution from step number 53
# and it enforces executing the upgrade
.
/eclecticiq-install-2
.5.x-26.sh --force-upgrade --step 53
Contact
For assistance, open a support request ticket, or contact our support team.