Problem/Motivation

Items in the queue cannot be reclaimed or get incorrect lease times leading to unexpected behaviour with expiration and claims.

There are three errors:

- The system cron only resets the expired items of the Database Queue. Memory queue items can never be reclaimed, because their expire value is never set to 0.
- The cron time and the lease time are incorrectly using the same value defined in the annotation of the queue worker.
- The lease time for items in cron-based queues are incorrectly set to 1 second. Fixed: #3230541: Queue items only reserved by cron for 1 second

Further details available in #25.

Proposed resolution

1. Let queues handle expiration of items themselves.
2. Fix the lease time for cron based queues.
3. Allow queueworkers to set specific lease times as well as cron times.

API changes

Added cron lease time in the QueueWorker annotation definition.

CommentFileSizeAuthor
#81 2893933-queue_lease_time-11.x-81.patch15.19 KBgun_dose
#79 2893933-queue_lease_time-11.x-79.patch15.2 KBgun_dose
#76 2893933-75-rerolled-for-10-3.patch15.26 KBchri5tia
#75 2893933-queue_lease_time-11.x-75.patch15.2 KBbapplejax
#72 cron-missing-time-3396207.patch729 bytesnick.murza
#67 reroll_diff_62-67.txt4.09 KBjastraat
#67 2893933-queue_lease_time-11.x-67.patch15.24 KBjastraat
#65 reroll_diff_62-64.txt2.01 KBjastraat
#65 2893933-queue_lease_time-11.x-64.patch13.11 KBjastraat
#62 rerole_diff_53-62.txt8.02 KBjastraat
#62 2893933-drupal-queue-claim-10.1.x-62.patch18.42 KBjastraat
#58 rerole_diff_53-58.txt8.02 KBjastraat
#58 2893933-drupal-queue-claim-9.5.x-58.patch18.42 KBjastraat
#57 rerole_diff_53-57.txt9.29 KBjastraat
#57 2893933-drupal-queue-claim-9.5.x-57.patch18.41 KBjastraat
#56 2893933-56.patch17.31 KB_utsavsharma
#53 interdiff_50-53.txt328 bytescodebymikey
#53 2893933-drupal-queue-claim-9.4.x-53.patch18.55 KBcodebymikey
#51 2893933-drupal-queue-claim-9.4.x-51-TEST-ONLY.patch2.07 KBcodebymikey
#50 2893933-drupal-queue-claim-9.4-50.patch18.12 KBcodebymikey
#50 2893933-drupal-queue-claim-9.4-50-TEST-ONLY.patch2.34 KBcodebymikey
#50 reroll_diff_47-50.txt20.67 KBcodebymikey
#47 interdiff_46_47.txt479 bytestibezh
#47 2893933-47.patch9.56 KBtibezh
#46 interdiff_40_46.txt1.75 KBtibezh
#46 2893933-46.patch9.56 KBtibezh
#40 2893933-40.patch9.7 KBdieterholvoet
#34 2893933-34.patch9.71 KBmanuel garcia
#34 interdiff-2893933-31-34.txt1.05 KBmanuel garcia
#31 2893933.30-cron-lease-8.8.x.patch9.7 KBnuez
#29 2893933.29-cron-lease-8.7.x.patch10.26 KBnuez
#28 2893933.28-cron-lease.patch10.3 KBdeviantintegral
#27 2893933.27-cron-lease.patch10.3 KBdeviantintegral
#25 2893933-25.patch10.14 KBnuez
#14 interdiff.txt1.72 KBm4olivei
#14 core_cron_lease_time-2893933-14.patch2.87 KBm4olivei
#12 core_cron_lease_time-2893933-12.patch2.65 KBm4olivei
#7 core_cron_lease_time-2883819-5.patch1.3 KBm4olivei
#2 2893933-update-claim-query-2.patch1.36 KBkmoll

Issue fork drupal-2893933

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:

Comments

kmoll created an issue. See original summary.

kmoll’s picture

StatusFileSize
new1.36 KB

Here is a patch to update this.

