Problem/Motivation
After updating to 4.1.9 we had to revert back because we had an error during deployment. I am not sure what caused it but figured I should report it here. We reverted back to 4.1.8 we have a fairly typical setup, the error occurred a few mins after the code was deployed likely after cron ran? But I'm not sure.
Steps to reproduce
Update from 4.1.8 to 4.1.9 then I think wait for cron to run and I get the following error. But not 100% sure yet how to reproduce the error.
TypeError: Drupal\simple_sitemap\Queue\QueueWorker::__construct(): Argument #2 ($state) must be of type Drupal\Core\State\StateInterface, Drupal\Core\KeyValueStore\KeyValueFactory given, called in /var/www/html/docroot/core/lib/Drupal/Component/DependencyInjection/Container.php on line 259 in Drupal\simple_sitemap\Queue\QueueWorker->__construct() (line 153 of modules/contrib/simple_sitemap/src/Queue/QueueWorker.php).
Drupal\Component\DependencyInjection\Container->createService(Array, 'simple_sitemap.queue_worker') (Line: 177)
Drupal\Component\DependencyInjection\Container->get('simple_sitemap.queue_worker', 1) (Line: 440)
Drupal\Component\DependencyInjection\Container->resolveServicesAndParameters(Array) (Line: 237)
Drupal\Component\DependencyInjection\Container->createService(Array, 'simple_sitemap.generator') (Line: 177)
Drupal\Component\DependencyInjection\Container->get('simple_sitemap.generator', 1) (Line: 440)
Drupal\Component\DependencyInjection\Container->resolveServicesAndParameters(Array) (Line: 237)
Drupal\Component\DependencyInjection\Container->createService(Array, 'simple_sitemap.form_helper') (Line: 177)
Drupal\Component\DependencyInjection\Container->get('simple_sitemap.form_helper') (Line: 197)
Drupal::service('simple_sitemap.form_helper') (Line: 43)

Proposed resolution
Remaining tasks
User interface changes
API changes
Data model changes
Comments
Comment #2
nicholassComment #3
gbyteI may be wrong but your deployment might have been at fault - state was indeed replaced by the key/value store and the error you are getting may be due to a partially old code base or some cache. Please retry the update, run `drush updb -y && drush cr` afterwards and let me know if the modules works.
Comment #4
dpiIf you change services, you need to reset the container.
The typical pattern is by implementing an empty postupdate hook. For example `user_post_update_sort_permissions` / `layout_builder_operation_link_post_update_remove_destination_form_link`.
I've hit this on a handful of projects so far, its annoying that it breaks CI requiring a manual CR beforehand. Especially if you dont have another module implementing an update that happens to do it for you.
A postupdate should be implemented.
Comment #5
gbyteYeah maybe that's what we should be doing - feel free to create an MR. Alternatively adjust your deployment so it cleans the cache which has been the recommended approach since I can remember. I'm surprised your site doesn't break after every update.
Also please open up bug reports against the dev version of the module and only support requests against the stable version.
Comment #6
nicholassJust as follow up our deployment CI is pretty typical, its an Acquia Cloud Next hook as follows and it was clearing cache after deployment. Again too this white screen of death only happened to us ~5min after deployment when our Cypress Testing was about half way through testing, and we have about 509 cypress tests that test various routes of the CMS and features.
Thats what I found really odd is the delay until the error appeared which made me think it could be cron half way through the automated testing.
Comment #7
nicholassUpdate: So today I tried another migration again and its seemed to not be a problem, so could have just been a deployment hiccup? I guess well see if it happens to others or not to see if its an issue, and I guess worst case it can be solved with a cache clear I assume.
Comment #8
dpiOnce you clear the cache its solved.
Its only disruptive for the deployments running after the upgrade.
Comment #9
dpiLinking cause #3436960: simple_sitemap.queue_stashed_results should be in keyvalue instead of state
Comment #10
dpiMR @ https://git.drupalcode.org/project/simple_sitemap/-/merge_requests/93
Comment #13
gbyteThanks.
Comment #14
vermario commentedI have seen this same issue after deployment with the latest version of the module.
Looking at the code in the commit above, it seems that there's only an empty function, is that intentional? Or did we need something like
in there to actually clear the cache?
Comment #15
dpiSee 4
Comment #16
vermario commentedoh, sorry I missed it :-)
(strangely the problem still happened in my deployment even with that piece of code...)