MongooseIM 1.6.2 is out. Time to upgrade!
by Michal Piotrowski and Rafal Studnicki
MongooseIM 1.6.2 is out. Time to upgrade!
by Michał Piotrowski and Rafał Studnicki
We are pleased to announce the release of MongooseIM 1.6.2. This is last release in the 1.6.x family. Please read below to find out more about our demo, load tests and all the significant changes. We encourage everyone to upgrade.
MongooseIM 1.6.2 is about “stability”: finished Riak for all major modules, docker-based demo, load test, improved tests, new enhancements.
Riak
We finished our work on implementing missing Riak backends. Now all major functionalities like:
- authentication
- last_activity
- message archive for one-to-one and MUC conversation (MUC archive was added in this release)
- private
- privacy (added in this release)
- offline messages (added in this release)
- rosters
- vcard
Can be configured to store data in Riak database.
Docker-based demo
The use case
In this demo we wanted to show, that cluster of MongooseIM nodes can handle node failures gracefully and users will be able to reconnect to remaining nodes in the cluster.
Set up
During Lambda Days we showed a MongooseIM demo built with docker containers. The set up was very simple:
- DNS server
- 5 nodes cluster of MongooseIM 1.6.2
- HAProxy in front of all the nodes
- MySQL as the database backend
- Graphite/Grafana to collect all metrics
From the MongooseIM/XMPP standpoint, this setup can be depicted by the following diagram:
The code is on GitHub studzien/mongooseim-docker. Please follow the very quick start guide
if you want to setup a similar infrastructure.
Scenario
We prepared Amoc’s scenario where every single session is trying to reconnect after node failure. The scenario can be found here.
Metrics
The dashboard for interactive starting or stopping nodes and adding or removing XMPP users during an example run looked as follows:
You can check out the snapshot of this run to see how MongooseIM nodes reacted for nodes going up or down here.
Load test
To proof that we didn’t break anything in the 1.6.x road, we ran load tests comparing 1.6.2 with 1.6.0. These load tests proved that we in fact improved memory footprint since 1.6.0. All other parameters stayed the same.
Exported Grafana dashboards can be found here:
Tests
As usual we are increasing test coverage and improving tests quality. The most important changes are:
- extended privacy tests
- improved ejabberd_c2s tests
- added tests for MAM preference
Enhancements and fixes
We finally added support for new MAM XEP-0313 versions. Now MongooseIM understands MAM version from 0.2 to 0.5! Also we implemented Dialback Key Generation and Validation (XEP-0185) which is important to have trusted S2S connections.
Since 1.6.2, MongooseIM no longer supports Erlang/OTP versions older than R16B03-1. Thanks to that we simplified our codebase by removing some workarounds for older Erlang versions.
Join us!
As we finished our work on 1.6.x release we are now starting work on 1.7.x, please suggest features on our tracker.
Special thanks to our contributors @gbour, @bartekgorny and @jfjalburquerque. We encourage everybody to code and do a Pull Request!
Read the MongooseIM Product page on Erlang Solutions website. Or read on GitHub the detailed changelog, and check out the MongooseIM repository.
Get the news! Subscribe to the announcements mailing-list.
Go back to the blog