follow up of ticket 49551 about - inconsistencies reported by repl diff tool - failure to cleanup after testcases for ticket 49043
Metadata Update from @lkrispen: - Custom field component adjusted to None - Custom field origin adjusted to None - Custom field reviewstatus adjusted to None - Custom field rhbz adjusted to https://bugzilla.redhat.com/show_bug.cgi?id=1546101 - Custom field type adjusted to None - Custom field version adjusted to None
<img alt="0001-Ticket-49591-Inconsistencies-in-complex-conflict-cas.patch" src="/389-ds-base/issue/raw/files/d227e2dcf5a426e9be40fa7f02b1bc88042c214c3c51dc48eb0f75e9700d6d44-0001-Ticket-49591-Inconsistencies-in-complex-conflict-cas.patch" />
I'm going to test your patch later today - note there are a bunch of tabs in urp_tombstone.c that will need to be removed
yes, I noticed th etabs, but they are there from a previous patch. Will cleanup before commit
Running the full 3 master test for conflict_resolve_test does not report any issues. Great!!!
But running the two master test does report a number of inconsistencies:
# py.test -vv conflict_resolve_test.py -k "TwoMaster" ---> This test fails on the memberOf test (fyi) # ds-replcheck -D "cn=directory manager" -w password -m ldap://localhost:39001 -r ldap://localhost:39002 -b dc=example,dc=com ... ... Conflict Entries ===================================================== Master Conflict Entries: 43 Replica Conflict Entries: 42 Missing Entries ===================================================== Entries missing on Replica: - nsuniqueid=0576940c-1d7011e8-82339b9f-74a2aebb,uid=test_user_1121,cn=test_container,dc=example,dc=com (Created on Master at: Thu Mar 1 16:46:15 2018) - cenotaphID=0576940c-1d7011e8-82339b9f-74a2aebb+uid=test_user_1101,cn=test_container,dc=example,dc=com (Created on Master at: Thu Mar 1 16:46:56 2018) - nsuniqueid=70c06624-1d7011e8-82339b9f-74a2aebb,cn=c0,cn=p0,cn=sub7,cn=test_container,dc=example,dc=com (Created on Master at: Thu Mar 1 16:49:28 2018) - nsuniqueid=70c0661e-1d7011e8-bc9fc0a5-56631cb4,cn=p0+nsuniqueid=70c0661e-1d7011e8-bc9fc0a5-56631cb4,cn=sub11,cn=test_container,dc=example,dc=com (Created on Master at: Thu Mar 1 16:49:37 2018) Entries missing on Master: - nsuniqueid=0576940c-1d7011e8-82339b9f-74a2aebb,uid=test_user_1101,cn=test_container,dc=example,dc=com (Created on Replica at: Thu Mar 1 16:46:15 2018) - nsuniqueid=70c06618-1d7011e8-bc9fc0a5-56631cb4,cn=c0,cn=p0,cn=sub7,cn=test_container,dc=example,dc=com (Created on Replica at: Thu Mar 1 16:49:29 2018) - nsuniqueid=70c0661e-1d7011e8-bc9fc0a5-56631cb4,cn=p0,cn=sub11,cn=test_container,dc=example,dc=com (Created on Replica at: Thu Mar 1 16:49:37 2018) - nsuniqueid=70c06624-1d7011e8-82339b9f-74a2aebb,cn=c0,nsuniqueid=70c06623-1d7011e8-82339b9f-74a2aebb,cn=p0,cn=sub7,cn=test_container,dc=example,dc=com (Created on Replica at: Thu Mar 1 16:49:28 2018)
Attaching beta version (1.3) of ds-replcheck tool
<img alt="ds-replcheck" src="/389-ds-base/issue/raw/files/4e719980f501d71478243464b9599fb44a542250f0984bdf4d5d42fd44b7a861-ds-replcheck" />
I should also mention that I actually run this command so I don't lose the instances after the test stops
DEBUGGING=true py.test conflict_resolve_test.py -k "TwoMaster"
I also used a small patch for the test case from Simon. Attaching below:
<img alt="0001-Remove-tearDown.patch" src="/389-ds-base/issue/raw/files/ab744f126ad2a4d6dc8cd29a58e5c0d51c8aec643f718bf3249aa1ed9f7f5089-0001-Remove-tearDown.patch" />
I finally understood the failure of the memberof tests. It is a consequence of two issues not related to conflicts: #49040 and #49040 If replication is enabled again we can run into a deadlock accessing the changelog and the incoming operation is aborted (#49040). Unfortunately because of #49090 there is still a conflict entry in the entry cache and the retry of the operation is creating an inconsistency.
When changing the policy to resolve deadlocks in BDB the memberof test always passed
<img alt="0001-change-deadlock-resolving-policy.patch" src="/389-ds-base/issue/raw/files/dd210a1cb8cc27d379c0935d955074d36af7de5bf83dd70ce6667094e56a628b-0001-change-deadlock-resolving-policy.patch" />
patch to change deadlock policy in test
Is this something we should be setting by default in the server? I know we are going away from BDB, but it almost seems like it should be set though. Perhaps there are performance impacts? Anyway just curious.
Ack for the test patch!
Is this something we should be setting by default in the server?
yes, that is something I also thought about, I know German has resolved some customer issues by changing the db lock policy to 6.
Our default setting is LOCK_YOUNGEST, where the thread who took the lock later is aborted, the setting "6" I chose is LOCK_MIN_WRITE, where teh thread with ten min pages write locked is aborted. In our scenario the replication thread is only reading the changelog an will now be aborted and the main operation thread can continue.
I think this could be the default since deadlocks between writing threads to the db should be prevented by the backend lock and if we would have deadlocks between a search and mod aborting the search also should be ok
Unfortunately the LOCK_MIN_WRITE can skip changes when accessing the cl is aborted and retried, I'll attach a patch which fixes this. It should probably be a different ticket though.
<img alt="0001-Do-not-skip-change-when-retrying-aborted-transaction.patch" src="/389-ds-base/issue/raw/files/2e823a261e54cb8cbd025030796954003a4a7f4db9f40a5cc09f67bea3ebc0f0-0001-Do-not-skip-change-when-retrying-aborted-transaction.patch" />
The urp_tombstone file contains lot of tabs, I would like to avoid a mixture of formatting and fixiing patches (which will then be harder to find).
I'd like to commit the attached formatting patch (no code change) first and then rebase my fixes
<img alt="0001-missing-clang-formatting-in-urp_tombstone.patch" src="/389-ds-base/issue/raw/files/5d97f7b265b58c458a816583f582de828d60efaba255ea046b5c7228ff94ab8e-0001-missing-clang-formatting-in-urp_tombstone.patch" />
Yes please commit this patch! So these "tabs" were recently added from one of the previous patches for this ticket?
no, they are there since 2017/09/05 from the commit for 49043, maybe I did mistake when rebasing the original conflict patches to the formatted code base
To ssh://pagure.io/389-ds-base.git 5e3f428..02a8def master -> master
To ssh://pagure.io/389-ds-base.git ce88dd0..81a9d75 389-ds-base-1.3.7 -> 389-ds-base-1.3.7
Metadata Update from @lkrispen: - Issue assigned to lkrispen
Metadata Update from @mreynolds: - Issue set to the milestone: 1.3.7.0
improved version of the consistency patch <img alt="0001-Ticket-49591-Improve-conflict-consistency-in-complex.patch" src="/389-ds-base/issue/raw/files/a99fcb71017afa311827fdf3e843ebfa2a9d41465c07dfe0fb2c72d56e9aba57-0001-Ticket-49591-Improve-conflict-consistency-in-complex.patch" />
@lkrispen - what is the state of this issue? Was the patch above needed?
Metadata Update from @mreynolds: - Issue set to the milestone: 1.4.2 (was: 1.3.7.0)
These patches were addressing some artificial test scenarios. The conflict code is released for some time and we didn't run into these issues. Adding the patch could introduce new behaviour and risks and so I would suggest to say this is a corner case and close as WONTFIX
Metadata Update from @mreynolds: - Issue close_status updated to: wontfix - Issue status updated to: Closed (was: Open)
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 issue has been cloned to Github and is available here: - https://github.com/389ds/389-ds-base/issues/2650
If you want to receive further updates on the issue, please navigate to the github issue and click on subscribe button.
subscribe
Thank you for understanding. We apologize for all inconvenience.
Login to comment on this ticket.