Release Notes

git repo(unreleased)


  • added sr_watchb... the old implementation as a backup in case the new sr_watch is busted.
  • attempted fix for sr_walk permission denied issue. Reformulated how recursion is done. now it just queues up issues for later.


  • attempted fix for bug #79 (.tmp file stay when download fails.) not tested.
  • added 's', SHA512 checksum support.
  • after a shovel has restored a queue from a save file, it now exits.
  • on repeated saves, the json save files came out different for the same messages. Fixed by adding sort_keys=True to dumps. now save of same files is bitwise identical.
  • added 'attempt' setting to make the number of retries programmable.
  • fixed on_line plugins being broken in sr_poll.
  • fixed 'reject' not working in sr_poll.
  • added -save_file option to shovel and sender to allow arbitrary locations for save files.
  • report_daemons False option setting now stops report routing shovels from starting.
  • added to plugins examples.


  • added sr_log2save a little filter to extract reloadable messages from log files.

2.17.03a2 * release of a1 broke in the middle, had to use a new tag.


  • feature #61: save/restore Deal with large queues on brokers by persisting to disk.
  • bug #77: fixed. crash on file deletion when inflight is numeric.
  • feature #61, sr_sender -save/-restore to avoid broker queues implemented.
  • bug #78: fixed. posting symlinks now works.
  • bug #76: fixed. sr_audit will now only start if the admin option is set in default.conf only need one sr_audit for each pump. having more isn't a problem, but dozens are stupid. for deployment to a cluster, need to run on hundreds of nodes, stop running hundreds of useless instances.
  • sr_watch now indicates the exchange being published to on startup.
  • feature #56: system startup (init file and/or systemd service) now installed with package. might be a bit shaky...
  • bug (not submitted) problem with truncation on sftp sender, missing argument.
  • developer: flow test improvement: added verification of content sent by sr_sender.
  • bug (not submitted) all DESTFNSCRIPT are broken in last release. Fixed now.
  • sr_subscribe with no directory spec was broken. default to pwd as one would expect. Fixed now.
  • changed build-dep from python-docutils -> python3-docutils.


  • Summary: added some understanding of symbolic links.
  • sr_watch will be faster in many cases, many improvements.
  • sr_post now accepts normal file specifications (more than 1, and relative paths)
  • Any component can now use vip/interface for active/passive. Cluster configurations more flexible.
  • programming: can have more than one plugin for on_*, they now stack sequentially.
  • programming: do_download plugin examples added for use of wget or scp.
  • other small improvements.
  • Details:
  • Added symbolic link processing (sr_watch, sr_post, sr_sarra, sr_subscribe, sr_sender) Caveat: links are mirrored as-is. Likely the wrong thing to do for absolute ones. Suggestions bug#70 welcome.
  • sr_post: now works with relative paths, and * etc... can post multiple files and/or directories at once.
  • sr_post: simplified partitioning options: blocksize eliminated, replaced by 'parts'
  • sr_post: parts 0 - autocompute part size, 1- always send files in a single part, <sz> used a fixed size.
  • sr_watch: events keywords changed: modified->modify, created->create, deleted->delete.
  • sr_watch: event keyword for links: link - mirror symbolic links
  • sr_watch: added inflight xx to ignore files until they have not been modified for > xx seconds.
  • sr_watch: symbolic link processing significantly changes paths produced, as realpath no longer used. This should be perceived as an improvement (paths look more familiar).
  • sr_watch: enabled inotify observer (can be hundreds of times faster to notice a change in a large tree.)
  • sr_watch: added force_polling toggle option to allow user selection of slower method (polling observer)
  • sr_watch: added follow_symlinks toggle option.
  • sr_watch: process groups of events with a single cache lock/unlock. Provides 4-10x speedup.
  • sr_watch: added 'realpath' option. Earlier versions use 'realpath' all the time, which changes paths read significantly when directories are symbolically linked. So default was changed to not do that. Can obtain old behaviour by spcifying this option (listed as a developer option.)
  • plugins: are now stackable, when on_message encountered it is added to the list of plugins, rather than replacing a single one.
  • plugins: added alternate downloading examples: (download_scp, download_wget, msg_download ) This is used to invoke high speed xfer mechanism, such as bbcp.
  • sum 0: the sum 0 algorithm is changed to produce random checksum, rather than constant 0 to improve load balancing.
  • sr_audit: changed 'role' directive to 'declare' to allow declaration of things beside users. See following line:
  • sr_audit: added 'declare exchange' to permit creation of exchanges.
  • developer: flow test improvement: essentially re-written to improve reliability, and shorten.
  • developer: flow test improvement: now checks every item, rather than sampling, results more reassurring.
  • developer: flow test improvement: cumulative status (of all tests.)
  • developer: flow test improvement: compare actual downloads vs. watch.
  • developer: flow test improvement: programmable number of items to collect before verifying.
  • feature #59: #!/usr/bin/python3 -> #!/usr/bin/env python3 ... harmless...
  • feature #56: started. systemd support file begun, more testing required.
  • feature #54: done. added Active/passive options to all components (vip & interface support.)
  • feature #53: done. sr_watch 'inflight' implements mtime work.
  • feature #52: done. plugin-stacking.
  • bug #74: workaround ( sr_post to an ssl broker prints scary (but harmless) message after succeeding, messge suppressed. )
  • bug #73: sr_sender overwriting files with shorter new versions leaves old content) fixed. General bug fix for over-writing of files when new shorter than old (sftp mostly)
  • bug #72: fixed ( sr_sender -strip now works. )
  • bug #71: fixed ( sr_audit user creation )
  • bug #70: started ( sr_watch symbolic link handling ) mitigated. Unclear if really fixed.
  • bug #68: fixed ( sr_sarra part of flow test improvements above.)
  • bug #67: fixed ( config files always parsed twice. )
  • bug #45: fixed ( sr_sarra will not delete local files )


  • Added moving of log directory from var/log -> log, and replacement of var directory with a symlink.

  • Added setting of passwords by default for broker users by sr_audit.

  • Added --reset flag interpretation by sr_audit so that permissions can be updated easily for all users. So now when upgrading after 'log' -> 'report' transition, just do:

    sr_audit --reset True --users foreground

    and it will overwrite all the permission regexp's of the broker users. If someone has funny permissions, that could be a problem.

  • Added 'set_passwords' flag to sr_audit, defaulting to True. if set to false, users are given blank passwords.... not sure if this is useful. trying to understand what to do with this in the case of LDAP based users.

  • Added creation of send directory to

  • un-commented the over-ride default exchange for reporting in tsource2send.conf... it still needs overriding.

  • Corrected the regexp permission masks to allow sources to write to any exchange that starts with xs_<user>... rather than just specifically that source.

  • Corrected the regexp permissions to allow reading by subs from same.

  • Reverted patch in sarra that broke download URL's.

  • Add old log exchanges to sr_audit for compatibility with pre-transition clients.

  • Changed test of sender to compare against the ones watch, rather than subscriber.

  • Added measurable test to flow test for sender.

  • Adding sr_watch to flow_test.

  • Added sr_sender to flow test.

  • Removing '/var' so log files are in the normal place now.

  • Optimizing the flow_test script (so it's shorter, more straightforward and regular.)

  • Documentation cleanup


  • Fixing a cosmetic but ugly bug. Caused by the URL fix
  • Add unready list to prevent posting unreadable files


  • fix bug #61: change outputs to better present URL's in logs.
  • just naming of some routines that were imported from sundew, add prefix metpx_...
  • fix bug #54: Adds interpretation of sundew-specific delivery options to sr_subscribe.


  • Another String too long fix.
  • Potential fix for bug #55 (chdir)


  • Fix issue #42 (header length in AMQP)
  • Numerous doc changes


  • Fixes to self test suite
  • Added calls to the usage strings on a bunch of components
  • Added centralized time format conversion in sr_util
  • Added sr_report(1) manual page.
  • Bugfix for headers too long.
  • Patch to sr_poll to prevent crashing with post_exchange_split.
  • Tentative fix for bug #50 improper requirement of write permissions
  • Process headers dynamically
  • Documentation Updates.


  • Major Change: Changed "log" to "report" in all components.
  • Added test case for sr_sender
  • Documentation Update


  • Ian's fix for sr_sender borked with post_exchange_split.
  • Jun's fix for chmod and chmod_dir to be octal.


  • Fixed typos that broke the package install in debian


  • Added post_exchange_split config option (allows multiple cooperating sr_winnow instances) code, test suite mode, and documentation.
  • fix logger output to file (bug #39 on sf)
  • sr_amqp: Modified truncated exponential backoff to use multiplication instead of a table. So can modify max interval far more easily. Also values are better.
  • nicer formatting of sleep debug print.
  • sr_post/sr_watch: added atime and mtime to post. (FR #41)
  • sr_watch: handle file rename in watch directory (addresses bug #40)
  • sr_watch: fix for on_post trigger to be called after filtering events.
  • sr_sender: Added chmod_dir support (bug #28)
  • plugin work: Made 'script incorrect' message more explicit about what is wrong in the script.
  • plugin work: word smithery, replaced 'script' by 'plugin' in execfile. so the messages refer to 'plugin' errors.
  • Added plugin part_check, which verbosely checks checksums,
  • plugin work: Added dmf_renamers, modified for current convention, and word smithery in programmers guide.
  • Tested (de-bugged) the missing file_rxpipe plugin, added it to the default list.
  • Documentation improvements: sundew compatibility options to sr_subscribe.
  • Documentation improvements: moving code from subscriber to programming guide.
  • Added a note for documenting difference between senders and subscription clients in the message plugins.
  • Made reference to credentials.conf more explicit in all the command line component man pages. (Ian didn't understand he needed it... was not obvious.)
  • Moved information about how to access credentials from plugin code from subscriber guide to programming guide.
  • Turned a bit of the sr_watch man page into a CAVEAT section.
  • Added a note about how file renaming is (poorly) handled at the moment.
  • Test suite: removing overwrites of config files from
  • Test suite: Continuing the quest: getting rid of passwords in debug output,
  • Test suite: adding explicit mention of exchange wherever possible.
  • Fixed self-test to authenticate to broker as tfeed, but look for messages from tsource.


  • plugins improved.
  • sr_winnow fixed.
  • stop printing passwords in log files.
  • beginnings of flow_test implemented. ( self-testing configuration with multiple components fed.)


  • something about log message settings and permissions.
  • reviewing log message generation (older versions too voluble.)
  • setting a plugin to None removes it.
  • moved logging mostly into plugins to make it more modular.
  • added permission of user to read own exchange.
  • added plugin examples to subscriber guide.
  • working through Michel's self-tests, trying to get them to work.
  • Added Programmer Guide.
  • sr_sender modified to use truncated exponential backoff (to avoid hammering sites when they are down.)
  • some credits.


  • documentation fixes.
  • fixed sr_audit which had been broken.
  • added 'foreground' to start/stop/status in usage statements.
  • Daluma input on sr_watch.
  • stop sr_audit from downloading rabbitmqadmin into cwd.
  • Michel retired :-)


  • for earlier releases, please consult git log.








  • first version with all components extant.
  • Build/tag process introduced.
  • until now, had just been using master branch in git.

0.0.1 * development began in 2013.

  • Initial release