Skip to content

6.3.3 to 6.4.0

Configuration options

With the rework of connection handling for server-to-server (S2S) and component connections, we have updated several configuration options. Some of the changes affect client-to-server (C2S) connections as well. Some of the affected options were present in the default configuration file, and you might need to amend them even if you haven't changed them.

General

The following options from the general section were removed:

  • general.max_fsm_queue, used to limit the maximum number of incoming messages in the internal queues for S2S and component connections. Traffic shapers should be used instead, as they provide a more reliable protection, because they act at an earlier stage.
  • general.domain_certfile, used to specify distinct certificates for specific local XMPP domains. Instead, now you should specify the certificates in the configuration sections of your C2S and S2S listeners.

Shaper name validation

When a referenced traffic shaper does not exist, MongooseIM will now issue an error and refuse to start. In the previous version, it would silently disable the shaper instead. This means that your previous config might now cause an undefined_shapers error - in such case, you need to make sure the shaper is defined in the shaper section, or disable shaping by using the default none shaper.

Client-to-server (C2S) connections

The listen.c2s.shaper option references the traffic shaper used for incoming C2S connections. This logic is unchanged, but there was an issue in the default configuration file - it referenced the c2s_shaper access rule (which had no effect) instead of the normal shaper. This is fixed in the new default configuration file, but you might need to update it in your configuration as well. It is recommended to also remove the obsolete c2s_shaper access rule to avoid confusion. Keep in mind that you might have several listeners configured.

Another change is that the listen.c2s.tls.module option is removed, because fast_tls is not supported anymore. All listeners use the native Erlang/OTP TLS implementation instead (which was called just_tls before).

Server-to-server (S2S) connections

The listen.s2s.shaper option references the traffic shaper used for incoming S2S connections. Previously, this option referenced an access rule name instead. In the default configuration file, the obsolete s2s_shaper rule was replaced by the corresponding fast shaper. You might need to apply this fix in your configuration file. Keep in mind that you might have several listeners configured. It is recommended to remove the s2s_shaper access rule as well to avoid confusion.

Shaper for outgoing S2S connections

For outgoing connections, there is a new option s2s.outgoing.shaper. Together with listen.s2s.shaper, it allows you to shape the traffic from both connection types.

Options from the s2s section were reworked. All affected options are listed below:

You might need to amend these options in your configuration file.

External component connections

The component listener section, previously called listen.service, was renamed to listen.component. The listen.service.shaper_rule option, contrary to its name, was referencing the shaper directly. Now, this option has a more intuitive name listen.component.shaper, and its logic is unchanged. You might need to update these options in your configuration file. Keep in mind that you might have several listeners configured.

Metrics

Metrics related to XMPP traffic were reworked from scratch. They are now more consistent and provide better coverage of the instrumented events. The table below summarizes the changes. The names presented in the table are assuming that Prometheus is used. For more information, e.g. about Prometheus labels or Exometer metrics, follow the links in the table.

Previous metrics Current metrics More information
c2s_tcp_data_in, c2s_tcp_data_out,
c2s_tls_data_in, c2s_tls_data_out,
s2s_tcp_data_in, s2s_tcp_data_out,
s2s_tls_data_in, s2s_tls_data_out,
component_tcp_data_in, component_tcp_data_out,
component_tls_data_in, component_tls_data_out
tcp_data_in, tcp_data_out,
tls_data_in, tls_data_out
Network data
c2s_element_in_*, c2s_element_out_* xmpp_element_in_*, xmpp_element_out_* XMPP traffic
c2s_xmpp_element_size_in_byte_size, c2s_xmpp_element_size_out_byte_size,
s2s_xmpp_element_size_in_byte_size, s2s_xmpp_element_size_out_byte_size,
component_xmpp_element_size_in_byte_size, component_xmpp_element_size_out_byte_size
xmpp_element_in_byte_size, xmpp_element_out_byte_size XMPP traffic