[PATCH 7/9] parser: avoid an unnecessary UPDATE of Person

Daniel Axtens dja at axtens.net
Fri Feb 23 00:46:41 AEDT 2018


Andrew Donnellan <andrew.donnellan at au1.ibm.com> writes:

> On 22/02/18 01:17, Daniel Axtens wrote:
>> Analysis of SQL statements showed that when parsing an email, the row
>> for the Person who sent the email was always getting updated. This is
>> because the test for updating it only checks if the incoming mail has
>> *a* name attached to the email address, and not if it has a new name.
>> Django is not smart enough to figure that out, and so unconditionally
>> UPDATEs the model when asked to save.
>> 
>> Give it a hand - only update the model and save it if the new name is
>> in fact different.
>> 
>> Signed-off-by: Daniel Axtens <dja at axtens.net>
>
> Reviewed-by: Andrew Donnellan <andrew.donnellan at au1.ibm.com>
>
> Though, just the != test should be sufficient here without the not-null test

Wouldn't that mean a new null name would overwrite a previously saved name?
Regards,
Daniel
>
>> ---
>>   patchwork/parser.py | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>> 
>> diff --git a/patchwork/parser.py b/patchwork/parser.py
>> index 1f3b3dd8901f..3d40b74375e0 100644
>> --- a/patchwork/parser.py
>> +++ b/patchwork/parser.py
>> @@ -349,7 +349,7 @@ def get_or_create_author(mail):
>>           # we lost the race to create the person
>>           person = Person.objects.get(email__iexact=email)
>> 
>> -    if name:  # use the latest provided name
>> +    if name and name != person.name:  # use the latest provided name
>>           person.name = name
>>           person.save()
>> 
>
> -- 
> Andrew Donnellan              OzLabs, ADL Canberra
> andrew.donnellan at au1.ibm.com  IBM Australia Limited


More information about the Patchwork mailing list