The use of dsdb_replace() in dsdb_schema_set_indices_and_attributes() was corrected by ec9b1e881c3eef503d6b4b311594113acf7d47d8 but this did not consider removal of attributes. It also did not assume a global read lock, which we now have.
The impact is that an attribute like @IDXGUID or @INDEXVERSION is not removed despite being detected as needing removal, causing a reindex on every db load.
Created attachment 13580 [details]
proposed patch for master
Here is what I proposed for master. I've tested this backported to 4.7.
Can you send the patch for master to the list?
Created attachment 13604 [details]
patch for 4.7 cherry-picked from master
Sorry for the delay in proposing the backport before 4.7
I've just pushed to fix without the test with the review from firstname.lastname@example.org.
We can push the test later, but it's not critical for 4.7.0.
But we need to remove the knownfail hunk.
Pushed to autobuild-v4-7-test
I did actually check it with the tests, but either way I'm sure we can sort the rest out after 4.7.
Test pushed to autobuild-v4-7-test
(In reply to Stefan Metzmacher from comment #8)
Pushed to v4-7-test