Skip to content

Methods to determine deprecated features in use report incomplete/inaccurate information #12619

@Zerpet

Description

@Zerpet

Describe the bug

The command rabbitmq-diagnostics check_if_any_deprecated_features_are_used and the API endpoint /api/deprecated-features/used do not report accurate information on actual state of the system. The command/endpoint only seem to check for classic queue mirroring, and it doesn't report the state of other deprecated features in use.

Reproduction steps

  1. Start RabbitMQ 4.0.3 (latest at this time): docker run --name bunny -p 15672:15672 --rm rabbitmq:4.0-management
  2. List deprecated features: docker exec bunny rabbitmq-diagnostics --formatter=pretty_table list_deprecated_features
    Observe transient_nonexcl_queues as deprecated feature, permitted by default
  3. Create a transient non-exclusive classic queue:
    curl -v -u guest:guest -H "Content-Type: application/json" -d '{"auto_delete":false,"durable":false}' -X PUT http://localhost:15672/api/queues/%2F/myqueue
    
  4. Query the state of deprecated features used: curl -v -u guest:guest http://localhost:15672/api/deprecated-features/used
  5. Observe that none [] are reported
  6. Observe that server logs print Deprecated features: transient_nonexcl_queues: Feature transient_nonexcl_queues is deprecated.
  7. Run docker exec bunny rabbitmq-diagnostics --formatter=pretty_table check_if_any_deprecated_features_are_used
  8. Observe the reported output: Cluster reported no deprecated features in use

Expected behavior

The command rabbitmq-diagnostics --formatter=pretty_table check_if_any_deprecated_features_are_used reports that transient_nonexcl_queues deprecated feature is used.

The API endpoint /api/deprecated-features/used reports that transient_nonexcl_queues deprecated feature is used.

Additional context

Setting deprecated_features.permit.transient_nonexcl_queues = false causes the queue declare operation to fail right away.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions