Releases: bifromqio/bifromq
BifroMQ-v3.2.1
This patch release includes the following changes:
Improvements:
- The
ingressBytes
metric, which measures the inbound traffic from MQTT clients, now includes the size of the connect message. - Enhanced both the performance and accuracy of the approach for measuring Netty direct memory usage.
- Reduced memory consumption by adjusting the per-channel
maxWriteSize
according to outbound bandwidth. - Improved stability and recoverability when overloaded.
- Enhanced the stability of
base-kv
after failover.
Bug Fixes:
- Resolved inaccuracies in sizing incoming MQTT messages.
- Fixed inaccuracies in counting persistent sessions in some failover cases.
- Implemented a workaround for the issue where metrics collection could be blocked in extreme high direct buffer usage situations.
- Fixed issue #95 by enforcing type-checking of
BifroMQSysProp
at build time.
Full Changelog: GitHub Compare v3.2.0...v3.2.1
BifroMQ-v3.2.0
This minor release includes the following changes:
New Features:
- Introduced an opt-in Maven Archetype to quickly bootstrap plugin development
- Added unified session lifetime event types(
MQTT_SESSION_START
/MQTT_SESSION_STOP
) for both transient and persistent sessions
Improvements:
- WS/WSS ports now reject non-WS traffic during the handshake phase and set up the pipeline after the handshake is complete
- Exceptions thrown during plugin initialization will no longer prevent BifroMQ from starting
- Cleaned up plugin definition modules and consolidated plugin loading information into a dedicated log file (plugin.log).
- Improved startup script to read the JVM_DEBUG environment variable
Bug Fixes:
- No longer maintain a separate view for local session lookup, which was the root cause of issue #91
- Fixed the overflow issue (#90) in calculating the running average, which caused message dist failures in the long run
- Fixed the environment variable reading issue in the Windows startup script, which caused issue #88
Full Changelog: v3.1.1...v3.2.0
BifroMQ-v3.1.1
This patch release includes the following changes:
Bug Fixes
- Fixed a bug in the subscription data encoding format that could cause the topic matching process to get stuck in rare cases. Thanks, @844028312, for reporting the issue (#87) and sharing the test data.
- Fixed an issue where a node may fail to start after a force kill during a splitting operation (a97adfc).
- Fixed an issue where the persistent session remains active even when the client is disconnected (d17eb3a).
- Set the reason field of the
DistError
event. - Corrected two scheduler names used in the inbox service to ensure the related metrics are distinguished.
Improvements
- Ensured the thread context classloader is set to
PluginClassLoader
during plugin instance creation to reduce potentialClassNotFoundException
errors from the plugin's constructor. - Set up pipeline handlers only after the connection is accepted by the rate limiter, improving memory usage when the connection rate exceeds the allowed rate.
- Added a
withoutDisconnect
field to theByClient
event to distinguish between two client-initiated disconnection situations. - Reported
ChannelError
event with detailed reasons when a connection is rejected due to exceeding the configured rate. - Ensured pipeline resources are closed properly during graceful shutdown (bc329a7).
- Improved the time spent loading tenant states during startup (5566196).
- Stopped range splitting when the local store hits the maximum range limit (9c62c5e).
Full Changelog: v3.1.0...v3.1.1
BifroMQ-v3.1.0
This minor release includes the following changes:
New Feature
- Enhanced the HTTP Kill API to allow terminating sessions for a specific tenant user or all sessions associated with a tenant. For more details, check the API documentation.
Improvements
Clustering
- Optimized recovery speed by not caching unresolved
InetAddress
when the hostname cannot be resolved temporarily. - Improved clustering stability by retrying domain resolution with a timeout when joining the
clusterConfig.clusterDomainName
. The timeout is controlled by the system propertycluster_domain_resolve_timeout_seconds
.
Docker
- Reduced the final image size by using a smaller base image and optimizing layer instructions.
- Included necessary tools for diagnosing various networking issues.
Others
- Improved backpressure protection by considering heap usage and slowdown timeout.
- Introduced a dedicated event type, 'OutOfTenantResource,' to signal when a tenant hits the resource limit.
- Adjusted the upper bound for
MaxUserPayloadBytes
to 256MB to comply with the MQTT specification. - Support building with OpenJDK 22 (#86 )
Full Changelog: v3.0.2...v3.1.0
BifroMQ-v3.0.2
This patch release includes the following changes:
Improvements
- Introduced a webhook-based AuthProvider plugin for demos. See documentation.
- Added more tests to cover publication rate limits and maximum receive behavior.
Bugfixes
- Fixed an issue where messages sent to an MQTT 5.0 subscriber with the
expirySeconds
parameter specified would expire before being delivered to the subscriber. See issue #79. - Resolved a bug preventing the disconnection of the last connection using the HTTP kill API.
Full Changelog: v3.0.1...v3.0.2
BifroMQ-v2.1.3
This patch release includes the following changes:
Bugfixes
- Fixed an issue in the API Server that could lead to a StackOverflow error during prolonged operations when frequently switching tenants. #75
- Fix a bug which causes will message cannot be sent when client is closed forcibly. #64
Full Changelog: v2.1.2...v2.1.3
BifroMQ-v3.0.1
This patch release includes the following changes:
Improvements
- Improved DevOnlyAuthProvider to provide more straightforward behavior during testing. #72, #73
- Introduced a webhook-based SettingProvider plugin for demos. See documentation.
Bugfixes
- Corrected caching behavior for Tenant Settings. #74
- Fixed an issue in the API Server that could lead to a StackOverflow error during prolonged operations when frequently switching tenants. #75
- Resolved a problem where kvrange could remain stuck in the
configchanging
state if a configuration change was aborted due to slow learners. - Fixed an error that could result in kvrange being incorrectly purged.
Full Changelog: v3.0.0...v3.0.1
BifroMQ-v3.0.0
This is the official release of BifroMQ v3.0.0. More information is available on the official website.
Followings are changes since last beta:
Improvements
- Introduced separate configurations for the RPCs used by the Internal Service and the BaseKV Store.
- Added more unit tests (UTs) to cover MQTT protocol handling.
- Optimized the usage of internal executors to reduce latency.
Bug Fixes
- Fixed an issue where the authentication method for MQTT5 was not being invoked (#65).
- Addressed a problem that could exceptionally cause connection termination when the publication rate exceeds the limit.
Full Changelog: v3.0.0-beta.1...v3.0.0
v3.0.0-beta.1
This is the second beta for the v3.0.0 release, including the following changes:
Bug Fixes
- In some cases, migrated KVRange failed to be purged in the original store. See fe99b3b
- Followers prematurely transitioned to Candidates before the Snapshot Installation was finished, causing inconsistencies between KV data and the WAL. See 07b6b4a.
- KVRange was incorrectly dropped when there was a concurrent configuration change. See 07b6b4a.
- Fixes for NPE & CME. See 6c1bac5.
Full Changelog: View the complete changelog from v3.0.0-beta to v3.0.0-beta.1
BifroMQ-v2.1.2
This minor release includes the following changes:
Bugfixes
- Fix that there may be disorder when pushing messages to subscribers.(See #61)
Full Changelog: v2.1.1...v2.1.2