Erlang

MongooseIM 1.6.2 is out. Time to upgrade!

2016-03-22 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.

MongooseIM

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.

RiakKV

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:

MongooseIM with Docker

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:

MongooseIM with Docker metrics

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.

Erlang Solutions

Get the news! Subscribe to the announcements mailing-list.

Go back to the blog

×

Request more information:

* Denotes required
×

Thank you for your message

We sent you a confirmation email to let you know we received it. One of our colleagues will get in touch shortly.
Have a nice day!