#50288 Ticket 49561 - MEP plugin, upon direct op failure, will delete twice the same managed entry
Closed 3 years ago by spichugi. Opened 5 years ago by tbordaz.
tbordaz/389-ds-base ticket_49561  into  master

@@ -2471,6 +2471,11 @@ 

      slapi_log_err(SLAPI_LOG_TRACE, MEP_PLUGIN_SUBSYSTEM,

                    "--> mep_add_post_op\n");

  

+     /* Just bail if we aren't ready to service requests yet. */

+     if (!mep_oktodo(pb)) {

+         return SLAPI_PLUGIN_SUCCESS;

+     }

+ 

      /* Reload config if a config entry was added. */

      if ((sdn = mep_get_sdn(pb))) {

          if (mep_dn_is_config(sdn)) {
@@ -2543,6 +2548,11 @@ 

      slapi_log_err(SLAPI_LOG_TRACE, MEP_PLUGIN_SUBSYSTEM,

                    "--> mep_del_post_op\n");

  

+     /* Just bail if we aren't ready to service requests yet. */

+     if (!mep_oktodo(pb)) {

+         return SLAPI_PLUGIN_SUCCESS;

+     }

+ 

      /* Reload config if a config entry was deleted. */

      if ((sdn = mep_get_sdn(pb))) {

          if (mep_dn_is_config(sdn))

Bug Description:
When a failure occurs during betxn_post plugin callback, the betxn_post plugins are called again.
This is to process some kind of undo action (for example usn or dna that manage counters).

If MEP plugin is called for a managing entry, it deletes the managed entry (that become a tombstone).
If later an other betxn_postop fails, then MEP is called again.
But as it does not detect the operation failure (for DEL and ADD), then it tries again
to delete the managed entry that is already a tombstone.

Fix Description:
The MEP betxn_post plugin callbacks (ADD and DEL) should catch the operation failure
and return.
It is already in place for MODRDN and MOD.

https://pagure.io/389-ds-base/issue/49561

Reviewed by: ?

Platforms tested: F28

Flag Day: no

Doc impact: no

Makes sense to me. It passes the latest version of betxn_test.py. Ack

rebased onto c7da16f

5 years ago

Pull-Request has been merged by tbordaz

5 years ago

389-ds-base is moving from Pagure to Github. This means that new issues and pull requests
will be accepted only in 389-ds-base's github repository.

This pull request has been cloned to Github as issue and is available here:
- https://github.com/389ds/389-ds-base/issues/3347

If you want to continue to work on the PR, please navigate to the github issue,
download the patch from the attachments and file a new pull request.

Thank you for understanding. We apologize for all inconvenience.

Pull-Request has been closed by spichugi

3 years ago
Metadata