v2.1 Series (“Eolienne”)

v2.1.0-rc1

Prelude

The key part of this release is a major performance fix - denormalising the project field into patch model so that counting a project’s patches doesn’t require a JOIN. This requires a migration and so isn’t suitable for a stable backport. Event listing in the API has also been sped up by refactoring the queries.

This release also includes the feature development that had accrued in the mean time and numerous bug fixes.

The REST API version has been bumped to 1.1.

New Features

  • Allow list filtering into multiple projects (and email dropping) based on subject prefixes. Enable by specifying a regular expression which needs to be matched in the subject on a per-project basis (field subject_match). Project with empty subject_match field (and matching list_id) serves as a default in case of no match.

Known Issues

  • Series parsing in the presence of parallel mail processing is still unreliable.

Upgrade Notes

  • Django 1.6 and 1.7 are no longer supported. These are no longer supported upstream and most distributions provide a newer version.
  • django-filter 0.11 is no longer supported. This was only used with Django 1.6 and 1.7 and is not compatible with any version supported by Patchwork.

Bug Fixes

  • A nasty race condition bug that could cause patches in a series to be dropped has been fixed.

API Changes

  • Links to related comments are now exposed when checking patch and cover letter details. The comments themselves are then available via /patches/{patchID}/comments and /covers/{coverID}/comments endpoints. Please note that comments are available only since API version 1.1
  • Cover letters embedded in other responses now provide an mbox link, which can be used to download the cover letter and associated metadata (tags) in mbox format.
  • Series, patches and cover letters can be filtered by submitter using email addresses. For example:

    $ curl /covers/?submitter=stephen@that.guru
    
  • Bundles can be filtered by owner, patches by delegate and checks by user using username. For example:

    $ curl /bundles/?owner=stephenfin
    
  • Filters can now be specified multiple times. For example:

    $ curl /patches/?state=under-review&state=rfc
    

    This operates as a logical OR: it will retrieve patches that are either Under Review or RFC.

  • The /project endpoint now exposes a subject_match attribute.
  • Messages headers that use the same key, such as Received: are now combined into a list. Previously only one of the values would be output. This affects the /covers and /patches endpoints.

Other Notes

  • The patch ID on the patch detail page can now be clicked to copy it. This is similar to what we already do on the patch list page.
  • mbox files now contain all headers from the original email. This also means the Subject: header included will contain the original subject and not the parsed Patchwork’s version.
  • Unify timezones used – use UTC for both email submissions and internal events. Please note that this change doesn’t modify already existing data so in case the instance’s timezone is UTC+XX, events will appear out of order (as if they happened earlier) for XX hours in the events API feed.