kmoll’s picture

Status: Active » Needs review
kmoll’s picture

Title: claimItem in DatabaseQueue does not use exipre correctly. » claimItem in DatabaseQueue does not use expire correctly.

Version: 8.4.x-dev » 8.5.x-dev

Drupal 8.4.0-alpha1 will be released the week of July 31, 2017, which means new developments and disruptive changes should now be targeted against the 8.5.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.5.x-dev » 8.6.x-dev

Drupal 8.5.0-alpha1 will be released the week of January 17, 2018, which means new developments and disruptive changes should now be targeted against the 8.6.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

m4olivei’s picture

StatusFileSize
new1.3 KB

Here's a failing test patch without the fix to show the problem more clearly.

kmoll’s picture

thanks @m4olivei. I would love to get some visibility on this. At least a discussion. I don't like the fact that we need to rely on garbage collection, which runs in a separate process, in order for an expired item to be fetched again. IMO it would be simple to alter the query to get expired items. Maybe we can add the test to the above patch to show that it is working when the patch is applied. Let me know if you have time to update that. If not I can. Thanks!

m4olivei’s picture

Yep, I'm on it. Just waiting to make sure that the last patch failed the way I intended. I've got the complete patch with your fix and my test ready to go.

kmoll’s picture

Awesome! thanks.

Status: Needs review » Needs work

The last submitted patch, 7: core_cron_lease_time-2883819-5.patch, failed testing. View results

m4olivei’s picture

StatusFileSize
new2.65 KB

Attaching patch from #2 including test from #7 (and renaming the patch to be correct :/ ).

m4olivei’s picture

Humm, oops, I didn't completely understand the test class when I wrote that test. The code I added was specific to the database queue, but that code also gets run in testing the memory queue.

Taking a look..

m4olivei’s picture

Status: Needs work » Needs review
StatusFileSize
new2.87 KB
new1.72 KB

OK, I removed the DB query for expire in the test, since that makes no sense for the memory queue. The test is still valid the way it is, that was just an extra assertion. I found after doing this that the memory queue exhibits the same issue wherein it would not claim an item unless it's expiry was exactly 0. That fix is included as well.

m4olivei’s picture

One thing to be careful about. Once you fix this, another problem rears:

#2883819: Cron does not use lease time correctly when claiming item

That issue means that cron queue processing currently ignores any lease time that you give it, erroneously using a constant of 1 second lease time for any queue item claim. So even though lease times are properly checked now, items expire far sooner than typically expected.

We probably need both to make sure we don't break things temporarily. Not totally sure though.

mustanggb’s picture

I noticed this in D7.

Wondering if this was done deliberately so that looped claimItem()'s don't run forever and this is why they require a system_cron() execution to reset expired back to 0.

