Validation on upgradeprovision patches needed
Matthieu Patou
mat at samba.org
Thu Jul 15 14:07:59 MDT 2010
Andrew,
Do you have any pb with those patches ?
On 14/07/2010 00:29, Matthieu Patou wrote:
> On 13/07/2010 03:04, Andrew Bartlett wrote:
>> On Tue, 2010-07-13 at 02:58 +0400, Matthieu Patou wrote:
>>> On 13/07/2010 02:41, Andrew Bartlett wrote:
>>>> On Tue, 2010-07-13 at 01:16 +0400, Matthieu Patou wrote:
>>>>> Hello Andrews,
>>>>>
>>>>> As metze and Jelmer are on vacation,
>>>>> can one of you had final look on
>>>>> http://git.samba.org/?p=mat/samba.git;a=shortlog;h=refs/heads/upgradeprovision-review
>>>>>
>>>>> and push it if it's ok.
>>>>>
>>>>> I normally addressed the remarks of Matthias and those made by
>>>>> metze on IRC.
>>>> These look good, but I hope you won't mind if make some comments:
>>>>
>>>> In s4 dsdb: Use the changereplmetadata control
>>>> http://git.samba.org/?p=mat/samba.git;a=commitdiff;h=351ecebb1b294012bc311ff9b38e24a2b6cb77e0
>>>>
>>>>
>>>> You do a check for
>>>> + objectclass_el = ldb_msg_find_element(res->msgs[0],
>>>> "objectClass");
>>>> + if (is_urgent&&
>>>> replmd_check_urgent_objectclass(objectclass_el,
>>>> +
>>>> situation)) {
>>>> + *is_urgent = true;
>>>> + }
>>>>
>>>> In both arms of the if (rmd_is_provided) statement.
>>>>
>>>> But in any case, if we are offline doing an upgradeprovision, then it
>>>> isn't urgent to replicate anything.
>>> Well even though this control is used only by upgradeprovision right
>>> now
>>> it's better to have this just in case ?
>>> This came form the fact that I kept in this branch of the test almost
>>> the same logic.
>> That is quite reasonable. Perhaps then it would be better to push it
>> out of the if() statement?
> Well that's not so easy, because before the if we do not have the res
> variable which is the result of the ldb_search.
> So pushing it after the if looks like at a first glance like a good
> choice but in the else part (so if we do not have the replace_metadata
> control)
> there is this:
>
> for (i=0; i<msg->num_elements; i++) {
> struct ldb_message_element *old_el;
> old_el = ldb_msg_find_element(res->msgs[0],
> msg->elements[i].name);
> ret = replmd_update_rpmd_element(ldb, msg,
> &msg->elements[i], old_el, &omd, schema, seq_num,
>
> our_invocation_id, now);
> if (ret != LDB_SUCCESS) {
> return ret;
> }
>
> if (is_urgent && !*is_urgent && (situation ==
> REPL_URGENT_ON_UPDATE)) {
> *is_urgent =
> replmd_check_urgent_attribute(&msg->elements[i]);
> }
>
> }
>
> So putting
>
> if (is_urgent&&
> replmd_check_urgent_objectclass(objectclass_el,
>
> situation)) {
> *is_urgent = true;
> }
>
> After the if would change the logic, so I guess it's better to leave
> it like that.
>>>> In s4 upgradeprovision: do not copy RID Set it's automaticaly
>>>> created by
>>>> the RID manager
>>>> http://git.samba.org/?p=mat/samba.git;a=commitdiff;h=48773341a19e94ac116bc2aa5327d595c48c4212
>>>>
>>>> + try:
>>>> + if str(reference[0].get("cn")) == "RID Set":
>>>> + skip = True
>>>>
>>>> Is this the best way to identify the RID Set?
>>>>
>>> obviously objectClass: rIDSet is much better
>> Thanks,
> So I propose something like this:
>
> if str(reference[0].get("cn")) == "RID Set":
> - skip = True
> + for klass in reference[0].get("objectClass"):
> + if str(klass).lower == "ridset":
> + skip = True
>
>
> I pushed my upgradeprovision-review branch.
>
> It pass make tests on my computer.
>
> Please push it if you think it's ok.
>
> Matthieu.
>
>
--
Matthieu Patou
Samba Team http://samba.org
More information about the samba-technical
mailing list