Problem/Motivation

This issue started to address a problem where a migration was aborting, after 2 hours, on d6_menu_links. @lostkangaroo noticed that children were being migrated before the parent. The initial patch which ordered the query on depth and threw and exception if the link was not the first was being used successfully.

Later on an IRC discussion (#10), it was suspected that paths are not being migrated as expected and that the plugin should be more defensive. Which is now the focus of this issue. That discussion resulted in adding code to rebuild the routes, if needed, validate the path, and throw an exception if the path is not routed.

We realized on validation of paths, it tried to continue migrating them even if they fail.

In the meantime #2816857: Process plugin link_uri shouldn't be in d6 namespace got in, which uses Url::from Uri, which will validate the path.

Proposed resolution

Throw an exception, which gets converted to a message, and doesn't stop the migration and discard the link if it fails validation.

--- Original Issue Summary ---

All,

I am now able to reproduce an error wherein drupal migrate-upgrade aborts at about the 2-hour mark. The error.

Importing d6_menu_links
PHP Fatal error:  Call to a member function getUrl() on null in /var/www/html/core/modules/menu_link_content/src/Entity/MenuLinkContent.php on line 83
Drush command terminated abnormally due to an unrecoverable error.                  [error]
Error: Call to a member function /src/Entity/MenuLinkContent.phgetUrl() on null in /var/www/html/core/modules/menu_link_content p, line 83

I am putting this in as a support request as I am hardly sure that it has anything specific to do with migrate_upgrade since the error seems to do only with the menu_link_content element/module. I don't find any reference to a bug report or issue about this. Where would you take this if you were me?

Secondarily, I figured I would modify the migration list to avoid any d6.menu.* migrations to see if I could get it to complete. I figured I would just modify the /migrate_upgrade/migrate.config.yml but that seemed to have no effect (as a test I reduced that file to 10 migrations yet it is clearly running all of them right now).

drush migrate-manifest is deprecated but still available in migrate_tools. migrate_upgrade doesn't appear to have a parameter to specifiy a manifest. What should I be editing to modify/limit migrations by migrate_upgrade? Or should I be using a mix of migrate_tools and migrate_upgrade?

Thanks for the attention and patience!

Jim

CommentFileSizeAuthor
#71 interdiff.txt954 bytesjoelpittet
#71 2551727-71.patch12.28 KBjoelpittet
#65 interdiff.txt2.97 KBquietone
#65 menu_link_migrations-2551727-65.patch12.25 KBquietone
#62 interdiff-60-62.txt620 bytesjofitz
#62 menu_link_migrations-2551727-62.patch12.29 KBjofitz
#60 interdiff-56-60.txt2.84 KBjofitz
#60 menu_link_migrations-2551727-60.patch12.34 KBjofitz
#56 interdiff-48-56.txt2.14 KBjofitz
#56 menu_link_migrations-2551727-56.patch14.51 KBjofitz
#48 interdiff-46-48.txt1.82 KBjofitz
#48 menu_link_migrations-2551727-48.patch13.6 KBjofitz
#46 interdiff.txt23.71 KBquietone
#46 menu_link_migrations-2551727-46.patch11.78 KBquietone
#44 interdiff.txt778 bytesquietone
#44 menu_link_migrations-2551727-44.patch14.36 KBquietone
#42 interdiff.txt2.48 KBquietone
#42 menu_link_migrations-2551727-42.patch14.37 KBquietone
#39 menu_link_migrations-2551727-39.patch12.71 KBimiksu
#39 interdiff.txt1.08 KBimiksu
#35 menu_link_migrations-2551727-35.patch12.77 KBquietone
#29 interdiff-menu_link_migrations-25-29.txt5.3 KBquietone
#29 menu_link_migrations-2551727-29.patch8.32 KBquietone
#25 menu_link_migrations-2551727-25.patch9.88 KBquietone
#25 interdiff-menu_link_migrations-21-25.txt8.31 KBquietone
#21 2551727-21.interdiff.txt1.04 KBneclimdul
#21 menu_link_migrations-2551727-21.patch4.25 KBneclimdul
#17 2551727-17.patch4.05 KBphenaproxima
#12 2551727-12.patch2.75 KBphenaproxima
#10 2551727-10.patch2.75 KBphenaproxima
#5 d6_menu_links_migration-2551727-5.patch1.17 KBlostkangaroo

Comments

geste created an issue. See original summary.

  • mikeryan committed f515e3d on 8.x-1.x
    Issue #2551727 by mikeryan: Remove unused manifests
    
mikeryan’s picture

Project: Migrate Upgrade » Drupal core
Version: 8.x-1.x-dev » 8.0.x-dev
Component: Code » migration system
Category: Support request » Bug report

migrate_upgrade has nothing specific to menu links, so I'm sure the root of that problem is in the core menu link migration support. Moving to the core issue queue.

The manifests are no longer used, I've now removed them, thanks for pointing that out.

To customize the migrations to import, run the migrate-upgrade command with --configure-only which creates all the migrations from the templates - then you can use migrate-import to selectively run migrations.

In terms of the d6_menu_links problem, if you could narrow it down by running only d6_menu and d6_menu_links, and maybe provide info on the links it's attempting to migrate, that would help.

Thanks.

mikeryan’s picture

Title: Migrate upgrade aborts with Drush/PHP fatal error » d6_menu_links migration aborts with getUrl() error
lostkangaroo’s picture

Status: Active » Needs review
StatusFileSize
new1.17 KB

We have been using this patch locally at APQC for about a month to solve this issue. We noticed that children were attempting to be migrated before the parent causing the error since the parent doesn't exist on the destination. By ordering on depth we solved this somewhat but would welcome some more test runs in different environments to see if this does in fact fix this issue.

geste’s picture

@mikeryan @lostkangaroo

Thank you. Much improved quality-of-Monday here!

Jim

geste’s picture

@lostkangaroo

Your patch worked and a full migration of D6 site completed without error. So I did not go back and selectively migrate the d6_menu and d6_menu_links.

Pages/nodes not rendering yet but I have a usable /admin, so time to bone up on more selective, scripted use of migrate-upgrade/import.

I reiterate: This is awesome! :)