Perhaps a better option would be to keep the current setup, where claimItem() only pulls from expired = 0, and instead add a SystemQueue::resetLeases() function that does the same thing as the system_cron() code and can be called before a looped claimItem() (or in the loop, if you're being careful), which will allow expired items to be claimed, but prevent infinite loops.

manuel garcia’s picture

Issue summary: View changes
manuel garcia’s picture

Title: claimItem in DatabaseQueue does not use expire correctly. » claimItem in the database and memory queues do not use expire correctly
Issue summary: View changes

Updating IS and title to reflect the current scope which also includes the Memory queue.

manuel garcia’s picture

Title: claimItem in the database and memory queues do not use expire correctly » claimItem in the database and memory queues dooes not use expire correctly
deviantintegral’s picture

I found the original issue at #391340: Job queue API, and I don't see any comments specifically about why expiration clearing happens in cron. comment #98 did bring it up as a performance concern.

Something to note is that this is how all expiries work in Drupal. For example, caches are only cleared on cron and may be continued to be used past their expiry time (this comes up with the page cache). I'm guessing that's the source of this in the first place.

I think a good place to start would just be some improved documentation - I've been tripped up on this, I've seen other developers have the same confusions, and it's not how developers typically think of expired item handling.

One nice side effect of the current handling is that it encourages site owners to run cron more often. I've seen sites where cron has been needlessly disabled, or only run 2-3 times a day, due to incorrect perceptions about performance. Being able to say "the floor of queue expiries and page caches is your cron interval" is a strong argument in favour of running cron with reasonable intervals.

Luckily, I don't think expired handling is really part of the "public" queue API. Even though nearly all Drupal sites use database queues, there's no contract that cron has anything to do with a given queue implementation. IOW, I could see this potentially being committed to 8.5.x.

deviantintegral’s picture

+ $queue1->claimItem(-3600);

This feels like a bit of hack, given that it violates the interface docs on claimItem(). It would be reasonable for a queue implementation to require only positive lease times and throw an \InvalidArgumentException otherwise. I think it would be OK if the test manually inserted a row.

Should this patch remove the system_cron implementation too? That may give us hints if we're breaking any other expectations by altering the claimItem() behaviour.

Version: 8.6.x-dev » 8.7.x-dev

Drupal 8.6.0-alpha1 will be released the week of July 16, 2018, which means new developments and disruptive changes should now be targeted against the 8.7.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

deviantintegral’s picture

Title: claimItem in the database and memory queues dooes not use expire correctly » claimItem in the database and memory queues does not use expire correctly
nuez’s picture

nuez’s picture

Issue summary: View changes
StatusFileSize
new10.14 KB

I think it's a good idea to incorporate two other issues in this issue:

Some observations:

  1. When an item is claimed, expiration is set to the current time + the $lease_time, which is the argument of the Queue's ::claimItem(). Note that time() is used to get the actual time and not the time at the start of the request.
    1. Currently only items with expire == 0 can be claimed. Expiration is set to 0 with the system cron.
  2. When cron = {time = x} is defined in the annotation of your QueueWorker plugin, the lease time is erroneously set to 1 second as mentioned by m4olivei. If the annotation is not set, then the default of 30 seconds is applied in both the database queue and the memory queue.
    1. see Cron.php:176 : $lease_time = isset($info['cron']['time']) ?: NULL ;
    2. The incorrect lease time was discussed in issue https://www.drupal.org/project/drupal/issues/2883819
  3. 3. Currently the time indicated in the annotation of the QueueWorker plugin is incorrectly used for both lease time and cron execution time.

    1. Just to be clear: cron time is the time in which one single cron call can start claiming and processing items. Lease time is the expected time each item will take. If an item hasn't finished yet, it should not be possible to claim and process the item again until the lease is expired.
    2. Since the Lease time is 1 second in a lot of cases, a single item can be processed twice in subsequent cron calls, causing errors.
    3. This issue was discussed in https://www.drupal.org/project/drupal/issues/2833657
  4. I agree that resetting lease times in the system_cron() is not only an akward place for it (it took me a while to find it), it also seems to be faulty:

    1. It currently doesn't release items in the Memory queue, since the MemoryQueue doesn't implement the QueueGarbageCollectionInterface.
      Expired but claimed items in the memory queue are never released it seems.

    2. It makes sense to me to let the Queue handle expiration and release itself.

My patch builds on the patch in #41, also fixing the 1 second lease time and the incorrect use of the cron time as lease time. It also adds a kernel test on a cron queue execution level to see if leases correctly expire.

Version: 8.7.x-dev » 8.8.x-dev

Drupal 8.7.0-alpha1 will be released the week of March 11, 2019, which means new developments and disruptive changes should now be targeted against the 8.8.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

deviantintegral’s picture

StatusFileSize
new10.3 KB

A straight reroll against 8.8.x to run tests against while I review.

deviantintegral’s picture

Status: Needs review » Needs work
StatusFileSize
new10.3 KB

Identical to the above patch with some minor CS fixes.

A few questions.

  1. QueueInterface defines a default lease time of 1 hour. Why is it 30 seconds for the cron worker? I'd be tempted to move the \Drupal\Core\Cron::DEFAULT_QUEUE_CRON_LEASE_TIME constant to QueueInterface and use 1 hour.
  2. By selecting queue items that are "locked" via an expiry in the past, doesn't that open us up to a race condition if multiple queue workers are processing the queue? It reads like it'd be possible to have two workers get the same item.
  3. In CronQueueTestLeaseTime: Can we add a class header doc to explain that the point of the worker is to ensure that queue items are never processed? Also, how about throwing \LogicException here, since if it's thrown code must be changed?
nuez’s picture

StatusFileSize
new10.26 KB

Adding a patch to reroll this against the lastest 8.7.x branch too, as the patch in #25 doesn't seem to apply anymore.

It's been a while, but:

QueueInterface defines a default lease time of 1 hour. Why is it 30 seconds for the cron worker? I'd be tempted to move the \Drupal\Core\Cron::DEFAULT_QUEUE_CRON_LEASE_TIME constant to QueueInterface and use 1 hour.

I would not move the constants to QueueInterface, as the constants are specific to CRON executing the queue, and doesn't apply generically to the QueueInterface.

You could consider using an hour instead of 30 seconds, I don't really have an opinion about that, other than that the 3600 seconds in QueueInterface is actually never used in Core as every implementation of that class overrides that value to become either 30 seconds (Database and Memory Queue) or 0 (BatchMemory).

Generally you would want to motivate people to build short-lasting queue jobs, creating jobs that take long generally means you should cut them up into smaller jobs. If you do need a long lease time, you can add the annotation. So 30 seconds is still in line with what's currently being used by core.

By selecting queue items that are "locked" via an expiry in the past, doesn't that open us up to a race condition if multiple queue workers are processing the queue? It reads like it'd be possible to have two workers get the same item

I need to think about that. My first thought would be that this happens in the DatabaseQueue which implements the ReliableQueueInterface, which maintains the order of the tasks being executed, if I'm not mistaken, so I'm not sure if the scenario that you're imagining is technically likely to happen.

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

Drupal 8.8.0-alpha1 will be released the week of October 14th, 2019, which means new developments and disruptive changes should now be targeted against the 8.9.x-dev branch. (Any changes to 8.9.x will also be committed to 9.0.x in preparation for Drupal 9’s release, but some changes like significant feature additions will be deferred to 9.1.x.). For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

nuez’s picture

Version: 8.9.x-dev » 8.8.x-dev
Status: Needs work » Needs review
StatusFileSize
new9.7 KB

Reroll for the 8.8.x branch

nuez’s picture

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

Status: Needs review » Needs work

The last submitted patch, 31: 2893933.30-cron-lease-8.8.x.patch, failed testing. View results

manuel garcia’s picture

Status: Needs work » Needs review
StatusFileSize
new1.05 KB
new9.71 KB

Thanks for the reroll @nuez

Just a bit of work here, with this QueueTest should come back green.

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.

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.

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

dieterholvoet’s picture

Rerolled for the 9.2.x branch and opened a MR.

dieterholvoet’s picture

StatusFileSize
new9.7 KB

In case anyone needs it, a reroll for the 9.1.x branch.

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

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.

codebymikey’s picture

Fixed the broken tests on the 9.3.x reroll - https://git.drupalcode.org/project/drupal/-/merge_requests/254/diffs

Further review required. I've tested the patch, and it seems to be functional.

If accepted, I guess a change notice will be required for the new lease_time attribute as well as the introduction of the CronInterface::DEFAULT_QUEUE_CRON_TIME and CronInterface::DEFAULT_QUEUE_CRON_LEASE_TIME constants which can be used by other Cron implementations.

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

Drupal 9.3.0-rc1 was released on November 26, 2021, which means new developments and disruptive changes should now be targeted for the 9.4.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

dieterholvoet’s picture

I rebased the branch against 9.4.x.

tibezh’s picture

StatusFileSize
new9.56 KB
new1.75 KB

According to the #3222251: [November 8, 2021] Replace all isset constructs with the null coalescing operator and #2909370: Fix 'Drupal.Commenting.VariableComment.IncorrectVarType' coding standard issues, we cannot apply a patch from the #40 comment on the 9.3.x and 9.4.x branches.

An actual patch is attached to the comment.

tibezh’s picture

StatusFileSize
new9.56 KB
new479 bytes

Fixed code quality

Status: Needs review » Needs work

The last submitted patch, 47: 2893933-47.patch, failed testing. View results

Version: 9.4.x-dev » 9.5.x-dev

Drupal 9.4.0-alpha1 was released on May 6, 2022, which means new developments and disruptive changes should now be targeted for the 9.5.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

codebymikey’s picture

Rerolled for 9.4, 9.5 reroll requires updating the target of the issue fork (which can only be done by the original creator @DieterHolvoet)

codebymikey’s picture

StatusFileSize
new2.07 KB

Updated the TEST-ONLY patch to remove reference to non-existent QueueWorkerManagerInterface::DEFAULT_QUEUE_CRON_LEASE_TIME constant.

codebymikey’s picture

Issue summary: View changes

One thing to note is whether when specifying the default lease_time, we should ensure that it's always larger than or equal to the current time.

i.e. If a custom queue time of 100 seconds is specified, and the lease_time is unspecified, the lease_time should probably default to 100/115 seconds rather than the default 30 seconds?

codebymikey’s picture

StatusFileSize
new18.55 KB
new328 bytes

Address broken test which doesn't pass the static queue worker definition through the QueueWorkerManager definition processor.

Version: 9.5.x-dev » 10.1.x-dev

Drupal 9.5.0-beta2 and Drupal 10.0.0-beta2 were released on September 29, 2022, which means new developments and disruptive changes should now be targeted for the 10.1.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

mile23’s picture

_utsavsharma’s picture

Status: Needs work » Needs review
StatusFileSize
new17.31 KB

Tried to fix #53 for 10.1.x.
Please review.

jastraat’s picture

Re-rolling #53 for Drupal 9.5.x

jastraat’s picture

Re-rolling again for 9.5.x

Status: Needs review » Needs work

The last submitted patch, 58: 2893933-drupal-queue-claim-9.5.x-58.patch, failed testing. View results

jastraat’s picture

Created an issue for the unrelated, random, intermittent errors from ckeditor5: https://www.drupal.org/project/drupal/issues/3332456

jastraat’s picture

Version: 10.1.x-dev » 9.5.x-dev
Status: Needs work » Needs review
jastraat’s picture

Re-rolling for 10.1.x

mile23’s picture

Version: 9.5.x-dev » 10.1.x-dev
Status: Needs review » Needs work
Issue tags: +Needs subsystem maintainer review

Adding Needs subsystem maintainer review, and tagging @neclimdul who's listed for queue. We don't have subsystem maintainers for cron, and we don't have a queue component to tag the issue.

Patch applies. :-)

