Problem/Motivation

The Drupal 7 date module allowed the site builder to configure whether to collect an end date or not:

(This is called 'todate' in the code.)

For example, on my personal site, I have a project NodeType which has a "time range" date. Example: https://wimleers.com/work/project/ledgrid.

Upon migration, the start value (value) is migrated, but the end value (value2) is dropped

D7

D8 HEAD

That's because this is being migrated to a @FieldType=datetime field in D8 instead of a @FieldType=daterange field in D8!

Proposed resolution

Make \Drupal\datetime\Plugin\migrate\field\DateField detect the todate setting and:

  1. expand the process pipeline to also transform data for @FieldType=daterange end_value property, instead of only the value property. See DateField::defineValueProcessPipeline
  2. dynamically override the statically computed destination field type: return daterange instead of datetime when appropriate. See DateField::getFieldType
  3. Throw a MigrateException when a 'todate' value exists and the Datetime Range module is not installed. See DateField::getFieldType.

Remaining tasks

  • Make a fail patch.
  • Review
  • Commit

User interface changes

N/A

API changes

N/A

Data model changes

N/A

Release notes snippet

TBD

CommentFileSizeAuthor
#79 diff-70-76.txt2.17 KBquietone
#78 interdiff-3095237-76-78.txt1.04 KByogeshmpawar
#78 3095237-78.patch33.69 KByogeshmpawar
#76 3095237-76.patch33.68 KByogeshmpawar
#70 3095237-70.patch33.67 KBquietone
#70 interdiff-69-70.txt1018 bytesquietone
#69 3095237-69.patch34.02 KBquietone
#69 interdff-67-69.txt451 bytesquietone
#67 3095237-67.patch33.38 KBquietone
#67 diff-63-67.txt4.19 KBquietone
#65 3095237-65-9.2.x.patch33 KBMatroskeen
#63 3095237-63.patch33.68 KBquietone
#63 3095237-63-fail.patch31.12 KBquietone
#63 interdiff-fail-success.txt2.27 KBquietone
#61 3095237-61.patch33.68 KBquietone
#61 interdiff-59-61.txt1.27 KBquietone
#59 3095237-59.patch32.61 KBquietone
#59 diff-53-59.txt8.31 KBquietone
#55 rawdiff.txt24.81 KBravi.shankar
#55 3095237-55.patch33.64 KBravi.shankar
#53 3095237-53.patch33.58 KBquietone
#53 interdiff-52-53.txt1.52 KBquietone
#52 3095237-52.patch33.39 KBquietone
#52 diff-45-52.txt3.14 KBquietone
#50 interdiff-45-49.txt2.18 KBVishalghyv
#50 3095237-49.patch33.14 KBVishalghyv
#49 interdiff_45-48.txt1.64 KBVishalghyv
#49 3095237-48.patch33.14 KBVishalghyv
#45 interdiff_43-45.txt1.39 KBravi.shankar
#45 3095237-45.patch33.21 KBravi.shankar
#43 interdiff_41-43.txt1.98 KBravi.shankar
#43 3095237-43.patch33.14 KBravi.shankar
#41 3095237-41.patch33.14 KBquietone
#41 interdiff-39-41.txt705 bytesquietone
#39 3095237-39.patch33.36 KBquietone
#39 interdff-34.39.txt4.77 KBquietone
#34 3095237-34.patch30.51 KBquietone
#34 diff-28-34.txt3.92 KBquietone
#28 3095237-28.patch30.45 KBquietone
#28 interdiff-26-28.txt449 bytesquietone
#26 3095237-26.patch30.27 KBquietone
#26 interdiff-22-26.txt2.66 KBquietone
#23 3095237-23.patch1.81 KBbenjifisher
#22 3095237-22.patch30.36 KBquietone
#22 interdiff-19-22.patch4.63 KBquietone
#19 3095237-19.patch31.07 KBquietone
#19 interdiff-18-19.txt2.25 KBquietone
#18 3095237-18.patch30.31 KBquietone
#18 interdiff-15-18.txt1.48 KBquietone
#16 3095237-15.patch29.17 KBquietone
#16 interdiff-13-15.txt12.34 KBquietone
#14 interdiff-2-13.txt14.3 KBquietone
#13 3095237-13.patch16.83 KBquietone
#2 3095237-2.patch2.02 KBWim Leers