Jim

lostkangaroo’s picture

Status: Needs review » Reviewed & tested by the community

In light of #7 lets go RTBC with this.

webchick’s picture

Status: Reviewed & tested by the community » Needs work
Issue tags: +Needs tests
+++ b/core/modules/menu_link_content/src/Entity/MenuLinkContent.php
@@ -80,7 +80,11 @@ public function getTitle() {
+    if (!$link) {
+      throw new \RuntimeException('wtf');
+    }

Um. :)

Also, let's get some test coverage for this.

phenaproxima’s picture

Status: Needs work » Needs review
StatusFileSize
new2.75 KB

After discussing with @neclimdul and @lostkangaroo on IRC, here's a patch that may help. My suspicion is that paths are not being migrated in as expected, and certain menu links are therefore imported with invalid paths. It's a shot in the dark, though.

This patch makes d6_menu_links more defensive, validating link paths and skipping rows if they fail.

Status: Needs review » Needs work

The last submitted patch, 10: 2551727-10.patch, failed testing.

phenaproxima’s picture

Status: Needs work » Needs review
StatusFileSize
new2.75 KB

Forgot a semicolon.

Status: Needs review » Needs work

The last submitted patch, 12: 2551727-12.patch, failed testing.

The last submitted patch, 12: 2551727-12.patch, failed testing.

The last submitted patch, 10: 2551727-10.patch, failed testing.

lostkangaroo’s picture

Added patch #12 to our long run dataset lets see what we get.

phenaproxima’s picture

Title: d6_menu_links migration aborts with getUrl() error » Menu link migrations should be defensive
Status: Needs work » Needs review
Issue tags: -Needs tests
StatusFileSize
new4.05 KB

This should pass the tests. #12 can be considered the fail patch.

Part of the issue here is that the d6_menu_links and d7_menu_links migrations don't bother to validate if the path being migrated exists at all. This here patch makes both migrations more defensive -- it beefs up the internal_uri process plugin so that it does a lookup of the link's path, allowing the row to be skipped if the path doesn't exist.

neclimdul’s picture

+++ b/core/modules/menu_link_content/migration_templates/d6_menu_links.yml
@@ -24,9 +24,13 @@ process:
-    plugin: internal_uri
-    source:
-      - link_path
+    -
+      plugin: internal_uri
+      source:
+        - link_path
+    -
+      plugin: skip_on_empty
+      method: row

