[OpenNMS/opennms] da1ad4: NMS-6400: Make ordered delivery opt-in rather than...

Marshall Massengill via opennms-cvs <[email protected]>
Newsgroups gmane.network.opennms.cvs
Message-ID <OpenNMS/opennms/push/refs/heads/mm/NMS-6400-smoke/[email protected]>
  Branch: refs/heads/mm/NMS-6400-smoke
  Home:   https://github.com/OpenNMS/opennms
  Commit: da1ad43f0f7d79ac3317a5ed183ac9964122362b
      https://github.com/OpenNMS/opennms/commit/da1ad43f0f7d79ac3317a5ed183ac9964122362b
  Author: Marshall Massengill <[email protected]>
  Date:   2026-08-26 (Wed, 26 Aug 2026)

  Changed paths:
    M docs/modules/operation/pages/deep-dive/events/sources/syslog.adoc
    M features/events/syslog/blueprint-syslog-listener-camel-netty.xml
    M features/events/syslog/blueprint-syslog-listener-javanet.xml
    M features/events/syslog/src/main/java/org/opennms/netmgt/syslogd/SyslogTcpListener.java
    M features/events/syslog/src/test/java/org/opennms/netmgt/syslogd/SyslogTcpListenerDispatchIT.java
    M features/events/syslog/src/test/java/org/opennms/netmgt/syslogd/SyslogdMultiListenerIT.java
    M features/events/syslog/src/test/java/org/opennms/netmgt/syslogd/SyslogdReceiverNettyTcpIT.java
    M opennms-base-assembly/src/main/filtered/etc/syslogd-configuration.xml
    M opennms-config-model/src/main/java/org/opennms/netmgt/config/syslogd/SyslogTcpConfig.java
    M opennms-config-model/src/main/resources/xsds/syslog.xsd
    M opennms-config-model/src/test/java/org/opennms/netmgt/config/syslogd/SyslogdConfigurationTest.java
    M opennms-container/minion/CONFD_README.md

  Log Message:
  -----------
  NMS-6400: Make ordered delivery opt-in rather than the default

Holding one message per connection at the sink and waiting for it to be confirmed
was measured at roughly 53 messages a second per connection against the shipped
batch-size, where not waiting measured roughly 21500. A batch that does not fill
waits out batch-interval, and every message pays that.

What the wait buys is real. Aggregator.aggregate() appends under a non-fair striped
lock keyed on the source address, so two of the dispatcher's drain threads can
invert a pair whatever order they took them off the queue, and syslog has no
sequence number to repair it with. One message in flight keeps a connection out of
that race.

But that is the same dispatcher, drain pool and aggregator the UDP listener uses,
and both transports share one AsyncDispatcher, so syslog over UDP has always had
the same exposure and nothing compensates for it. TCP was the only path paying two
orders of magnitude for a guarantee nothing else offers.

So ordered is now an attribute on the tcp element, off by default, and
dispatch-timeout only applies when it is set. Unordered resumes reading when the
sink accepts a message and only watches the future to log a failure, which also
makes it immune to the reloaded-Minion case where the sink completes the wrong
futures.

No test can fail for want of ordering, because the race is a lock race that does
not reproduce on demand: the two 200 message ordering tests passed in both modes,
so they were never protecting it. The mechanism is pinned instead. Ordered never
leaves two of a connection's messages unconfirmed at the sink, the default does,
and the default carries a burst through a sink that never confirms anything.

Also adds the first test to leave batch-size at its default. Every other one sets
it to 1, which makes each message its own batch and is why none of this surfaced.



To unsubscribe from these emails, change your notification settings at https://github.com/OpenNMS/opennms/settings/notifications


_______________________________________________
Please read the OpenNMS Mailing List FAQ:
http://www.opennms.org/wiki/index.php?page=MailingListFaq
opennms-cvs mailing list

To *unsubscribe* or change your subscription options, see the bottom of this page:
https://lists.sourceforge.net/lists/listinfo/opennms-cvs
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.