Issue fork drupal-3095237

Command icon Show commands

Start within a Git clone of the project using the version control instructions.

Or, if you do not have SSH keys set up on git.drupalcode.org:

Support from Acquia helps fund testing for Drupal Acquia logo

Comments

Wim Leers created an issue. See original summary.

Wim Leers’s picture

Status: Active » Needs review
FileSize
2.02 KB

And patch! This makes the D7 → D8 migration for all date/time-related fields on wimleers.com work perfectly 🥳

Wim Leers’s picture

Title: Drupal 7 date fields with "enddate" setting enabled to collect a range lose their end date upon migration: data loss! » Drupal 7 date fields with "todate" ("End date" in UI) setting enabled to collect a range lose their end date upon migration: data loss!
dww’s picture

Great find, @Wim Leers!

Fix looks good on a quick skim. A few nits or things I'm not thrilled about, but they're not the fault of your patch. ;)

We probably want a test that shows the data loss, and to see it work with the fix applied.

Don't have time for a more thorough review right now, but I'll try to keep an eye on this.

Thanks!
-Derek

Status: Needs review » Needs work

The last submitted patch, 2: 3095237-2.patch, failed testing. View results

mikelutz’s picture

Title: Drupal 7 date fields with "todate" ("End date" in UI) setting enabled to collect a range lose their end date upon migration: data loss! » Drupal 7 date fields with "todate" ("End date" in UI) setting enabled to collect a range lose their end date upon migration
Priority: Major » Normal

Good find. This needs a test, which you would think would be easy, since we have a field_date_with_end_time in the d7 text fixture, whose end date isn't actually verified in tests.

Unfortunately, you have opened up a bit of a can of worms, as that field is a timestamp with an end time, which is currently being migrated into a timestamp field in Drupal 8. D8 timestamp fields don't support an end time (they are primitive field types in lib/Core, not the datetime module).
Near as I can tell, nearly all the testing around that field is with respect to making sure it's migrated as a timestamp, not to actually check to see if the end date is migrated.

So, your patch doesn't migrate the one end date that we have in the fixture, and that one field with an end date doesn't appear to have a comparable field in D8 to migrate to correctly anyway. (whew)

So, we need to decide what to do with timestamps with end dates, fix that, then probably add fields to the fixture for timestamp without end date, and datetime with enddate, and then test all of them properly.

Some of which can be relegated to follow-ups. I feel like we can fix datetimes with end date and kick the decision on what to do about timestamps with end dates into a follow up. We will need a new datetime field with end date in the d7 fixture to test migration of. We should also at least take a glance and see if there is a comparable issue with D6 that we can fix easily. D6 is lower priority but if we can kill two birds with one stone we should, and if we identify an issue with d6 that we can't easily fix, we should at least document it.

+++ b/core/modules/datetime/src/Plugin/migrate/field/DateField.php
@@ -19,7 +20,7 @@
- *   destination_module = "datetime"
+ *   destination_module = "datetime_range"

So, we can only specify one, and we can't know which until we get to inspect the field settings. It's unfortunate that the two choices are in separate modules in this case. In the other case where we split field types (textareas to plain text and filtered text) at least plain text was in core and didn't require a module.

At least by requiring datetime_range here, we will implicitly require datetime as well, so we are covered either way.

By the way, while this is an important bug to fix, we don't generally consider the fact that a piece of data isn't migrated to be 'data loss' in the issue escalation sense. The data isn't lost, it's still sitting on your D7 site right where it was. It simply wasn't migrated. There are many bits of data that may not be migrated for one reason or another, including views, text fields with some instances configured as plain text, and some as filtered, translated node revisions, contrib fields like paragraphs, and anything else that doesn't have a provided migration path. Unless we are somehow deleting the original data from the D7 database, it would not be considered data loss.

Wim Leers’s picture

At least by requiring datetime_range here, we will implicitly require datetime as well, so we are covered either way.

Exactly :)

By the way, while this is an important bug to fix, we don't generally consider the fact that a piece of data isn't migrated to be 'data loss' in the issue escalation sense.

That's why I marked this Major, not Critical.

The data isn't lost, it's still sitting on your D7 site right where it was. It simply wasn't migrated.