+++ b/core/modules/menu_link_content/migration_templates/d7_menu_links.yml
@@ -24,9 +24,13 @@ process:
-    plugin: internal_uri
-    source:
+    -
+      plugin: internal_uri
+      source:
       - link_path
+    -
+      plugin: skip_on_empty
+      method: row

+++ b/core/modules/menu_link_content/src/Plugin/migrate/process/d6/InternalUri.php
@@ -18,18 +22,70 @@
-    list($path) = $value;
+    // If the routes have not yet been rebuilt, rebuild them.
+    if (static::$isRouterRebuilt == FALSE) {
+      $this->routerBuilder->rebuild();
+      static::$isRouterRebuilt = TRUE;
+    }
 
+    list($path) = $value;
     if (parse_url($path, PHP_URL_SCHEME) === NULL) {
-      return 'internal:/' . $path;
+      if ($this->pathValidator->getUrlIfValidWithoutAccessCheck($path)) {
+        return 'internal:/' . $path;
+      }
+    }
+    else {
+      return $path;
     }
-    return $path;

I don't like this approach because it leaves no reference for why the row was skipped. This leaves migrators to wallow through code looking for how they can fix their migration.

mgifford queued 17: 2551727-17.patch for re-testing.

neclimdul’s picture

heh, pifr isn't comming back on that one. requeued in drupalci

neclimdul’s picture

StatusFileSize
new4.25 KB
new1.04 KB

what about this?

phenaproxima’s picture

I don't really have RTBC privileges for this patch, but +1 for RTBC.

neclimdul’s picture

Status: Needs review » Needs work
Issue tags: +Needs tests

I'd RTBC as well but we didn't add any tests...

chx’s picture

Why are we using an array of sources instead of just source: link_path...? Odd. Get certainly has $properties = is_string($source) ? array($source) : $source; so it doesn't care a lot.

quietone’s picture

Removed the array of sources as per #24. Added some tests.

There is a failure in D7, from a pre existing test, related to the link 'admin/content/book'. I suspect that the link is now found to be invalid, after all the book module is not installed. Perhaps, a different custom link should be created and added to the fixture.

quietone’s picture

Status: Needs work » Needs review

Status: Needs review » Needs work

The last submitted patch, 25: menu_link_migrations-2551727-25.patch, failed testing.

