[PATCH] Fix server side DRSUAPI_DRS_GET_ANC handling (bug #12398)
Stefan Metzmacher
metze at samba.org
Wed Dec 14 11:35:46 UTC 2016
Hi Bob,
> Garming & I have extended the tests a bit more and gotten them all to
> pass against Samba. There are two inconsistencies with Windows: Firstly,
> when two DNs aren't ancestors/children of each other, they are sorted
> differently, which has no consequence as far as we can see. Secondly, we
> still don't handle max_objects=0 the same way; Windows ignores this
> while we don't replicate any objects.
>
> In addition to the expected issue of the conflict between
> DRSUAPI_DRS_GET_ANC and DRSUAPI_DRS_CRITICAL_ONLY, we found that the
> uptodateness_vector wasn't considered when replicating links. This meant
> that, in some cases, unnecessary links were being replicated.
>
> We haven't made a test specifically for moving a critical object away
> from a critical parent to be under a non-critical parent as described in
> the bug report, however we have reasoned that this is merely a
> consequence of the critical object being a child of a non-critical
> object, rather than it being a consequence of the move.
>
> It's just about the end of the workday for us, so it's likely we'll have
> it cleaned up in git tomorrow. Current work is still in
> http://git.catalyst.net.nz/gw?p=samba.git;a=shortlog;h=refs/heads/anctests
Thanks for the update.
A few comments:
- can you take the full AbstractLink changes including the __eq__() change?
- I'd really like to avoid adding the ancestors within
getncchanges_collect_objects
as that's not how it's done in the documentation. The main problem
I have with this is site_res_cmp_anc_order, which is the main reason
why we need the r->out.ctr->ctr6.new_highwatermark.reserved_usn += 1;
hack, we should only have
r->out.ctr->ctr6.new_highwatermark.tmp_highest_usn
incremented to a number that's part of the replicated changes
(without the ancestors) the added ancestors should not impact
the new_highwatermark.
I think it's also the reason why you see the different sorting
when two DNs aren't ancestors/children of each other.
- In case we don't implement the GET_ANC handling for link targets
and/or the DRSUAPI_DRS_GET_TGT logic, we should at least
implement the changes with that logic in mind. Then we can
also stop adding all links at the end of the cycle.
Anyway thanks for working on this!
metze
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: OpenPGP digital signature
URL: <http://lists.samba.org/pipermail/samba-technical/attachments/20161214/22708d8c/signature.sig>
More information about the samba-technical
mailing list