Hello Declan!
Thanks for sharing the details of these issues.
Reading your letters I tried to focus on points where we could help. I have highlighted them below with "|" and answered them the best I could.
Mainly I see 2 kinds of issues:
* Compilation problems on Solaris
Although we don't support Solaris officially we received and solved compile related issues on Solaris.
I would recommend to submit these on Github with details to discuss it.
* The reported destination dropping messages (or "silent sources" as originally reported ) in syslog-ng.
The log contains messages like:
Feb 12 22:28:24.07 host1 syslog-ng[12121]: Destination reliable queue full, dropping message; filename='/var/syslog-ng/syslog-ng-00000.rqf', queue_len='3929', mem_buf_size='10000', disk_buf_size='2000000', persist_name='afsocket_dd_qfile(stream,localhost.afunix:/var/syslog-ng/logserver.socket)'
I don't know why it needs to drop messages when the source is a file and the flow-control is on.
The log message is not dropped, this shows that the debug message can mislead.
Message dropping is handled in a layer above the place where this function is called.
I think this should be fixed.
Tried a later syslog-ng version but the tarball was missing 'configure'. One of them was missing the bundled json-c.
Needed an empty "json_object_private.h" in the include path (should be another patch, but it was easier just to touch the file).
Can you please specify which tarballs do you mean?
Some word about your use case:
My use case is strangely simple. I want changes to a list of files on one host replicated to another host, reliably. Reliably means accounting for any network and host disruption, file truncation or rotation.
This may seem straightforward but there is no such software. People I've tracked down in the same situation are just running rsync in while(1) loops, which doesn't scale. (Also, I've seen rsync protocol-deadlock on big-v-little-endian + 32v64 + differing-raw-directory-order weirdness before).
...
If this is all blowing up because the patches I applied to get it to compile weren't thread safe, that would be appropriately ironic.
As written your log messages are not necessarily conforming to any syslog protocols (which would not be a problem itself) and could be very special too ("... UNTRUSTED application logs in a verbatim-recoverable manner (e.g. NUL chars, logs with no newlines) ...").
Your use case is quite special: file replication/transfer without any constraint about the format of the log message while file truncation can happen.
Please note that syslog-ng is designed to sequentially read from file sources, if your applications can truncate the file anytime that could lead (in some cases) to message loss!
In our admin guide we state that after a rotation you must reload/restart syslog-ng.
Best Regards,
Gabor