I'd suggest that we add @see tags from all the functions/variables we're changing to Drupal\Core\Queue\QueueInterface::claimItem() because it has an explanation of what a lease is. If there's some other, better explanation, we should @see that instead.

I'd RTBC for this other than the above. We're using the 9.5 patch in #58 in production, for queue/cron issues we're having in DKAN.

Version: 10.1.x-dev » 11.x-dev

Drupal core is moving towards using a “main” branch. As an interim step, a new 11.x branch has been opened, as Drupal.org infrastructure cannot currently fully support a branch named main. New developments and disruptive changes should now be targeted for the 11.x branch, which currently accepts only minor-version allowed changes. For more information, see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

jastraat’s picture

Status: Needs work » Needs review
StatusFileSize
new13.11 KB
new2.01 KB

Re-roll for 11.x that also adds @see comments as suggested above.

Status: Needs review » Needs work

The last submitted patch, 65: 2893933-queue_lease_time-11.x-64.patch, failed testing. View results

jastraat’s picture

Status: Needs work » Needs review
StatusFileSize
new15.24 KB
new4.09 KB

Adjusting 11.x tests in new CronSuspendQueueDelayTest.php

mile23’s picture

Status: Needs review » Reviewed & tested by the community

Reroll for 11.x looks good, my concerns from #63 about @see are addressed.

