Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deferred messages within a transaction not retried #2420

Open
jsiwrk opened this issue Jan 20, 2018 · 1 comment

Comments

@jsiwrk
Copy link
Member

commented Jan 20, 2018

Expected behavior

If an output plugin confirms individual messages in a transaction with RS_RET_DEFER_COMMIT, and one of the messages in the transaction fails, one would expect that the previous messages are also retried, not only the one that has caused the transaction to fail.

This is what I understand from the documentation:
http://www.rsyslog.com/doc/v8-stable/development/dev_oplugins.html

I assume this is the correct interpretation: otherwise, what would be the difference between confirming messages with RS_RET_OK and RS_RET_DEFER_COMMIT inside a transaction?

Actual behavior

Deferred messages (confirmed with RS_RET_DEFER_COMMIT) in a transaction are not retried if a later message in the transaction fails (with RS_RET_SUSPENDED). Only the failed message is retried.

Note: if the transaction fails during commit (i.e. the plugin returns RS_RET_SUSPENDED in 'endTransaction'), then the messages in the transaction are correctly retried.

Steps to reproduce the behavior

Use the automated test 'omprog-transactions-failed-messages.sh' proposed for merge in PR #1992, modifying the test as explained in the TODO comment (to reproduce the issue, simply remove the two lines mentioned in the TODO).

Environment

  • rsyslog version: 8.32.0
  • platform: Ubuntu 16.04

jsiwrk added a commit to jsiwrk/rsyslog that referenced this issue Jun 3, 2018

omprog: simplify 'plugin-with-feedback.py' example
Make the skeleton easier to understand by removing transaction support.
Also, transaction failures did not work as explained in the skeleton,
because of issue rsyslog#2420. In the future, a 'plugin-with-transactions.py'
example can be added, ideally once the issue is solved.
@rgerhards

This comment has been minimized.

Copy link
Member

commented Sep 4, 2018

Just FYI: it's on my todo list, hope to be able to get to it some day...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
2 participants
You can’t perform that action at this time.