Prevent duplicate aliases due to wrongly altered pid

Created on 4 June 2019, over 5 years ago
Updated 30 January 2023, almost 2 years ago

Problem/Motivation

When migrating aliases from D* to D8, with the "update" option (update all previously-imported content in addition to importing new content), we ended up with duplicates in table `url_alias` (same `source`, `alias`, `langcode`, with different `pid`).

The issue happens when using the core's destination plugin `url_alias`, which triggers a Drupal\Core\Path\AliaslStorage::save(). In case of editing a record with a known pid, this given pid is replaced by mistake.

Proposed resolution

In Drupal\Core\Path\AliaslStorage::save(), simply not assigning to `$pid` the result of the update query execution will prevent theses pid changes and alias duplicates:

$query = $this->connection->update(static::TABLE)
  ->fields($fields)
  ->condition('pid', $pid);
$pid = $query->execute();

would become:

$query = $this->connection->update(static::TABLE)
  ->fields($fields)
  ->condition('pid', $pid);
$query->execute();
πŸ› Bug report
Status

Needs work

Version

10.1 ✨

Component
PluginΒ  β†’

Last updated 3 days ago

Created by

πŸ‡¨πŸ‡­Switzerland Teastwood

Live updates comments and jobs are added and updated live.
Sign in to follow issues

Comments & Activities

Not all content is available!

It's likely this issue predates Contrib.social: some issue and comment data are missing.

  • The Needs Review Queue Bot β†’ tested this issue. It either no longer applies to Drupal core, or fails the Drupal core commit checks. Therefore, this issue status is now "Needs work".

    Apart from a re-roll or rebase, this issue may need more work to address feedback in the issue or MR comments. To progress an issue, incorporate this feedback as part of the process of updating the issue. This helps other contributors to know what is outstanding.

    Consult the Drupal Contributor Guide β†’ to find step-by-step guides for working with issues.

Production build 0.71.5 2024