On 07/06/2017 01:07 PM, Ilias Stamatis wrote:
Hello,
A desire had been expressed to get rid of referint plugin's logfile:
https://pagure.io/389-ds-base/issue/49202
It finally turns out that this file is used for other purposes than
real logging.
The referint plugin currently works like that; When the delay update
is set to be more than 0 a new thread is created executing referential
integrity code every x seconds (set by delay update). When a delete or
modrdn operation happens, the plugin will write that down to its
logfile. So, every x seconds the plugin will check the logfile, see
what happened and apply the changes. Finally, it deletes the file,
thus clearing the state for the next time it reads from it.
After discussing this with William he suggested it's better to replace
the file with a queue, since the fileinvolves excess fsync / sync, and
has all kinds of potential state/race issues. Using a queue will be
much faster as well.
William went even further and suggested that we could get rid of the
async referint update completely. This probably wouldn't happen soon
though, since likely customers are using it. For now we could provide
a warning such as "we recommend you set delay to 0".
Finally, the referint-logchanges attribute does absolutely nothing. It
seems to be completely ignored by the plugin, so we could remove this
as well.
I'll start working on these changes soon.
Any thoughts or objections on the above would be welcome.
The only problem with
going to a queue is if the server goes down
unexpectedly. In such a case those RI updates would be lost.
This also brings up a different point... the RI plugin is a backend txn
plugin. If we write changes to a log, and those changes end up failing
for some reason, then there is no way to rollback the original
transaction --> breaking the backend txn plugin model.
Perhaps the log/delay should just be removed? Or ignore the log/delay
settings if the plugin is set as a backend txn plugin?
Thanks,
Ilias
_______________________________________________
389-devel mailing list -- 389-devel(a)lists.fedoraproject.org
To unsubscribe send an email to 389-devel-leave(a)lists.fedoraproject.org