From bddc54613fb121ac491a6c30ded3d28cecc97517 Mon Sep 17 00:00:00 2001 From: David Ansari Date: Fri, 20 Sep 2024 15:26:31 +0200 Subject: [PATCH] Decrease default MQTT Maximum Packet Size Given that the default max_message_size got decreased from 128 MiB to 16 MiB in RabbitMQ 4.0 in https://github.com/rabbitmq/rabbitmq-server/pull/11455, it makes sense to also decrease the default MQTT Maximum Packet Size from 256 MiB to 16 MiB. Since this change was missed in RabbitMQ 4.0, it is scheduled for RabbitMQ 4.1. --- deps/rabbitmq_mqtt/BUILD.bazel | 3 ++- deps/rabbitmq_mqtt/Makefile | 3 ++- deps/rabbitmq_mqtt/src/rabbit_mqtt.erl | 2 ++ release-notes/4.1.0.md | 5 +++++ 4 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 release-notes/4.1.0.md diff --git a/deps/rabbitmq_mqtt/BUILD.bazel b/deps/rabbitmq_mqtt/BUILD.bazel index f18bace61baf..aeaf1d9c725a 100644 --- a/deps/rabbitmq_mqtt/BUILD.bazel +++ b/deps/rabbitmq_mqtt/BUILD.bazel @@ -49,7 +49,8 @@ APP_ENV = """[ {mailbox_soft_limit, 200}, {max_packet_size_unauthenticated, 65536}, %% 256 MB is upper limit defined by MQTT spec - {max_packet_size_authenticated, 268435455}, + %% We set 16 MB as defined in deps/rabbit/Makefile max_message_size + {max_packet_size_authenticated, 16777216}, {topic_alias_maximum, 16} ] """ diff --git a/deps/rabbitmq_mqtt/Makefile b/deps/rabbitmq_mqtt/Makefile index 64bfb24e5116..824c472487c9 100644 --- a/deps/rabbitmq_mqtt/Makefile +++ b/deps/rabbitmq_mqtt/Makefile @@ -27,7 +27,8 @@ define PROJECT_ENV {mailbox_soft_limit, 200}, {max_packet_size_unauthenticated, 65536}, %% 256 MB is upper limit defined by MQTT spec - {max_packet_size_authenticated, 268435455}, + %% We set 16 MB as defined in deps/rabbit/Makefile max_message_size + {max_packet_size_authenticated, 16777216}, {topic_alias_maximum, 16} ] endef diff --git a/deps/rabbitmq_mqtt/src/rabbit_mqtt.erl b/deps/rabbitmq_mqtt/src/rabbit_mqtt.erl index c5ea59abedea..4cf28db804d5 100644 --- a/deps/rabbitmq_mqtt/src/rabbit_mqtt.erl +++ b/deps/rabbitmq_mqtt/src/rabbit_mqtt.erl @@ -112,6 +112,8 @@ persist_static_configuration() -> {ok, MaxSizeAuth} = application:get_env(?APP_NAME, max_packet_size_authenticated), assert_valid_max_packet_size(MaxSizeAuth), + {ok, MaxMsgSize} = application:get_env(rabbit, max_message_size), + ?assert(MaxSizeAuth =< MaxMsgSize), ok = persistent_term:put(?PERSISTENT_TERM_MAX_PACKET_SIZE_AUTHENTICATED, MaxSizeAuth). assert_valid_max_packet_size(Val) -> diff --git a/release-notes/4.1.0.md b/release-notes/4.1.0.md new file mode 100644 index 000000000000..432b4fd641f9 --- /dev/null +++ b/release-notes/4.1.0.md @@ -0,0 +1,5 @@ +## RabbitMQ 4.1.0 + +## Potential incompatibilities + +* The default MQTT [Maximum Packet Size](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901086) changed from 256 MiB to 16 MiB. This default can be overriden by [configuring](https://www.rabbitmq.com/docs/configure#config-file) `mqtt.max_packet_size_authenticated`. Note that this value must not be greater than `max_message_size` (which also defaults to 16 MiB).