If the migration loudly complained and warned that an important subset of data did in fact not get migrated, I would agree. Right now it silently omitting data is simply dangerous. It's that danger that prompted me to mark it Major.

Unfortunately, you have opened up a bit of a can of worms […]

Uh oh 🙈

Wim Leers’s picture

Component: datetime.module » migration system

Been told that I should put this in migration system :)

dww’s picture

Yeah, nobody here but us chickens in the datetime.module. ;)

benjifisher’s picture

Issue summary: View changes

I am updating the "Remaining tasks" in the issue summary.

Version: 8.9.x-dev » 9.1.x-dev

Drupal 8.9.0-beta1 was released on March 20, 2020. 8.9.x is the final, long-term support (LTS) minor release of Drupal 8, which means new developments and disruptive changes should now be targeted against the 9.1.x-dev branch. For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

benjifisher’s picture

quietone’s picture

Issue summary: View changes
Status: Needs work » Needs review
FileSize
16.83 KB

Following on from #6, this add a new field to the drupal7 test fixture, a datetime field with an end date, and tests in the MigrateField and MigrateFieldInstance tests. And updated the field plugin test.

Also removed the warning of data loss from the IS in accord with the use of data loss as explained by mikelutz in #6.

I think the todos here are:
Decide what to do with timestamps with end dates, but do this in a followup.
* destination_module = "datetime_range" This needs some documentation to explain that datetime_range needs to be enabled.

quietone’s picture

FileSize
14.3 KB

Forgot to make an interdiff. Here it is.

Status: Needs review » Needs work

The last submitted patch, 13: 3095237-13.patch, failed testing. View results

quietone’s picture

Status: Needs work » Needs review
FileSize
12.34 KB
29.17 KB

Enable datetime_range in the failing tests.

Status: Needs review » Needs work

The last submitted patch, 16: 3095237-15.patch, failed testing. View results

quietone’s picture

Status: Needs work » Needs review
FileSize
1.48 KB
30.31 KB

Entity count fun again and add a sort of arrays before asserting.

quietone’s picture

Ok, sorting isn't straightforward instead change the expected arrays.

Status: Needs review » Needs work

The last submitted patch, 19: 3095237-19.patch, failed testing. View results

benjifisher’s picture

Status: Needs work » Needs review

It looks as though there was a random test failure and you queued a new test. Since the test passed, I am setting the status back to NR.

quietone’s picture

@benjifisher, Yes, I did. Thanks for updating the status.

Did a brief self review which led to updated comments and a easier to read testDefineValueProcessPipeline().

benjifisher’s picture

FileSize
1.81 KB

I am working on a migration to Drupal 8.9 and want to test/use this fix. The patch in #22 has conflicts in many of the tests (maybe all). So here is a copy of the patch without any changes to the tests.

benjifisher’s picture

So far, testing with Drupal 8.9.1 and the patch in #23 looks good.

quietone’s picture

Title: Drupal 7 date fields with "todate" ("End date" in UI) setting enabled to collect a range lose their end date upon migration » Migrate Drupal 7 date field "todate" value

Change title because I kept reading it twice.

quietone’s picture

Rerolled the patch from #22

Status: Needs review » Needs work

The last submitted patch, 26: 3095237-26.patch, failed testing. View results

quietone’s picture

Status: Needs work » Needs review
FileSize
449 bytes
30.45 KB

Fix incorrect field_id number in field_config_instance table that was introduced to the d7 fixture in #3153791: Add comment field for 'et' content type to d7 fixture.

Status: Needs review » Needs work

The last submitted patch, 28: 3095237-28.patch, failed testing. View results

heddn’s picture