benjy’s picture

  1. +++ b/core/modules/menu_link_content/src/Tests/Migrate/d6/MigrateMenuLinkTest.php
    @@ -76,6 +78,27 @@ public function testMenuLinks() {
    +    foreach ($this->migration->getIdMap()->getMessageIterator() as $message_row) {
    +      $count++;
    
    +++ b/core/modules/menu_link_content/src/Tests/Migrate/d7/MigrateMenuLinkTest.php
    @@ -112,6 +112,24 @@ public function testMenuLinks() {
    +    foreach ($this->migration->getIdMap()->getMessageIterator() as $message_row) {
    +      if (preg_match('/The path \"(.*)\" failed validation and was dropped./', $message_row->message, $matches)) {
    

    How come only the D7 version needs the regex when iterating the map table?

  2. +++ b/core/modules/menu_link_content/src/Tests/Migrate/d6/MigrateMenuLinkTest.php
    @@ -76,6 +78,27 @@ public function testMenuLinks() {
    \ No newline at end of file
    

    Missing new line.

  3. +++ b/core/modules/menu_link_content/src/Tests/Migrate/d7/MigrateMenuLinkTest.php
    @@ -129,5 +147,4 @@ public function testUndefinedLinkTitle() {
    diff --git a/d6_menu_links.yml b/d6_menu_links.yml
    
    +++ b/d6_menu_links.yml
    @@ -0,0 +1,52 @@
    diff --git a/d7_menu_links.yml b/d7_menu_links.yml
    

    I think these were added by accident.

quietone’s picture

Status: Needs work » Needs review
StatusFileSize
new8.32 KB
new5.3 KB

1. The D7 dump contains several invalid links and thus several messages are in the message table while the D6 dump doesn't have any invalid links. An invalid link needs to be inserted in the source. But I changed them to be the same. That way, the next person doesn't have to figure out why they are different. And it wouldn't hurt if the D6 test looped through the message table.
2. Fixed
3. Fixed

Also, changed the source for the D7 customized link test from 'admin/content/link' to 'admin/config/system/site-information'. This ensures the link is valid for testing in d7/MigrateMenuLinkTest.php.

benjy’s picture

OK, this looks good, i'd mark RTBC but do you think we should get #2648996: Optimize menu link migration in first which is going to conflict and is already RTBC?

quietone’s picture

Yes, agreed.

Version: 8.0.x-dev » 8.1.x-dev

Drupal 8.0.6 was released on April 6 and is the final bugfix release for the Drupal 8.0.x series. Drupal 8.0.x will not receive any further development aside from security fixes. Drupal 8.1.0-rc1 is now available and sites should prepare to update to 8.1.0.

Bug reports should be targeted against the 8.1.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.2.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

mikeryan’s picture

Status: Needs review » Postponed
Issue tags: -Needs tests
Related issues: +#2648996: Optimize menu link migration
quietone’s picture

Status: Postponed » Needs work
Issue tags: +Needs reroll

#2648996: Optimize menu link migration is in so no longer postponed.

quietone’s picture

Issue tags: -Needs reroll
StatusFileSize
new12.77 KB

Rerolled.

quietone’s picture

Status: Needs work » Needs review

Version: 8.1.x-dev » 8.2.x-dev

Drupal 8.1.9 was released on September 7 and is the final bugfix release for the Drupal 8.1.x series. Drupal 8.1.x will not receive any further development aside from security fixes. Drupal 8.2.0-rc1 is now available and sites should prepare to upgrade to 8.2.0.

Bug reports should be targeted against the 8.2.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.3.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

mikeryan’s picture

Status: Needs review » Needs work
+++ b/core/modules/menu_link_content/migration_templates/menu_links.yml
@@ -21,9 +21,12 @@ process:
-    plugin: link_uri
-    source:
-      - link_path
+    -
+      plugin: link_uri
+      source: link_path
+    -
+      plugin: skip_on_empty
+      method: row

+++ b/core/modules/menu_link_content/src/Plugin/migrate/process/d6/LinkUri.php
@@ -77,6 +110,10 @@ public function transform($value, MigrateExecutableInterface $migrate_executable
+      else {
+        $migrate_executable->saveMessage(SafeMarkup::format('The path "@path" failed validation and was dropped.', ['@path' => $value]));
+        return NULL;
+      }

Rather than reaching out to the executable to save a message (and add an extra step to the pipeline), it would be simpler (and consistent with how error handling is meant to work) to just throw a MigrateException for the invalid path.

imiksu’s picture

StatusFileSize
new1.08 KB
new12.71 KB

Now throws MigrateException.

imiksu’s picture

Status: Needs work » Needs review

Status: Needs review » Needs work

The last submitted patch, 39: menu_link_migrations-2551727-39.patch, failed testing.

quietone’s picture

Status: Needs work » Needs review
StatusFileSize
new14.37 KB
new2.48 KB

Changed unit test to handle the exceptions.

Status: Needs review » Needs work

The last submitted patch, 42: menu_link_migrations-2551727-42.patch, failed testing.

quietone’s picture

Status: Needs work » Needs review
StatusFileSize
new14.36 KB
new778 bytes

Ah, I'm all thumbs today.

heddn’s picture

Status: Needs review » Needs work
Issue tags: +Needs issue summary update

Let's update the issue summary. I'd like to see the new test added in #42 converted to a kernel test so we can call an actual PathValidator service. Otherwise, we aren't really seeing what types of errors could get thrown from that thing when we use a mock.

quietone’s picture

Issue summary: View changes
Status: Needs work » Needs review
Issue tags: -Needs issue summary update
StatusFileSize
new11.78 KB
new23.71 KB

Converted the plugin test to a Kernel test. Removed the changes to the test fixture that aren't needed anymore and the tests for map messages since an exception is being thrown. The interdiff is large because of all the deletions.

Status: Needs review » Needs work

The last submitted patch, 46: menu_link_migrations-2551727-46.patch, failed testing.

jofitz’s picture

Status: Needs work » Needs review
StatusFileSize
new13.6 KB
new1.82 KB

mlid 478 is failing to migrate because its path (admin/content/book) does not exist in D8. Avoid the complication of involving the book module by simplifying the path of mlid 478 to admin/content which we can guarantee is routed.

quietone’s picture

Status: Needs review » Needs work

I disagree. I think the source data needs to have what Drupal7 really has, not fudge to suit our test. We should keep the 'real' D7 data and prove that link isn't migrated.

jofitz’s picture

Status: Needs work » Needs review

The menu link in question (mlid 478) is not part of 'real' D7 data; it was added as part of the testing for #2589237: Menu links parent migration is broken. It's path is not actually relevant, so a minor tweak to retain a test for internal:/abc/xyz links is justifiable.

Version: 8.2.x-dev » 8.3.x-dev

Drupal 8.2.6 was released on February 1, 2017 and is the final full bugfix release for the Drupal 8.2.x series. Drupal 8.2.x will not receive any further development aside from critical and security fixes. Sites should prepare to update to 8.3.0 on April 5, 2017. (Drupal 8.3.0-alpha1 is available for testing.)

Bug reports should be targeted against the 8.3.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.4.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

quietone’s picture

OK, thanks for that. I should have checked first.

mikeryan’s picture

Assigned: Unassigned » mikeryan
mikeryan’s picture

Assigned: mikeryan » Unassigned
Status: Needs review » Reviewed & tested by the community

Assuming the 8.3.x/8.4.x tests I started come back clean, I think this is good to go.

alexpott’s picture

Status: Reviewed & tested by the community » Needs work

The 8.4.x and 8.3.x tests on #48 have failed - and the reason looks patch related.

Migrate_drupal_ui.Drupal\migrate_drupal_ui\Tests\d7\MigrateUpgrade7Test
✓		- setUp
✗	
testMigrateUpgrade
fail: [Other] Line 149 of core/modules/migrate_drupal_ui/src/Tests/MigrateUpgradeTestBase.php:
Found 6 menu_link_content entities, expected 7.
Value 7 is equal to value 6.

fail: [Other] Line 170 of core/modules/migrate_drupal_ui/src/Tests/MigrateUpgradeTestBase.php:
Migration of a:1:{s:9:"sourceid1";s:3:"479";} to a:0:{} as part of the d7_menu_links migration. The source row status is 3
jofitz’s picture

Status: Needs work » Needs review
StatusFileSize
new14.51 KB
new2.14 KB

Just needed a minor change to the fixture because the route node/3 no longer exists. There should be no repercussions to this fixture edit because this entry was specifically added (by me!) as part of #2669978: Migrate D7 Menu Links.

joelpittet’s picture

Status: Needs review » Reviewed & tested by the community

Added 8.4.x test but it looks as though that should pass too. Re-setting to RTBC

alexpott’s picture

Status: Reviewed & tested by the community » Needs work
  1. Sorry this has taken so long to review.
  2. +++ b/core/modules/menu_link_content/src/Plugin/migrate/process/LinkUri.php
    @@ -63,6 +83,11 @@ public function transform($value, MigrateExecutableInterface $migrate_executable
    +      // If the routes have not yet been rebuilt, rebuild them.
    +      if (static::$isRouterRebuilt == FALSE) {
    

    I think we should document why we do this. Also why do we do this? What is happening that requires the route rebuild?

  3. +++ b/core/modules/menu_link_content/src/Plugin/migrate/process/LinkUri.php
    @@ -80,6 +105,9 @@ public function transform($value, MigrateExecutableInterface $migrate_executable
    +        throw new MigrateException(sprintf('The path "%s" failed validation and was dropped.', $path));
    

    Dropped? I'm not sure what that actually means with respect to a migration.

heddn’s picture

58.2 has been in the code for a while. I think since #17 2 years ago. I'd hazard a guess it isn't needed.
58.3 probably means we loose the data and do not import it. Let's try "The path "%s" failed validation" instead. Just drop the last part, pun intended.

jofitz’s picture

Status: Needs work » Needs review
StatusFileSize
new12.34 KB
new2.84 KB
  1. Removed $isRouterRebuilt section and consequently all references to that and $routerBuilder.
  2. Edited exception message.

@heddn-- for a dreadful pun!

heddn’s picture

Status: Needs review » Needs work

That seems like a long time to have tests queued. 6 hrs? Otherwise, one small nit before tests come back.

+++ b/core/modules/menu_link_content/src/Plugin/migrate/process/LinkUri.php
@@ -4,7 +4,9 @@
+use Drupal\Core\Routing\RouteBuilderInterface;

Unused import.

jofitz’s picture

Status: Needs work » Needs review
StatusFileSize
new12.29 KB
new620 bytes

Thanks, @heddn. I can't believe I missed that one - I'd removed most of the other changes in that file!

heddn’s picture

Status: Needs review » Reviewed & tested by the community

Marking RTBC based on #60 passing. #62 isn't any different, except for removal of an unused import.

alexpott’s picture

Status: Reviewed & tested by the community » Needs work
+++ b/core/modules/menu_link_content/src/Plugin/migrate/process/LinkUri.php
@@ -80,6 +81,9 @@ public function transform($value, MigrateExecutableInterface $migrate_executable
+        throw new MigrateException(sprintf('The path "%s" failed validation.', $path));

+++ b/core/modules/menu_link_content/tests/src/Kernel/Plugin/migrate/process/LinkUriTest.php
@@ -0,0 +1,121 @@
+    $message = 'The path "%s" failed validation and was dropped.';

Doesn't look like the test is actually running. Or at least this is not being tested for.

quietone’s picture

Status: Needs work » Needs review
StatusFileSize
new12.25 KB
new2.97 KB

Test fixed!

heddn’s picture

Assigned: Unassigned » heddn

Assigning to myself to review this week.

quietone’s picture

I neglected to say how I fixed the test. Method providerTestNotRouted was providing 3 arguments to testNotRouted which was expecting 2 arguments. Method providerTestNotRouted is now providing 2 arguments. And the exception message now reflects what is actually i the process plugin.

The interdiff shows changes to drupal7.php even though I made no changes to the test fixture.

heddn’s picture

Issue summary: View changes
Status: Needs review » Reviewed & tested by the community

Test changes in #50 and #56 make sense. Interdiff does seem odd, but reviewing the actual patch, appropriate updates have been done to providerTestNotRouted and testNotRouted.

The defensiveness already is in. See #2816857: Process plugin link_uri shouldn't be in d6 namespace. This patch is just about adding more tests and throwing an exception on a bad link. It does that. Looks good to me.

heddn’s picture

Assigned: heddn » Unassigned
catch’s picture

Version: 8.3.x-dev » 8.4.x-dev
Status: Reviewed & tested by the community » Needs work
Issue tags: +Needs issue summary update, +Novice

This failed phpcs, could use a quick re-roll for that.


FILE: ..._content/tests/src/Kernel/Plugin/migrate/process/LinkUriTest.php
----------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
----------------------------------------------------------------------
 107 | ERROR | [x] Return type must not contain variable name
     |       |     "$actual"
----------------------------------------------------------------------
PHPCBF CAN FIX THE 1 MARKED SNIFF VIOLATIONS AUTOMATICALLY
----------------------------------------------------------------------


Could also do with an issue summary update to more clearly explain what the current bug is and how it's fixed. I think from reading the patch that while we were validing paths, we were still migrating them even if they fail - now we throw an exception (gets converted to a message, doesn't stop the migation) and discard the link if it fails validation - but the issue summary doesn't actually say this.

joelpittet’s picture

Issue summary: View changes
Status: Needs work » Needs review
Issue tags: -Needs issue summary update, -Novice
StatusFileSize
new12.28 KB
new954 bytes
heddn’s picture

Status: Needs review » Reviewed & tested by the community

Nit fixed. Issue summary updated. I'm optimistic that the comment changes won't break anything. So back to rtbc.

  • catch committed 5583e7d on 8.5.x
    Issue #2551727 by quietone, Jo Fitzgerald, phenaproxima, neclimdul,...
catch’s picture

Status: Reviewed & tested by the community » Fixed

Committed/pushed to 8.5.x and cherry-picked to 8.4.x. Thanks!

  • catch committed 4a5cb6a on 8.4.x
    Issue #2551727 by quietone, Jo Fitzgerald, phenaproxima, neclimdul,...

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.