Resolving RabbitMQ Cluster Incompatibility

Reset the RabbitMQ cluster if it fails to initialize properly due to an incompatible feature flag configuration. You might encounter this issue while updating SystemLink Enterprise.

Due to the required feature flags functionality introduced in RabbitMQ 3.11.0, you cannot skip minor versions when updating RabbitMQ. Updating to a version of SystemLink Enterprise that causes you to skip a minor version of RabbitMQ causes incompatibilities. To resolve the incompatibilities, complete the following steps to perform a hard reset.
  1. Upgrade or downgrade SystemLink Enterprise to the version you want.
  2. To delete the RabbitMQ cluster stateful set, open the command prompt and run the following command.

    kubectl -n namespace delete statefulset release-rabbitmq

    Where,
    • namespace is the namespace created for the application.
    • release is the name Helm assigns to the installed collection of software.
  3. To determine the set of persistent volume claims associated with the RabbitMQ cluster, run the following command.

    kubectl -n namespace get pvc --selector=app.kubernetes.io/name=rabbitmq

    This command returns a list of persistent volume claims including data-release-rabbitmq-0, data-release-rabbitmq-1, and data-release-rabbitmq-2. You might have additional volumes depending on the configuration of the application.
  4. Run the following command for each of the volumes returned in the previous step to delete them.

    kubectl -n namespace delete pvc data-release-rabbitmq-n

    Where,
    • n is the volume to delete.
  5. To verify that you deleted all volume claims, run the following command.

    kubectl -n namespace get pvc --selector=app.kubernetes.io/name=rabbitmq

  6. To determine the current version of the SystemLink Enterprise Helm release, run the following command.

    helm -n namespace status release

  7. To roll back the Helm release to the deployed state of the current version, run the following command.

    helm -n namespace rollback release revision --recreate-pods

    Where,
    • revision is the REVISION value the previous command returns.
    The RabbitMQ cluster will redeploy as a fresh install rather than an upgrade and bypass any restrictions on upgrade version. All pods in the application will be recreated and will use the new RabbitMQ cluster. Time to redeploy varies based on the size of your cluster.