MongooseIM Versions Save

MongooseIM is Erlang Solutions' robust, scalable and efficient XMPP server, aimed at large installations. Specifically designed for enterprise purposes, it is fault-tolerant and can utilise the resources of multiple clustered machines.

6.2.1

1 month ago

Highlights

  • Enhanced CETS
  • Pools configuration
  • Traffic shapers update
  • Support for MAM v1.1.0
  • More reliable testing
  • Various improvements and fixes

All changes

Added

  • RDBMS backend for mod_caps (#4211)
  • Commit hash to GraphQL server status (#4221, #4262)
  • Erlang Doctor debugging tool (#4248)
  • Pools:
    • By host type (#4229)
    • By host config (#4235)
    • Names to mongoose_rdbms (#4231)

Changed

  • Improved shapers (#4187, #4203, #4213)
  • Enhanced discovery requests handling (#4194)
  • User-friendly errors for internal databases in the GraphQL API (#4192)
  • Increase idle_timeout for SSE (#4196)
  • Presence management refactor (#4207)
  • MAM implementation update to version 1.1.0 (#4218, #4225)
  • Roster management refactor (#4209)

Fixed

  • CETS improvements:
    • Pause on all nodes (#4204)
    • Node cleanup (#4234, #4250, #4251)
    • Unnecessary logs removal (#4205)
    • Node discovery (#4255, #4256)
  • MAM lookup error handling (#4191)
  • MUC Light id definition for MariaDB (#4195)
  • max_stanza_size issue (#4197)
  • Duplicate migration files (#4230)
  • Invalid MAM IDs parsing and overflow (#4242)
  • Certificate options verification on HTTPS (#4236)
  • GitHub Actions status badge (#4261)

Other

  • Testing improvements/fixes (#4176, #4202, #4212, #4237, #4239, #4243, #4241, #4246, #4257, #4259, #4260)
  • Update migration guide (#4258)

Commits, merged PRs and closed issues

6.2.0

5 months ago

Highlights

  • Introduced CETS as an alternative internal database to Mnesia
  • Updated many XEP implementations to the newest version
  • Implemented partial support for XEP-0386: Bind 2 and XEP-0388: Extensible SASL Profile
  • Support for Erlang 26
  • Removed support for Riak
  • Various improvements and fixes

Added

  • CETS
    • CETS backend for session management and stream management (#3629, #4075, #4143)
    • Add GraphQL handler for CETS info (#4015, #4116)
    • RDBMS discovery backend for CETS (#4022, #4042, #4108, #4049, #4165, #4182)
    • CETS backend for mod_bosh (#4050)
    • CETS support for components (#4047)
    • CETS support for S2S (#4046)
    • CETS backend for mod_muc (#4066)
    • CETS backend for mod_jingle_sip (#4076)
    • CETS backend for mongoose_cluster_id (#4136)
    • Add CETS backend for mod_keystore (#4140)
    • Remove mnesia from mod_register (#4146)
    • Anonymous auth supports mnesia and CETS backends (#4148)
    • Custom EPMD module (#4179)
  • Unified XEP list for xmpp.org (#4021, #4024, #4025, #4123)
  • Reporting to Google Analytics 4 (#4040, #4061)
  • Add config option to limit the number of users per domain (#4059)
  • XEP-0386: Bind 2 and XEP-0388: Extensible SASL Profile
    • Extensible SASL Profile (#4101, #4102)
    • Bind 2 (#4113, #4114)
  • Log internal-server-errors in mod_privacy (#4139)

Changed

  • XEP updates
    • Implement XEP-0004: Data Forms in a separate module (#4028, #4031)
    • Update XEP-0016: Privacy Lists (#4038)
    • Update XEP-0030: Service Discovery (#4039)
    • Update XEP-0050: Ad-Hoc Commands (#4043, #4048)
    • Update XEP-0363: HTTP File Upload(#4053)
    • Update attributes for XEP-0178 and add for XEP-0220 (#4057)
    • Update XEP-0045: Multi-User Chat (#4054)
    • Update XEPs: XEP-0082, XEP-0115, XEP-0124, XEP-0157, XEP-0160, XEP-0163, XEP-0199, XEP-0248, XEP-0277 (#4060)
    • Update XEP-0280 (#4083)
    • Update XEP-0060: Publish-Subscribe (#4092)
    • Update XEP-0215: External Service Discovery (#4120)
    • Advertise support for XEP-0249: Direct MUC Invitations (#4168)
  • Upgrade segmented_cache library and its telemetry events (#4041)
  • Improved Metrics initialization (#4070)
  • Initialise domain workers in the supervision tree instead of manually (#4069)
  • Config in one persistent term (#4093)
  • C2S features optimisations (#4094)
  • Patch ejabberd_sm (#4096)
  • Use jid:make_bare/2 instead of jid:make/3 where appropiate (#4109)
  • Unify auth_module and info in c2s_data record (#4110)
  • Simplify specs for ejabberd_sup and let workers terminate (#4117)
  • Raise an error if mnesia:create_table/2 fails (#4138)

Fixed

  • Fix mod_event_pusher:push_event/3 (#3939)
  • Removing incorrect CORS headers (#4006)
  • Fix handling of the undefined host type for stream errors (#4052)
  • Put reporter init after app startup (#4085)
  • Fix slow getaddrs call in global distribution (#4086)
  • C2S fixes (#4095, #4129)
  • Fix invalid username in scram authentication (#4118)
  • Return a proper type from mod_muc:node_cleanup_for_host_type/3 (#4122)
  • Correctly handle the case when TLS is disabled (#4150)
  • Fix error on ping timeout with stream management (#4153)
  • Update epgsql to fix an issue with Erlang/OTP 26 (#4169)
  • mod_muc_light config fix (#4178)
  • Change domain validation logic (#4184)
  • Require 'cacertfile' for just_tls when verify_mode = 'peer' (#4189)

Removed

  • Remove riak (#4035)
  • Remove legacy CLI commands (#4160)

Performance improvements

  • Cache router, filter, and process handlers into funs (#4068)
  • C2S features small optimisation (#4077)
  • Replace erlang:apply with explicit function calls for hooks (#4073)
  • Avoid calling ejabberd_sm_backend:get_sessions/3 second time when routing presences (#4089)
  • Put hooks into persistent_term using batching (#3878)

Other

  • Tests improvements/fixes (#4064, #4072, #4079, #4098, #4099, #4100, #4104, #4103, #4107, #4115, #4137, #4142, #4147, #4155, #4164)
  • Documentation updates (#4030, #4034, #4055, #4087, #4130, #4133, #4181, #4190)
  • CI improvements/fixes (#4023, #4026, #4027, #4029, #4097, #4112, #4149, #4145, #4152, #4166, #4167, #4171)
  • Upgrade exometer_report_graphite (#4134)
  • Support for Erlang 26 (#4121)
  • Rename db and node to mongooseim (#4172)

Commits, merged PRs and closed issues

6.1.0

1 year ago

Highlights

  • Reworked C2S architecture
  • Docker image for arm64
  • Update of Universal Analytics to Google Analytics 4
  • Dialyzer types fix
  • Deprecation of Riak
  • More reliable test suites
  • Various improvements and fixes

All changes

Added

  • New C2S architecture (#3765)
    • presence (#3746)
    • mod_last (#3750)
    • mod_register (#3751)
    • privacy (#3747)
    • pubsub (#3785)
    • ping (#3748)
    • metrics (#3800)
    • steam_management (#3796)
    • mod_csi (#3880)
    • sasl_external (#3911)
    • More granular hooks (#3852, #3857, #3955)
    • Fixed stream_management timeouts (#3934)
    • Stopped routing broadcast tuples (#3946)
    • Unified metrics (#3967)
    • C2S Migration guide (#3965)
    • Fixed duplicated logout in stream_management (#3983)
    • Adapted existing test suites (#3772, #3778, #3783, #3787, #3786, #3845, #3882, #3909, #3925, #3927, #3932, #3931, #3940)
    • Miscellaneous changes (#3729, #3797, #3790, #3816, #3858, #3888, #3904, #3908, #3917, #3919, #3935, #3950, #3957, #3959, #3972)
  • Added information about GraphQL (#3905)
  • Enable CircleCI tests insights (#3899)
  • Hooks improvement (#3913, #3912)
  • mod_inbox improvements (#3910, #3974, #4016)
  • Checking push form fields (#3916)
  • Checking for MUC domain when archiving messages (#3936)
  • Updated base Docker image (#3943)
  • Implemented mod_pubsub_db without dynamic modules (#3953)
  • Checking the to JID (#3971)
  • Auto registration/unregistration of hooks in gen_mod (#3954)
  • Added port and IP in the listener options for WebSockets and BOSH (#3977)
  • Improved MAM logging (#3984)
  • Added error reason to batch worker termination (#3985)
  • Docker image for arm64 (#3979, #3986, #3988, #4009)
  • Full support for TLS version 1.3 (#3989)
  • Restarting executes in transactions (#3973)
  • GraphQL server status now returns MongooseIM version (#3995)
  • Capability of measuring asynchronous SQL execute requests (#4002)
  • Enabled codecov with the new uploader (#4013)
  • remove_domain for internal auth (#4010)
  • Passing SID into store_info (#4007)

Changed

  • Unified status icons (#4000)
  • Reworked mongoose transport (#3982)
  • Updated dependencies (#3918, #3976, #4017)
  • Updated MySQL schema (#3944)
  • Set cookie to mongooseim (#3930)
  • Moved to Google Analytics 4 (#4011, #4019)

Fixed

  • Issues with GitHub actions (#3992, #4003)
  • Status badges (#3975)
  • Announcing session establishment (#3970)
  • Input for mam errors (#4008)
  • Issue with certificate verification for Google Analytics (#3978)
  • Incremental removal query (#3924)
  • Unknown types in Dialyzer (#3929)
  • Scram invalid xml response (#4020)

Removed

  • Legacy C2S implementation (#3805, #3860)
  • Some of the hooks with no handlers (#3990)
  • Incorrect CORS headers (#4005)
  • Riak is now deprecated (#3981)

Other

  • Test suites improvements (#3906, #3923, #3926, #3937, #3961, #3968, #3964, #3960, #3969, #3960, #3998, #3999)
  • Updated documentation (#3914, #3962, #3966, #4014)

Commits, merged PRs and closed issues

Special thanks to our contributors:

5.0.1

1 year ago

What's Changed

  • fix of errors in mod_event_pusher for muc/muc_light notifications (issue #3407, PR #3939)
  • dependencies update (PR #3939)

Full Changelog: https://github.com/esl/MongooseIM/compare/5.0.0...5.0.1

5.1.1

1 year ago

What's Changed

  • dependencies update (PR #3938)

Full Changelog: https://github.com/esl/MongooseIM/compare/5.1.0...5.1.1

6.0.0

1 year ago

Highlights

  • GraphQL API and Command Line Interface (CLI) with many new commands
  • Unified and reworked REST API
  • Incremental and asynchronous dynamic domain deletion
  • Full pagination support with RSM for Inbox
  • Significant code refactoring
  • Various improvements and fixes

All changes

Added

  • GraphQL request handling and execution (#3354, #3442, #3454, #3515, #3633, #3642, #3646 #3648, #3689, #3719, #3803, #3822, #3830, #3894)
  • GraphQL API schema and types (#3448, #3506, #3731, #3856, #3862, #3767)
  • GraphQL API tests (#3745, #3474, #3709, #3718, #3720, #3730, #3736, #3740)
  • GraphQL command implementation for the following categories:
    • account (#3503, #3824, #3895)
    • domain (#3499, #3715, #3851)
    • gdpr (#3711, #3855)
    • httpUpload (#3674, #3868)
    • inbox (#3694)
    • last (#3651, #3850)
    • metrics (#3665, #3861)
    • mnesia (#3725, #3896)
    • muc (#3615, #3627, #3799, #3875)
    • muc_light (#3538, #3563, #3563, #3576, #3742, #3881)
    • offline (#3688, #3864)
    • private (#3652, #3891)
    • roster (#3586, #3756, #3873)
    • server (#3744, #3793, #3877)
    • session (#3521, #3883)
    • stanza (#3483, #3565, #3814)
    • stat (#3700, #3715, #3870)
    • token (#3713, #3863)
    • vcard (#3639, #3890)
  • GraphQL CLI (Command Line Interface) (#3701, #3702, #3708, #3710, #3714, #3724, #3739)
  • GraphQL API documentation (#3704, #3773)
  • Incremental and asynchronous domain deletion (#3774, #3775, #3777, #3813, #3889)
  • Full pagination support for Inbox (#3827, #3843, #3844)

Removed

  • Legacy hooks module (#3892)
  • Legacy REST API command registry (#3697, #3759)

Changed

  • Replaced legacy hooks and handlers with gen_hook (#3758, #3760, #3762, #3763, #3769, #3782, #3784, #3789, #3792, #3798, #3802, #3807, #3808, #3811, #3815, #3817, #3818, #3821, #3825, #3826, #3828, #3829, #3831, #3832, #3833, #3834, #3835, #3836, #3837, #3838, #3839, #3840, #3841, #3842, #3846, #3847, #3848, #3849, #3853, #3854, #3865, #3866, #3867, #3871, #3874, #3876, #3879, #3884, #3886, #3887)
  • Reworked and unified REST API (#3741, #3753, #3768, #3771, #3776, #3780, #3801)
  • Performance improvements (#3682, #3687, #3726, #3738, #3761)
  • Added missing metrics (#3678)
  • Improved configurability (#3728, #3733)
  • MAM module names made more intuitive (#3684)
  • Improved DB request aggregation (#3755)
  • Improved logging (#3885)
  • Minor refactoring (#3732, #3764, #3809)

Fixed

  • Cassandra authentication issue (#3872)
  • Message sent to oneself was stored twice (#3859)
  • DB aggregator could stop working after an error (#3757)
  • Unexpected errors in logs (#3695, #3743)
  • Minor issues with MAM result paging (#3734)
  • Incorrect optimization flags passed to asynchronous workers (#3727)
  • Invalid format of the JWT secret (#3716)
  • Persistent rooms were not stored in the DB (#3707)
  • Issues with the anonymous login (#3706)

Other

  • Updated documentation (#3424, #3675, #3677, #3679, #3766, #3794, #3869, #3893, #3900, #3902, #3903)
  • Updated tools and scripts (#3698, #3723, #3737, #3897)
  • Updated dependencies and other third-party software (#3683, #3699, #3779, #3820, #3823, #3898)
  • Improved CI process (#3680, #3686, #3676)

Commits, merged PRs and closed issues

Special thanks to our contributors:

5.1.0

1 year ago

Highlights

  • Internal configuration rework
  • Inbox functionality and performance improvements
  • Remove the dynamically compiled modules
  • The new OTP 25 support
  • Miscellaneous enhancements, optimizations & improvements

All changes

Added

  • Cache consistency. Use segmented_cache as a cache backend and have all caches use it (#3330)
  • Persistent term config. Replace ejabberd_config with new persistent terms mongoose_config(#3367, #3338, #3343, #3356)
  • Create async pools basing on the MAM async workers concept (#3433)
  • Add new ensure_subscribed_metric/3 to mongoose metrics module (#3353)
  • Add some property based tests for MAM's is_archivable_message/4 (#3450)
  • Create SECURITY.md (#3562)
  • Allow to use podman instead of docker (#3522, #3543)
  • Support the new OTP 25 (#3667)

Removed

  • Hook handler records don't need the key field (#3342)
  • Remove dead code (#3451)
  • Remove deprecated mod_aws_sns (#3607)
  • Remove deprecated mod_revproxy (#3617)
  • Remove custom eldap.hrl (#3647)
  • Removed in internal configuration rework
    • Remove all calls to gen_mod:set_module_opt from modules, making the module config constant(#3389)
    • Remove calls to gen_mod:set_module_opt(s) in big tests (#3398)
    • Remove gen_mod:set_module_opt(s) (#3468)
    • Remove the ETS table from gen_mod (#3484)
    • Eliminate gen_mod:get_opt_subhost (#3626)
  • Remove dynamically compiled modules (#3394)
    • POC module mod_private (#3323)
    • Remove ejabberd_rdbms and mongoose_rdbms_type (#3392)
    • Allow global to be passed into mongoose_backend as an arg (#3386)
    • MAM cassandra backend without dynamically compiled modules (#3373)
    • Use persistent terms to store backend_module in ejabberd_sm (#3379)
    • Add mongoose_backend:get_backend_name (#3345)
    • mod_auth_token (#3336)
    • mod_last (#3339)
    • mod_event_pusher_push (#3340, #3348)
    • mod_privacy (#3347)
    • mod_muc (#3349)
    • mod_inbox (#3350, #3362, #3440)
    • mod_muc_light (#3351, #3418)
    • mod_offline (#3352, #3371)
    • mod_smart_markers (#3357)
    • mod_vcard (#3358)
    • mod_roster (#3364)
    • mod_pubsub (#3368)
    • mod_http_upload (#3372)
    • mod_keystore (#3375)
    • mongoose_rdbms (#3390)
    • ejabberd_router(#3381)
    • mod_global_distrib_mapping (#3582)

Changed

  • Hook functions (#3331)
  • Extend safely module API (#3337, #3341)
  • Make mongoose_commands errors human-readable (#3346)
  • Add the accumulator to the is_muc_room_owner and can_access_room room hooks (#3417)
  • Worker pool cleanups (#3419)
  • Upgrade mongoose JID (#3525)
  • Add backend logic to mod_stream_management (#3556)
  • Don't use Mnesia for IQ response tracking (#3560)
  • Use dynamic aware check for global domains in ACL module (#3327, #3332)
  • Store ACL specs in the global config (#3335)
  • Allow skipping cover compilation for small tests (#3382)
  • REST /commands endpoint now lists commands with more detailed info (#3391)
  • Revert scope to global for all global distributed Redis presets (#3393)
  • Refactor some usage of stanza types in ejabberd_sm (#3396)
  • Simplify stream management suite (#3453)
  • Performance and metrics touch on async workers (#3502, #3514, #3529)
  • Use ETS backend in mongoose_router instead of Mnesia (#3505)
  • Refactor can_change_ra function in mod_muc (#3581)
  • Reconfigure supervision flags in pools (#3593)
  • Install a hook to filter messages being buffered (#3654)
  • Make RDBMS asynchronous
    • Add RDBMS execute_cast to use when the return value is not needed (#3485)
    • Add async RDBMS order (#3611)
    • Add RDBMS transaction async requests (#3643)
  • Perf optimizations
    • Pre-build metric prefixes and fetch-or-rebuild when needed (#3634, #3649)
    • Pattern matches the map key for more efficiency (#3635)
    • Skip pretty-printing of unused accumulator field (#3637)
  • Message Archive Management improvements
    • Use mongoose_acc timestamp in MAM (#3320)
    • Same stanza id for peers (#3376)
    • Retract on stanza ids (#3377, #3384, #3385)
    • Retraction events (#3497, #3498, #3513)
    • Report wrong stanza id more friendly (#3591)
    • Make MAM return timestamps in microseconds (#3595)
    • Reorder MAM's filter_local_packet hook order (#3623)
    • MAM shaper improvements (#3641)
  • Smart markers improvements (#3590)
    • Implement all the automatic removals (e.g. remove_domain) for the smart markers (#3544)
    • Prepare a documentation page for smart markers (#3535)
    • Implement all configurations for the smart markers (#3546, #3592)
    • Do not display a warning when processing a message with repeated markers (#3673)
  • Inbox improvements (#3359, #3596, #3604)
    • Improve types for dialyzer and log errors when they happen (#3366)
    • Simplify time-unit conversions (#3405)
    • Fix inbox filter bug that puts unnecessary load on the auth backend (#3449)
    • Refactor Inbox tests (#3452)
    • Use async pools in inbox (#3462, #3500)
    • Fix queryid (#3494)
    • Extend queries (#3597)
    • Implement boxes that allow the classifying of entries (#3608)
    • Add async removes - make asynchronous inbox consistent (#3616, #3670)
  • Internal config rework
    • Simplify MUC Light config (#3387)
    • Unfold global options without the temporary functions (#3406)
    • Prepare tests for config defaults (#3408)
    • Introduce config defaults for the 'general' section (#3409)
    • Replace local_config records with key-value pairs (#3410)
    • Add an option to format a section/list as a map (#3420)
    • Move auth config spec to auth backend modules (#3437)
    • Introduce defaults in the auth section (#3439)
    • Section-based auth config (#3446)
    • Introduce default values for auth methods (#3458)
    • Auth password section config rework (#3463)
    • Store module config in a map and keep it updated (#3469, #3488)
    • Use dynamic_modules in big tests (#3481)
    • Store listener config in a map (#3495)
    • Keep ACL conditions as maps (#3501, #3504)
    • Test config parsing with post-processing (#3507)
    • Move domain_certfile to the 'general' section (#3512)
    • Keep s2s options: 'outgoing', 'dns', 'address' in maps (#3516)
    • Put all s2s options in a map and allow specifying them globally or per host-type (#3523)
    • Module config as a map (#3534)
    • Allow customizing auth module list per listener (#3539)
    • Migrate segmented cache to maps (#3572, #3594)
    • Test config metrics (#3613)
    • Put mod_adhoc opts in a map with defaults (#3537)
    • Put mod_bosh opts in a map with defaults (#3540)
    • Put outgoing_pools opts in a map with defaults (#3541)
    • Put mod_inbox opts in a map with defaults (#3547)
    • Put mod_private opts in a map with defaults (#3549)
    • Put mod_disco opts in a map with defaults (#3550)
    • Put mod_version opts in a map with defaults (#3552)
    • Put mod_vcard opts in a map with defaults (#3553)
    • Put mod_time opts in a map with defaults (#3554)
    • Put gen_mod_deps opts in a map with defaults (#3555)
    • Put mod_last opts in a map with defaults (#3557)
    • Put mod_mam opts in a map with defaults (#3559)
    • Put mod_shared_roster_ldap opts in a map with defaults (#3558)
    • Put mod_privacy opts in a map with defaults (#3567)
    • Put mod_sic opts in a map with defaults (#3568)
    • Put mod_roster opts in a map with defaults (#3569)
    • Put mod_stream_management opts in a map with defaults (#3571)
    • Put mod_muc opts in a map with defaults (#3575)
    • Put mod_push_service_mongoosepush opts in a map with defaults (#3577)
    • Put mod_pubsub opts in a map with defaults (#3578)
    • Put mod_ping opts in a map with defaults (#3579)
    • Put mod_muc_light opts in a map with defaults (#3580)
    • Put mod_global_distrib opts in a map with defaults (#3587)
    • Put mod_offline opts in a map with defaults (#3589)
    • Put mod_caps opts in a map with defaults (#3598)
    • Put mod_keystore opts in a map with defaults (#3599)
    • Put mod_jingle_sip opts in a map with defaults (#3600)
    • Put mod_carboncopy opts in a map with defaults (#3602)
    • Put mod_event_pusher opts in a map with defaults (#3603)
    • Put mod_csi opts in a map with defaults (#3605)
    • Put mod_register opts in a map with defaults (#3606)
    • Put mod_offline_chatmarkers opts in a map with defaults (#3609)
    • Put mod_http_upload opts in a map with defaults (#3614)
    • Rework service configuration and management (#3620)
    • Store service options in maps with defaults (#3624)
    • Service and module options only in maps (#3625)
    • Listener configuration rework (#3628)
    • Rework HTTP handler configuration (#3636)
    • Use maps for mongoose_wpool options (#3645)
    • TLS config rework (#3653)
    • Use format_items = map by default for config sections (#3655)
    • Access commands in maps (#3656)
    • Final internal config cleanup (#3659)

Fixed

  • Edoc generation (#3333)
  • Rest admin API - return 404 when command not found instead of 500 (#3383)
  • Identify only stored users on offline routing (#3395)
  • Fix typos (#3475, #3621)
  • Fix certs (#3447, #3435, #3447, #3632, #3640)
  • Fix print-dots for Mac OS Monterey (#3480)
  • Add a newline after module options to improve config readability (#3402)
  • Correctly pass connection options to Fusco (#3426)
  • Fix Github Actions CI - run MSSQL as root again (#3456)
  • Fix ejabberd_c2s - don't drop the host type in update_stanza (#3464)
  • Adding queryId to archived inbox messages (#3482, #3492)
  • MAM - Avoid asking for user exist with a room (#3470)
  • Fix starting new caches (#3508, #3518)
  • Add server_name_indication_host config option (#3510)
  • Less MIM compiler warnings (#3524)
  • Add config flag to be able to set sni hostname matching (#3528)
  • Fix is_configured in async pools (#3566)
  • Do not call the obsolete backend API in CT hook (#3570)
  • Fix metrics for auth backend not being reported (#3585)
  • Fix cowboy_static options (#3618)
  • Fix mod_ping with host_types (#3638)
  • Fix a registration timeout cleanup (#3601, #3671)
  • Fix restart RabbitMQ connection (#3631, #3672)
  • Use metric probes instead of eval for slow calculated metrics (#3644)
  • Fix flaky tests and speed up CI:
    • Gather list of failed test cases in a separate issue (#3361)
    • Fix rest_client_SUITE:muc:messages_can_be_paginated_in_room (#3363)
    • Fill the gaps in the event table for service_domain_db (#3365)
    • Run muclight inbox tests one by one instead of parallel (#3374)
    • Print preset in tools/circle-publish-github-summary-comment.sh (#3378)
    • Enable mod_last only on its test suite (#3413)
    • Enable DB modules in tests only when used (#3416)
    • Retry insert MAM prefs on deadlock (#3421)
    • Fix domain_removal_SUITE:last_removal (#3422)
    • Remove wait from unavailable_resources_dont_get_carbons (#3431)
    • Run tests in pubsub:basic in parallel (#3432)
    • Use in-memory riak backend to speed-up IO (#3434)
    • Fix sm_SUITE (#3436)
    • Use wait_for_archive_size inside send_rsm_messages helper (#3443)
    • Avoid a race condition in sm_SUITE:resume_session_state_stop_c2s (#3444)
    • Fix offline_SUITE:max_offline_messages_reached (#3445)
    • Reroute presences correctly on reconnect (SM fix) (#3459)
    • Wait for async writers to flush messages in tests (#3466)
    • Inbox flaky tests fixes (#3630)

Other

  • Faster, more stable CircleCI on docker with DB backends (#3401, #3519, #3530)
  • Use OTP 24.3.4 for CircleCI (#3661)
  • Updating dependencies and cleaning the rebar.lock file (#3425, #3430, #3465, #3490, #3520, #3531, #3533, #3573, #3657, #3669)
  • Document low-level MAM options (#3329)
  • Document MUC Light cache affiliations (#3509)
  • Minor documentation improvements (#3369, #3400, #3404, #3412, #3438, #3532, #3545, #3668)
  • Update CONTRIBUTING.md (#3622)

Commits, merged PRs and closed issues

Special thanks to our contributors:

5.0.0

2 years ago

Highlights

  • Support for dynamic domains
  • Documentation improvements and reorganization
  • Miscellaneous enhancements & improvements

All changes

Added

  • Support dynamic domains in (#3095, #3158, #3220, #3226, #3239, #3225, #3212)

    • Config (#3053)
    • Service for database domain management (#3052)
    • REST and CLI API for domains (#3058)
    • Init (#3061)
    • Auth (#3063)
    • PM (#3075)
    • Hooks (#3089)
    • IQ handlers (#3118)
    • Tests (#3108, #3109, #3235)
  • Call remove domain hook from mongoose_domain_api (#3237)

  • Use host_types instead of host in modules and hooks (#3120, #3170, #3097)

  • Support for dynamic domains in modules:

    • mod_ping (#3136)
    • ejabberd_users(module renamed to mongoose_users) (#3135, #3161)
    • mod_inbox (#3132, #3141, #3103, #3165, #3228)
    • MAM/MUC (#3123, #3143, #3155, #3157, #3107, #3231, #3305, #3092, #3147)
    • auth backends (#3106, #3295)
    • mod_http_upload (#3267)
    • mod_sic (#3258)
    • mod_auth_token and mod_keystore (#3262)
    • mod_csi (#3260)
    • mod_amp (#3261)
    • mod_time (#3255)
    • mod_version (#3256)
    • mod_bosh (#3253)
    • mod_adhoc (#3252)
    • mod_register (#3247)
    • mod_muc_commands (#3248)
    • mod_smart_markers (#3243)
    • mod_blocking (#3196)
    • mod_vcard (#3221, #3304)
    • mod_privacy (#3189)
    • mod_last (#3188, #3309)
    • mod_private (#3175)
    • mod_roster (#3159, #3291)
    • mod_caps (#3156)
    • mod_offline (#3164, #3263, #3299)
    • mod_stream_management (#3149)
    • mod_carboncopy (#3130, #3144)
    • mod_disco (#3128, #3146, #3151)
  • Tests for dynamic domains:

    • Enable mim2 node to allow running more tests for dynamic domains (#3264)
    • Enable test suites for dynamic domains (#3268, #3269, #3271, #3272, #3275, #3285, #3276, #3277, #3278, #3279, #3280, #3281, #3283, #3284, #3287, #3142, #3302, #3241, #3246)
    • Test mongooseimctl with dynamic domains (#3273, #3274)
    • Test roster metrics with dynamic domains (#3286)
    • Fix anonymous login and test it for dynamic domains (#3254)
    • Test clustering and domain management with dynamic domains (#3266)
  • Other:

    • Support OTP 24.X (#3186)
    • GDPR get data takes host type as a parameter (#3140)
    • Initial implementation of subdomains management subsystem (#3116)
    • Support XEP-0201 in client api for message (#3236)
    • Support PostgreSQL 14 (#3316, #3319)

Removed

  • Remove all occurences of ?MYNAME except stream errors and the initial value in ejabberd_c2s (#3039)
  • Remove local_send_to_resource hook (#3139)
  • Unused files/modules (#3121, #3122, #3207, #3214, #3310)
  • Unused dependencies (#3199, #3200, #3201)
  • Unused code fragments (#3311, #3313, #3322)
  • Support OTP 22 (#3289)

Changed

  • Prepare queries in mongoose_cluster_id (#3098)
  • Make vcard processing parallel (#3315)
  • Make pool_name configurable for service_domain_db (#3205)
  • Allow to add subelements to the mam iq-fin element (#3191, #3195)
  • Use map for mod_mam:message_row() (#3093)
  • Rework of the gen_mod module (#3104)
  • Change Room EventData type to map (#3111)
  • Format stacktrace args properly (#3124)
  • Make dummy auth delays configurable (#3131)
  • REST API better error reporting (#3137)
  • Use auth for mongoose_domain_handler from REST (#3160)
  • Reimplement mod_cache_users using persistent_terms (#3169)
  • Hooks framework rework (#3174)
  • Refactor async writer for mod_mam (#3216)
  • More consistent accumulator use (#3314, #3240, #3249, #3314)
  • Use more full jids and avoid to_lus conversions in mod_muc_light (#3250)
  • Tests improvements (#3133, #3134, #3181, #3208, #3213, #3217, #3218, #3219, #3227, #3230, #3232, #3127, #3238, #3257, #3297, #3312)
  • Minor changes (#3100, #3324, #3317)

Fixed

  • Start only used metrics (#3096)
  • Prevent infinite loop when domain isolation is on on both domains (#3110)
  • Prepared query in mongoose_cluster_id causes errors on startup (#3112)
  • Tag should be an atom in ldap types (#3178)
  • Missing or not working xref (#3179)
  • Occuring mongoose_metric_hooks error (#3184)
  • FTBFS on implicit declaration of function erts_exit (#3222)

Other

  • Docker images update (#3166)
  • Dependencies update (#3117, #3125, #3193, #3194, #3197, #3198, #3203, #3206, #3211, #3215, #3292)
  • CI improvements (#3173, #3176, #3183, #3190, #3307)
  • Document dynamic domains (#3242, #3245)
  • Restructure the documentation (#3259, #3288)
  • Update migration guide with dynamic domains changes (#3234)
  • Small documentation improvements (#3105, #3162, #3102, #3180, #3114, #3290, #3300, #3303, #3306, #3308, #3312)

Commits, merged PRs and closed issues

Special thanks to our contributors:

  • @imcyee Add thread and thread parent to client api messages (#3236)

4.2.0

3 years ago

Highlights

  • Prepared queries introduced
  • Inbox extensions
  • Miscellaneous enhancements & improvements

All changes

Added

  • Documentation for mod_offline.store_groupchat_messages option (#2992)
  • Support of MS SQL and MySQL in mod_auth_token (#3059)
  • Inbox extensions to set entries as archived, muted or read (#3067)
  • mod_domain_isolation module to limit message passing between domains (#3070)

Removed

  • Usage of deprecated http_uri in ejabberd_auth_http and mod_muc_room modules (#3026)
  • Config reload functionality with the flat config format (#3030)
  • Outdated and unsupported azuresql.sql file (#3086)

Changed

  • Usage of maps instead of lists in session management (#3018)
  • Improved timestamp logic (#3031)
  • Prepared queries for MS SQL, MySQL and PostgreSQL (#3039, #3050, #3055, #3059, #3060, #3066, #3074, #3078)
  • Improved pipeline for mod_smart_markers (#3068)
  • Unified checks for chat markers (#3080)

Fixed

  • Creation of modMucMamFlushed metric (#3023)
  • Starting backend containers for Mac OS X (#3033)
  • Minor issues with GitHub Actions (#3045)
  • Crash during session handover (#3056)
  • Type declaration in mod_muc_light.hrl (#3057)
  • Test summary is no longer printed when CT directory is not created (#3069)
  • Explicit preset_not_found error when running tests with nonexistent preset (#3072)
  • Set mod_mam_meta.pm.archive_groupchats to false by default (#3082)

Other

  • Dependencies update (#3036, #3077)
  • Minor documentation improvements (#3043, #3046, #3079, #3087)

Commits, merged PRs and closed issues

Special thanks to our contributors:

  • Inbox extensions are sponsored by Beekeeper
  • @antivista For the documentation supplement (#2992)
  • @imcyee For fixing handover crash (#3056)

4.1.0

3 years ago

Highlights

  • Major configuration rework: the TOML format is now the only one supported
  • Documentation enhancements
  • Performance improvements

All changes

Added

  • Full support of TOML configuration format (#2929)
  • Prepared queries for mod_vcard (#2939)
  • Humio support (#2952)
  • GitHub actions for MongooseIM CI workflow (#2990, #2993)
  • Usage of fast_scram library (#3003)
  • Documentation for MongooseIM cluster's rolling upgrade (#3012)
  • PEP publish options (#3017)

Removed

  • Support of old *.cfg configuration format (#2929)
  • Support of HTTP File Upload 0.2.5 (#2989)
  • Unused katt_helper (#2999)

Changed

  • Moved documentation from readthedocs to gh-pages and its face lifting (#2946, #2960, #2963, #2966, #2969)
  • Helper script in small tests uses python3 instead of python2 (#2957)
  • Use tools/wait_for_service.sh instead of netcat to ensure the main minio container is started (#2979)
  • Reduced stringprepping in roster hooks, privacy modules and mod_offline (#2997, #3005, #3009)

Fixed

  • The response of locked MUC room to disco#info (#2956)
  • ct_mongoose_log_hook initialization error (#2964)
  • Catching log formatter errors to avoid death spiral of logging (#2968, #2978)
  • The way big tests detect minio in CI (#2998)
  • Connection issues with Cassandra (#3006)

Other

  • Added rebar3 clean call to Makefile (#2932)
  • Minor docs improvements (#2945, #2981, #3000, #3013, #3020)
  • Parallel loading of nksip in tests (#2947)
  • CI improvements (#2949, #2972)
  • Usage of integer_to_binary/1 instead of list_to_integer(binary_to_list/1) (#3008)
  • Removed archive_groupchats warning (#3016)

Commits, merged PRs and closed issues