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

eclecticiq-250-hotfix-1.zip

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:

  1. Download the hotfix.

  2. Apply the hotfix.

  3. Resume the upgrade.

Download the hotfix

  1. To download the hotfix, click eclecticiq-250-hotfix-1.zip.

  2. Save the archive to a temporary directory; for example, /tmp.

  3. 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:

  1. 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
  2. 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
  3. 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


  4. 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.