mod_archive2 status

This post provides information on current status of mod_archive2 development: rewritten version of ejabberd module supporting history archiving standard XEP-136.

UPDATE 2013.12.14: because ejabberd 3.x branch was dropped, mod_archive2 was changed to support ejabberd 2.x, so all references to ejabberd 3.x in this blog post or its comments are no longer relevant. Note that you need to have exmpp library installed in order to compile mod_archive2. Also note that ejabberd 13.x branch is currently not supported, and I don’t have any immediate plans to support it. On the brighter side, the code was updated to support all latest features added to the standard, like stream-level control over auto recording settings, plus support for full message storage was added.

mod_archive2 is a new version of ejabberd history archiving module supporting XEP-136 standard. It is loosely based on mod_archive_odbc.

Main design goals of mod_archive2 are:

  • Support ejabberd 3.x exmpp-based series.
  • Provide unified support for both Mnesia-based storage and RDBMSes.
  • Support current version of XEP-136 with all enhancements added there after mod_archive_odbc release.
  • Improve standard conformity for already present features compared to what mod_archive_odbc had.
  • Fix several important bugs/shortcomings, such as collections expiration problems.
  • Proper automated module testing.

So far I consider all these goals met. Current test coverage is around 92% of all source lines.


  1. The module is not yet ready for production usage! (as well as ejabberd 3.x itself)
  2. No tests were performed other than automated ones: it’s currently unknown how well it behaves with real-world usage patterns, real-world messages and database sizes, etc.
  3. There’s currently no way to migrate databases from mod_archive_odbc to mod_archive2.

These shortcomings are going to be addressed as soon as ejabberd 3.x matures enough so that I consider using it for my own server, and hence face the need to migrate database/use it in real-world scenarios.

Current mod_archive2 sources are available at github. Note that the primary git repository is hosted on my private server, so github one is going to be used only to push releases/snapshots there.

Comments/suggestions/bug-reports are welcome!

Bug-reports in the form of failed test case + patch to fix it are preferred

Comment viewing options

ndl@home is currently in maintenance. During this maintenance it is not possible to change site content (like comments, pages and users).
Select your preferred way to display the comments and click "Save settings" to activate your changes.

Hi, i'm working on ejabberd.

Hi, i'm working on ejabberd. i wanna install exmpp and mod_archive2. But i have got this errors when installing exmpp:
user@htk:~/ejabberd_mod/exmpp-0.9.1$ make
make all-recursive
make[1]: Entering directory `/home/quocnguyen/ejabberd_mod/exmpp-0.9.1'
Making all in c_src
make[2]: Entering directory `/home/quocnguyen/ejabberd_mod/exmpp-0.9.1/c_src'
/bin/bash ../libtool --tag=CC --mode=compile gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I.. -I/usr/local/lib/erlang/erts-5.10.1/include -I/usr/local/lib/erlang/lib/erl_interface-3.7.11/include -g -O2 -Wall -Werror -MT exmpp_stringprep_la-exmpp_stringprep.lo -MD -MP -MF .deps/exmpp_stringprep_la-exmpp_stringprep.Tpo -c -o exmpp_stringprep_la-exmpp_stringprep.lo `test -f 'exmpp_stringprep.c' || echo './'`exmpp_stringprep.c
libtool: compile: gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I.. -I/usr/local/lib/erlang/erts-5.10.1/include -I/usr/local/lib/erlang/lib/erl_interface-3.7.11/include -g -O2 -Wall -Werror -MT exmpp_stringprep_la-exmpp_stringprep.lo -MD -MP -MF .deps/exmpp_stringprep_la-exmpp_stringprep.Tpo -c exmpp_stringprep.c -fPIC -DPIC -o .libs/exmpp_stringprep_la-exmpp_stringprep.o
exmpp_stringprep.c: In function 'driver_init':
exmpp_stringprep.c:399:23: error: assignment from incompatible pointer type [-Werror]
cc1: all warnings being treated as errors
make[2]: *** [exmpp_stringprep_la-exmpp_stringprep.lo] Error 1
make[2]: Leaving directory `/home/quocnguyen/ejabberd_mod/exmpp-0.9.1/c_src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/quocnguyen/ejabberd_mod/exmpp-0.9.1'
make: *** [all] Error 2

Please help me to fix it.Thanks you so much.

Quoc Nguyen

Too old exmpp version?

NDL's picture

exmpp 0.9.1 is too old, try using the recent one (0.9.9).

ejabberd 13.10 and mod_archive2


I plan to include mod_archive2 with ejabberd 13.10, could you tell me which modules I have to include or is there a link to settings file.
Also, has it been tested with ejab 13.10 ? if not, then where would I start with changes?

MS SQL support

is there MSSQL support in mod_archive2?
or is it possible to store messages in MSSQL with mod_archive_odbc?
Thank you!

Not directly.

NDL's picture

Hello Ivan,

No, there’s no support for MS SQL “right out of the box”. The DB-specific queries construction is more or less separated, though, so it should be possible to adjust either mod_archive_odbc or mod_archive2 to support MS SQL with not that much efforts.

Chances I will do that in the foreseeable future are close to zero, though, as I have no personal interest in supporting this RDBMS.

Private git repository?


is there some way to clone the git repository from your private server?
I'd like to have a look at the current progress, at least if there are any updates


Re: Private git repository?

NDL's picture

Hi Christian,

There were no updates compared to the version currently hosted on github, otherwise I’d just push them there too.

Recently ejabberd 3.x alpha was released, though, so I’m going to update mod_archive2 more or less soon to make it compatible with the latest ejabberd version and also solve several known issues. I will push updates on github as soon as there are any, so you can just subscribe on github notifications to be informed about updates.

When they are planing to

When they are planing to release 3.0?

Have no idea

NDL's picture

I honestly have no idea, it’s better to ask ejabberd folks for that. Considering there are no announcements related to ejabberd 3.x roadmap, no alpha/beta releases and last time I tried the code (about a month ago) it was quite unstable - I wouldn’t count on having release soon though.

Hi, now i`am working on

Hi, now i`am working on open-source Jabber client which supports XEP-136, but i cant find it actual server-side implementation for testing. If you are interested in joint testing, please contact me by e-mail or Jabber (

Only for ejabberd 3?

Is this module usable even with ejabberd 2.1 versions?

Re: Only for ejabberd 3?

NDL's picture

Is this module usable even with ejabberd 2.1 versions?

No, because ejabberd 3.x provides different XML interface based on exmpp library, so all modules targeting ejabberd 3.x are not compatible to earlier ejabberd versions. The same is true in the opposite direction too: it’s not possible to use with ejabberd 3.x modules for earlier versions of ejabberd.

Syndicate content