[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