Setting RTBC.

Hopefully we'll be able to backport this to 10.0 and/or 9.5.

I want to give a special tangential shout-out to #3068764: Refactor cron queue processing into its own class because I just spent a bunch of time trying to figure out a bespoke queue implementation that should have been an easy subclass of a generic queue handler. Tangent over.

neclimdul’s picture

Status: Reviewed & tested by the community » Needs work
+++ b/core/lib/Drupal/Core/Queue/DatabaseQueue.php
@@ -114,13 +114,19 @@ public function numberOfItems() {
-        $item = $this->connection->queryRange('SELECT [data], [created], [item_id] FROM {' . static::TABLE_NAME . '} q WHERE [expire] = 0 AND [name] = :name ORDER BY [created], [item_id] ASC', 0, 1, [':name' => $this->name])->fetchObject();
+        $item = $this->connection->queryRange('SELECT [data], [created], [item_id] FROM {' . static::TABLE_NAME . '} q WHERE (([expire] = 0) OR (:now > [expire])) AND [name] = :name ORDER BY [created], [item_id] ASC', 0, 1, [
+          ':name' => $this->name,
+          ':now' => \Drupal::time()->getCurrentTime(),
+        ])->fetchObject();

@@ -142,8 +148,7 @@ public function claimItem($lease_time = 30) {
-        ->condition('item_id', $item->item_id)
-        ->condition('expire', 0);
+        ->condition('item_id', $item->item_id);

Haven't made it all the way through this patch because I got hung up on this. I don't understand _why_ the change is needed. In addition if we read above the update the second block of code is part of we see the code is using the expire = 0 part of the condition to ensure only one process can claim an item. The current code will always succeed in updating removing this protection.

mile23’s picture

Doing some triage.

mile23’s picture

Issue summary: View changes
nick.murza’s picture

StatusFileSize
new729 bytes

patch kill the issue, but need to find the core of error.

intrafusion’s picture

The 10.1.x patch from #62 doesn't apply to 10.2.x but the 11.x patch from #67 does, testing whether this still fixes the issue for me

swirt’s picture

Patch #67 seems to no longer apply cleanly to 10.3

bapplejax’s picture

StatusFileSize
new15.2 KB

This re-roll patch will cleanly apply the patch referenced in #67 to 10.3.x.
The main issue being QueueWorker being un-commented out in the two files listed:
core/modules/system/tests/modules/cron_queue_test/src/Plugin/QueueWorker/CronQueueTestDatabaseDelayException.php
and
core/modules/system/tests/modules/cron_queue_test/src/Plugin/QueueWorker/CronQueueTestLeaseTime.php

So the patch was looking for commented-out code where it has since been applied in 10.3.

chri5tia’s picture

StatusFileSize
new15.26 KB

Rerolled patch #75 for Drupal 10.3.6

moshe weitzman’s picture

Priority: Normal » Major

Seems like a serious issue. I'd like to move this to the queue component because claimItem() bugs affect non-cron queues as well. Alas I dont think that component exists.

neclimdul’s picture

"bugs affect non-cron queues as well"
Do you have an example? I've not run into this issue and there's conceptual explanation but not real world examples.

Looks like the subsystem tag was added for me and I added the review so removing the tag.

gun_dose’s picture

StatusFileSize
new15.2 KB

I have just updated #75 patch to be compatible with 11.2.x branch. There was small change in comments, so composer couldn't find a place to apply chunk

gun_dose’s picture

gun_dose’s picture

StatusFileSize
new15.19 KB

I have just updated #75 patch to be compatible with 11.2.x branch. There was small change in comments, so composer couldn't find a place to apply chunk

Sorry, I have uploaded a wrong file. This one is correct.

Version: 11.x-dev » main

Drupal core is now using the main branch as the primary development branch. New developments and disruptive changes should now be targeted to the main branch.

Read more in the announcement.