Skip to content

rabbitmq-server-4.3.0 causes INTERNAL_ERROR - Feature 'transient_nonexcl_queues' is deprecated #194

@thomaszwagerman

Description

@thomaszwagerman

This deprecated feature INTERNAL_ERROR - Feature 'transient_nonexcl_queues' is deprecated, caused celery to fall over immediately after any deployment. It appears rabbitmq automatically updated from 4.2.5 to 4.3.0 on the VMs, introducing this breaking change.

The result was that all servers stopped ingesting meshes on 23/04/2026, as celery immediately fell over. We don't currently pin the rabbitmq version on VMs (or celery in the server). See the rabbitmq 4.3.0 release notes.

Initially I opened #193 in the hope of a quick fix, this did not solve the issue. Further changes were required on the ansible to successfully deploy with a running celery.

In ansible, essentially we are pushing this issue into the future by permitting the deprecated feature:

# The newer RabbitMQ (erts-15.2.7.8 on Rocky Linux 9) disables transient
# non-exclusive queues by default, which causes Celery workers to crash on
# startup with INTERNAL_ERROR (541). Re-enable the deprecated feature so
# existing Celery clients continue to work.
- name: Permit deprecated transient_nonexcl_queues feature in rabbitmq.conf
  ansible.builtin.lineinfile:
    path: /etc/rabbitmq/rabbitmq.conf
    line: "deprecated_features.permit.transient_nonexcl_queues = true"
    regexp: '^deprecated_features\.permit\.transient_nonexcl_queues\s*='
    create: yes
    owner: rabbitmq
    group: rabbitmq
    mode: '0644'
  notify:
    - restart rabbitmq-server
    - restart celery_polarroute
    - restart celerybeat_polarroute

I've verified that this deployment method restart celery and the mesh ingestion process on bsl-polarroute-dev-s2 and then bsl-polarroute-stage-s1.

I think this leads to two tasks:

  • Manage the rabbitmq dependency to prevent automatic updates and breaking changes to silently halt our service.
  • Find a fix in how polarroute-server uses celery tasks queues, to allow us to deploy without permitting a deprecated feature.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions