Skip to content

Releases: bifromqio/bifromq

BifroMQ-v3.1.1

03 Jun 07:08
Compare
Choose a tag to compare

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 potential ClassNotFoundException 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 the ByClient 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

23 May 15:46
Compare
Choose a tag to compare

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 property cluster_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

25 Apr 09:29
Compare
Choose a tag to compare

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

17 Apr 03:13
b686751
Compare
Choose a tag to compare

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

16 Apr 07:01
Compare
Choose a tag to compare

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

22 Mar 08:43
Compare
Choose a tag to compare

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

14 Mar 06:31
Compare
Choose a tag to compare
v3.0.0-beta.1 Pre-release
Pre-release

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

08 Mar 10:11
Compare
Choose a tag to compare

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

BifroMQ-v3.0.0-beta

29 Feb 09:48
Compare
Choose a tag to compare
BifroMQ-v3.0.0-beta Pre-release
Pre-release

This is the beta release of the next major version of BifroMQ. This release includes full MQTT 5 capabilities. It is important to note that this version is not backward compatible with the persistent data and plugin implementations of previous major releases, meaning it does not support in-place rolling upgrades from earlier versions.

More information will be available in official website: https://bifromq.io

Key Features:

  • Full Support for MQTT 5.0: SharedSubscription, TopicAlias, SubscriptionIdentifier, FlowControl, EnhancedAuthentication, SessionExpiry, WillDelay, and more. Everything you need is here!

  • Enhanced Observability of Tenant Loads: Leveraging the definitions in bifromq-metrics, this version offers improved observability for tenant loads, ensuring better management and monitoring capabilities.

  • Tenant-Level Real-Time Resource Limitation: Introducing a new plugin type, bifromq-plugin-resource-throttler, which allows for tenant-level real-time resource limitation, providing more granular control over resource allocation and usage.

  • Backpressure Protection: This feature ensures the stability and reliability of your system against overload.

We encourage you to download, test, and provide feedback on this beta version as we work towards making BifroMQ even more robust and feature-rich. Your input is invaluable in helping us refine and perfect the project.

Full Changelog: v2.1.1...v3.0.0-beta

BifroMQ-v2.1.1

25 Jan 08:28
Compare
Choose a tag to compare

This minor release includes the following changes:

Improvements

  • Support loading all extensions from multiple jars in one plugin's classpath.

Bugfixes

  • Fix that shutting down a BifroMQ node may result in the possibility of MQTT connections on other nodes being kicked off.(See #54)

Full Changelog: v2.1.0...v2.1.1