diff mbox series

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

Message ID 20180224145020.15181-8-dja@axtens.net
State Accepted
Headers show
Series Tools and fixes for parallel parsing | expand

Checks

Context Check Description
dja/snowpatch-0_1_0 success master/apply_patch Successfully applied
dja/snowpatch-snowpatch_job_snowpatch-patchwork success Test snowpatch/job/snowpatch-patchwork on branch master

Commit Message

Daniel Axtens Feb. 24, 2018, 2:50 p.m. UTC
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.

Reviewed-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
Signed-off-by: Daniel Axtens <dja@axtens.net>
---
 patchwork/parser.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Stephen Finucane Feb. 25, 2018, 12:26 p.m. UTC | #1
On Sun, 2018-02-25 at 01:50 +1100, 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.

Reviewed-by: Stephen Finucane <stephen@that.guru>
diff mbox series

Patch

diff --git a/patchwork/parser.py b/patchwork/parser.py
index 885c20b3df4f..9502162be90c 100644
--- a/patchwork/parser.py
+++ b/patchwork/parser.py
@@ -349,7 +349,7 @@  def get_or_create_author(mail):
                                           defaults={'name': name,
                                                     'email': email})[0]
 
-    if name:  # use the latest provided name
+    if name and name != person.name:  # use the latest provided name
         person.name = name
         person.save()