No real comments of substance on the code. Its solid. My lone concern is with the switch from datetime to datetime_range.

  1. +++ b/core/modules/datetime/src/Plugin/migrate/field/DateField.php
    @@ -19,7 +20,7 @@
    - *   destination_module = "datetime"
    + *   destination_module = "datetime_range"
    

    We can't really have 2 destination modules, but in reality, that's what we want. Do we need to fork the field migration off so we have one for date and one for range?

  2. +++ b/core/modules/migrate/tests/src/Kernel/Plugin/MigrationProvidersExistTest.php
    @@ -126,7 +126,7 @@ public function testFieldProvidersExist() {
    -        'destination_module' => 'datetime',
    +        'destination_module' => 'datetime_range',
    

    This goes with the previous change. We need to handle datetime and range, no?

quietone’s picture

Status: Needs work » Needs review

I don't see how to fork that when they both use the same field_types. Change FieldDiscovery to be able to select \Drupal\datetime\Plugin\migrate\field\DateField or a new field plugin in datetime_range?

gbirch’s picture

#23 continues to work well in 8.9.3. Thanks @benjifisher!

mikelutz’s picture

Status: Needs review » Needs work

I think the test failure in #28 is real, nw for that.

quietone’s picture

Status: Needs work » Needs review
FileSize
3.92 KB
30.51 KB

Needs a reroll.

heddn’s picture

+++ b/core/modules/datetime/src/Plugin/migrate/field/DateField.php
@@ -19,7 +20,7 @@
+ *   destination_module = "datetime_range"

If we say the destination is datetime_range, but leave the plugin in datetime, that is going to confuse things. But we can't move it either, because of sites that didn't know they need datetime_range and don't have it installed. Not sure what to suggest/do here.

heddn’s picture

The destination module is used on field plugins to display the nice review form in migrate drupal ui. Its what lets you know if all your data will migrate. There is no good way to know until we start migrating entities that use the field if we have range data. Because it isn't flagged on the source.

However, we could have datime_range alter the field plugin to set the destination to datetime_range (if it is enabled). And if while running a migration we run into range data, complain loudly with exceptions.

benjifisher’s picture

Status: Needs review » Needs work

And if while running a migration we run into range data, complain loudly with exceptions.

I think you meant to add "and datetime_range is not enabled".

I am setting the status back to NW based on #35 and #36.

We discussed this issue at #3175894: [meeting] Migrate Meeting 2020-10-15. I think #35 is copied from there. Here is some of what I said:

It seems to me that there are bigger problems if datetime is enabled but not datetime_range. Could we be setting fields to use a type from a module that is not enabled? That seems serious.

Version: 9.1.x-dev » 9.2.x-dev

Drupal 9.1.0-alpha1 will be released the week of October 19, 2020, which means new developments and disruptive changes should now be targeted for the 9.2.x-dev branch. For more information see the Drupal 9 minor version schedule and the Allowed changes during the Drupal 9 release cycle.

quietone’s picture

Status: Needs work » Needs review
FileSize
4.77 KB
33.36 KB

How about throwing an error in DateField::getFieldType? Tried that in this patch. I haven't looked into changing the destination_module.

Status: Needs review » Needs work

The last submitted patch, 39: 3095237-39.patch, failed testing. View results

quietone’s picture

Status: Needs work » Needs review
FileSize
705 bytes
33.14 KB

Now see what happens when datetime is restored in MigrationProvidersExistTest.php and datetime/migrations/state/migrate_drupal.yml.

heddn’s picture

Status: Needs review » Needs work
Issue tags: +Novice
+++ b/core/modules/datetime/src/Plugin/migrate/field/DateField.php
@@ -96,4 +105,24 @@ public function defineValueProcessPipeline(MigrationInterface $migration, $field
+        throw new MigrateException(sprintf("Can't migrate field '%s' with 'todate' settings. Enable to datetime_range module. See https://www.drupal.org/docs/8/upgrade/known-issues-when-upgrading-from-drupal-6-or-7-to-drupal-8#datetime", $row->get('field_name')));

Nit: I think we want to say, "Enable the datetime_range module." Also needs tests fixes if we do adjust.

Otherwise, I think this is looking really good. Tagging novice as this seems relatively easy fix.

ravi.shankar’s picture

Status: Needs work » Needs review
Issue tags: -Novice
FileSize
33.14 KB
1.98 KB

Made changes as per comment #42.

heddn’s picture

Status: Needs review » Needs work

Nw for some cspell fixes

ravi.shankar’s picture

Status: Needs work » Needs review
FileSize
33.21 KB
1.39 KB

Here I have tried to fix cSpell issue, please review.

heddn’s picture

Status: Needs review » Needs work
+++ b/core/modules/datetime/src/Plugin/migrate/field/DateField.php
@@ -89,6 +89,7 @@ public function defineValueProcessPipeline(MigrationInterface $migration, $field
+    // cSpell:enableCompoundWords

+++ b/core/modules/datetime/tests/src/Unit/Plugin/migrate/field/DateFieldTest.php
@@ -37,6 +37,7 @@ public function testDefineValueProcessPipeline($data, $from_format, $to_format)
+    // cSpell:enableCompoundWords

I don't see where we use this anywhere else in core. Can we not use the machine names todate, etc. And instead use the words "to date", etc in the code comments? I think it will convey the same info and not require us to introduce this feature?

benjifisher’s picture

If I understand correctly, #46 is asking that we change the comments instead of telling the spell checker to ignore them That is what the patch in #45 did.

Vishalghyv made their first commit to this issue’s fork.

Vishalghyv’s picture

Status: Needs work » Needs review
FileSize
33.14 KB
1.64 KB

Made changes as per comment #46
Changed todate - > to date

Vishalghyv’s picture

This is weird cspell is flagging todate in some cases and not in some,
Here is a changing of todate to date in all comments

Vishalghyv’s picture

What it is mentioning is in code, Which wasn't flagged in the earlier patches

quietone’s picture

First, this needs a reroll. I choose to start again from #45. So that means #46 needs to be done.

quietone’s picture

And now, address #46.

I actually disagree with heddn because the setting really is called 'todate' not 'to date' and I think changing it is just confusing. Additionally, 'todate' is used in an exception message where, again, using the correct setting name will be helpful to the developer. For those reasons I have added a 'cspell ignore' at the top of the DateField.php and DateFieldtest.php

@Vishalghyv, I haven't looked at the errors from the two patches you submitted. But the simplest thing to do is to run the same checks (spelling, coding standards) that drupalci does locally before you submit a patch. It is very useful and I recommend it. See Running core development checks (>= 9.2.x). Cheers.

quietone’s picture

Status: Needs review » Needs work
Issue tags: +Needs reroll
ravi.shankar’s picture

Status: Needs work » Needs review
Issue tags: -Needs reroll
FileSize
33.64 KB
24.81 KB

Added reroll of patch #53.

Status: Needs review » Needs work

The last submitted patch, 55: 3095237-55.patch, failed testing. View results

quietone’s picture

@ravi.shankar, rerolling the migration issues that change either of the test fixtures, drupal6.php or drupal7.php, can be tricky. Looking at the test results, the tests are failing because the source database, drupal7,php, could not be imported. This is something that can, and should, be checked locally before uploading the patch.

There are two ways that can be done, a) use the script db-tools.php or b) run a migration test that loads the database. For the first, have a look at Generating database fixtures for migration tests. And for the second run, say d6/MigrateSystemConfigurationTest.php, with phpunit.

Version: 9.2.x-dev » 9.3.x-dev

Drupal 9.2.0-alpha1 will be released the week of May 3, 2021, which means new developments and disruptive changes should now be targeted for the 9.3.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

quietone’s picture

Status: Needs work » Needs review
FileSize
8.31 KB
32.61 KB

Just a reroll from #53.

Status: Needs review » Needs work

The last submitted patch, 59: 3095237-59.patch, failed testing. View results

quietone’s picture

Status: Needs work » Needs review
FileSize
1.27 KB
33.68 KB

Rearranging the expected values for the failing tests. Need to improve the test to sort the arrays.

quietone’s picture

Assigned: Unassigned » quietone
Issue summary: View changes
Status: Needs review » Needs work

I'll make a fail patch soon

quietone’s picture

Assigned: quietone » Unassigned
Status: Needs work » Needs review
FileSize
2.27 KB
31.12 KB
33.68 KB

Here is the fail patch and a diff with the success patch. The success patch is the same as #61 so there is no interdiff needed.

The last submitted patch, 63: 3095237-63-fail.patch, failed testing. View results

Matroskeen’s picture

I have Drupal 9.2.2 installed and none of the previous patches applied. I did a re-roll because I thought I need this patch for my custom migration. Turns out, it wasn't necessary but I'd like to publish it here to save someone's time.

If the test is failing, it should be safe to apply anyway because the merge conflict was only in the text fixture.
And thanks for the work done here 😇

heddn’s picture

Status: Needs review » Needs work
  1. +++ b/core/modules/datetime/migrations/state/datetime.migrate_drupal.yml
    @@ -2,4 +2,4 @@ finished:
    -    date: datetime
    +    date: datetime_range
    

    this modifying to the migration state seems wrong. date should normally get migrated into datetime. it is only in certain conditions that it goes into datetime_range.

  2. +++ b/core/modules/datetime/src/Plugin/migrate/field/DateField.php
    @@ -92,6 +95,14 @@ public function defineValueProcessPipeline(MigrationInterface $migration, $field
    +    // so set the end value. If the datetime_range module is not enabled on the
    +    // destination then end_value is ignored.
    

    Do we want to trigger any warning/error on this condition?

    Ah, I see we do trigger an exception later. Maybe we should clarify this comment.

quietone’s picture

Status: Needs work » Needs review
FileSize
4.19 KB
33.38 KB

@heddn, thanks for the review.

Doing a reroll first

Status: Needs review » Needs work

The last submitted patch, 67: 3095237-67.patch, failed testing. View results

quietone’s picture

Status: Needs work » Needs review
FileSize
451 bytes
34.02 KB

Ah, need to add a fix for the new test MigrateFieldInstanceOptionTranslationTest.

quietone’s picture

Now the fixes for #66.

1. Reverted. Not even sure why I did that.
2. Comment added.

heddn’s picture

Status: Needs review » Reviewed & tested by the community

LGTM.

Volker23’s picture

I have tried the patch to update an existing migration for the core datetime field. Is it correct, that the patch only supports initial migrations? After adding another patch (https://www.drupal.org/project/drupal/issues/3118262) that supports updating migrations using EntityConfig destination, i got this error:

Cannot change the field type for an existing field storage. The field storage node.field_date has the type datetime. (/docroot/core/modules/field/src/Entity/FieldStorageConfig.php:375)

Any hint how i could solve this is highly appreciated (in case im reporting in the right location).

Thanks!

quietone’s picture

@Volker23, I am not fully following you but I will try to answer. This patch will work for the initial migration as well as updates/incrementals. If it is not working for you on incremental or upgrade then provide the steps to reproduce the problem and the results. For the second issue you mention, it is best to report your test results in that issue. Thx.

alexpott’s picture

Status: Reviewed & tested by the community » Needs work

We need a reroll here.

yogeshmpawar’s picture

Assigned: Unassigned » yogeshmpawar

Working on re-roll.

yogeshmpawar’s picture

Assigned: yogeshmpawar » Unassigned
Status: Needs work » Needs review
FileSize
33.68 KB

Status: Needs review » Needs work

The last submitted patch, 76: 3095237-76.patch, failed testing. View results

yogeshmpawar’s picture

Status: Needs work » Needs review
FileSize
33.69 KB
1.04 KB

Hope this updated patch will resolve test failures.

quietone’s picture

FileSize
2.17 KB

Adding diff for the reroll in #76.
The change in #78 was needed because #2976098: MigrateExecutable should add details for the migration & destination property to exceptions that cause a row failure was comitted.

quietone’s picture

Category: Bug report » Task

In general, the migration of 'things' from earlier versions was not considered bugs, they were tasks. And the lack of the source data does not affect the functionality of the destination site. Changing to task.

danflanagan8’s picture

Status: Needs review » Reviewed & tested by the community

Checked the re-roll and it looks good. The only changes we in the expected messages in a couple tests, both related to the issue that @quietone linked to above. Setting back to RTBC.

alexpott’s picture

Status: Reviewed & tested by the community » Fixed

Committed 4e87f84 and pushed to 9.3.x. Thanks!

  • alexpott committed 4e87f84 on 9.3.x
    Issue #3095237 by quietone, ravi.shankar, Vishalghyv, yogeshmpawar,...

Status: Fixed » Closed (fixed)

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

sjhuskey’s picture

It sounds like this patch would resolve my problem, which is the same as the original poster's issue.

However, when I try to apply this patch to my site (version 9.4.1), I receive the message "Could not apply patch! Skipping. The error was: Cannot apply patch." When I do composer update -vvv, I get "patch: unrecognized option `--no-backup-if-mismatch'".

What can be done to make this patch available to users of 9.4.1?

danflanagan8’s picture

> What can be done to make this patch available to users of 9.4.1?

This fix was committed in 9.3.x, so it should already be fixed in 9.4.1, no patch required.

sjhuskey’s picture

@danflanagan8: Thanks for that information. It's what I had hoped, but I'm still having the problem that the original poster had, and I'm baffled about resolving it.