]> git.ipfire.org Git - thirdparty/patchwork.git/commit
parser: Use a second query to weed out duplicate series
authorStephen Finucane <stephen@that.guru>
Sun, 1 Dec 2019 17:10:44 +0000 (17:10 +0000)
committerStephen Finucane <stephen@that.guru>
Fri, 27 Dec 2019 13:21:11 +0000 (13:21 +0000)
commitd9612cf485ad111fc73e093725142550473c2bb2
treeb49078bdb22f7a3d02e566c9632296f75e258fbe
parent9f72eb793dfb6e9d7ff54465d4b07291e9a75e38
parser: Use a second query to weed out duplicate series

Annoyingly, not all email clients properly thread emails using the
message ID fields originally specified in RFC 822 [1]. Worse, some MTAs
(cough, outlook.com, cough) actually override what the client
configures, breaking the world in the process. Realising this is an
issue, Patchwork supports threading using arbitrary metadata in addition
to the RFC 822 metadata. Specifically, it uses a combination of
submitter and list-id extracted from the headers along with the series
version and total count metadata extracted from the subject. In addition
to this, we timebox things so that two or more series that match on all
of this metadata but which are sent some time apart from each other
aren't combined by accident. This does leave one edge case - duplicate
series received within the timebox will be combined. We've resigned
ourselves to this fact on the basis that it's extremely unlikely for all
of these things to go wrong at once.

Given all the above, there should be no reason that attempting to find
series by series markers should return more than one series. The
timeboxing will prevent us grouping similar looking series by accident
and the only other reason for this to happen is because we lost a race
and we should try again.

[1] https://tools.ietf.org/html/rfc822

Signed-off-by: Stephen Finucane <stephen@that.guru>
Cc: Daniel Axtens <dja@axtens.net>
patchwork/parser.py
patchwork/tests/test_parser.py