After installing the module, and then going to the report, it generates this:
Symfony\Component\Validator\Exception\UnexpectedTypeException: Expected argument of type "array", "string" given in Drupal\Core\Validation\Plugin\Validation\Constraint\ValidKeysConstraintValidator->validate()
Drupal Version 10.2.5
Apache 2.4.58
PHP 8.3.6
MariaDB 10.11.7
Memory limit 512M
The errors in the config show in my status page.
Proposed fix
See MR. comment #21 argues that this does not need tests.
Issue fork config_inspector-3444730
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
Comment #2
duckydan commentedI guess this would be helpful.
Comment #3
amandeep123 commentedComment #4
amandeep123 commentedComment #5
wim leersWhich contrib/custom module?
Comment #6
duckydan commented@wim-leers I am not sure how to answer that. I went to the report page for the first time. I didn't pick any module.
Comment #7
hjuarez20 commentedI'm facing the same issue when I go to /admin/reports/config-inspector
Comment #8
robbymo commentedSimilar issue for me when going to the /admin/reports/config-inspector page after upgrading to the latest version:
Symfony\Component\Validator\Exception\UnexpectedTypeException: Expected argument of type "array", "null" given in Drupal\Core\Validation\Plugin\Validation\Constraint\ValidKeysConstraintValidator->validate() (line 23 of /var/www/html/web/core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/ValidKeysConstraintValidator.php).
After downgrading back to the previous version that I was using (2.1.0) the error goes away.
Comment #9
duckydan commentedComment #10
vbouchetI faced the same issue on my local. I am using demo_umami profile and very few contrib modules.
When running
drush config:inspect, I got the following error:The latest line related to config_inspector in the trace is
Drupal\Core\TypedData\TypedData->validate() at /var/www/html/modules/contrib/config_inspector/src/ConfigInspectorManager.php:355.I simply added
var_dump($config_name)prior line 355 to check what config was being validated. In my case, it wassearch_api_solr.solr_cache.cache_document_default_7_0_0. I deleted my search index/server and disabled the search_api_solr module. After that, the drush command was working as expected.We are probably all reporting the same issue but on a different config. Given the trace, it is very likely to be a core issue.
Comment #11
idebr commentedSee https://www.drupal.org/project/config_inspector/issues/3416934#comment-1...
Comment #12
roderik@Wim Leers - to your question for more info:
This happens to me with several (I guess all) text_long fields.
Running Drupal 10.2.6.
drush config-inspect does not crash for me - reports:
Status report shows a list of errors. When navigating to detail (admin/reports/config-inspector/field.field.paragraph.text.field_text/list), I get an error:
...which seems to suggest Drush is better at protecting against this error, than the UI is?
I tried to patch with the PR from #3416934 (as indirectly suggested by comment #11). Didn't help.
yml as saved in the codebase:
Oddly, I see other fields saved with
But then when they are re-exported, they show
...and both fields 'crash'. So I don't know if that has anything to do with it.
We have allowed_formats module v2.0.0 installed (see third_party_settings). I now see that we should upgrade because Core can do "allowed formats" now. But I don't know if that has anything to do with the error. From what I can see while xdebugging, the exception happens when inspecting "format: restricted_html" (just as Drush suggests), not the allowed_formats.
Crash still happens after uninstalling allowed_formats module.
Comment #13
roderikComment #14
dpiLooks like resolved elsewhere...
Comment #15
roderikJust for reference: this was never resolved.
The status page still crashes on D10.2.
I don't know what happened with the issue branch in #3416934: Config Inspector crashes on 10.1.x + 10.2.x for `type: mapping` with `nullable: true` due to core bug: whether it was just forgotten, or maybe not applicable for some reason.
Either way: it doesn't matter anymore, since we all moved on to D10.3+ now.
Comment #16
roderikActually, this still happens on my D10.3 too.
So the status is still what it was per #12 and I'm setting this back to active.
By now, I should probably re-check
So: reopening, setting to active, and leaving the "Needs steps to reproduce" tag for now. I hope I'll get to it soonish.
Comment #17
dydave commentedJust encountered the same error while testing on 10.4.1 with standard profile on a fresh install.
I then disabled a custom module I was debugging and the page displayed fine again.
Perhaps the exception could be gracefully handled instead of crashing with the error mentioned in the IS ?
Otherwise this issue doesn't seem to be preventing from using the module properly and doesn't seem to come from the module itself, thus lowering the priority to normal.
Thanks in advance!
Comment #18
roderik@dydave: can you get to a reproducible situation? (Does your custom module have imported config and/or a schema in config/schema that you can isolate / share?)
The first thing we'll need to do here, is isolate a situation that causes the crash. And ideally make a failing test case out of it.
I'll re-try based my earlier message... some time. Because I'm still not sure what exactly fails. (I need to re-test what goes wrong with our "restricted_html" config because it has changed since I tested/wrote #12.)
Comment #19
dydave commentedThanks @roderik!
I was working on the following issue #3499850: Add module configuration schema file and while debugging the config_object I was trying the type 'route' for :
https://git.drupalcode.org/project/login_switch/-/merge_requests/4/diffs...
So in other words, for example:
If you try using the type
routefor example, the error should appear immediately and the page/admin/reports/config-inspectorcrash.Hope this will help reproducing the issue.
Let us know if there is anything else we could do to help.
Thanks in advance!
Comment #20
golubovicm commentedFor me, when config of default value format was:
/admin/reports/config-inspector was failing, complaining that format has to be an array, not the string (message from ticket description).
After changing config file to:
Error message was gone and page was displayed correctly.
Comment #21
roderikI was inspired by the recent #3359846: Crashes on leftovover themeconfig PR to look at the code again and could make some sense of it (because I now understand/think that I can ignore the impenetrable TypedData code). #3359846 does (almost) the same thing to different code, btw.
Proposed fix included in new MR. And...
I think it's the second. I think this just needs a try-catch + return error, and I don't need to bother about writing tests that cause any exception.
Manual testing done
drush config:inspect:inspector->validateValues()is called beforeinspector->checkValues(), which is (I think) therefore never called and doesn't get a chance to choke.Reproducing the error (though I'm arguing it's unnecessary)
1) we have #19
2) Putting comments #12 and #20 in context:
If you have a formatted text field, and you change the default value to
and import that: this will cause the fatal error in the issue title.
Random useless info
This is of course a completely bogus value: the actual default value would be:
...and Core does not allow an empty "value".
Our config did, however, have only a default format in the config, like:
...which, I assume, was somehow necessary to work around a bug / select the correct default format, when allowed formats was still implemented in contrib (allowed_formats module). But:
drush config:exportwill re-export this format-without-value in the first-above faulty format which causes the fatal error when you re-import the exported file.Comment #22
roderikComment #24
gábor hojtsyAnyone tested this other than roderik? Not that I don't trust roderik but a second set of eyes would be great :)
Comment #25
nevergoneTested and works well.
Comment #26
duckydan commentedThis fixes it for me.
Comment #27
duckydan commentedComment #28
tomefa commentedi can confirm that the PR fix the issue for me too.
Comment #29
itamair commentedI can also confirm that the PR fix the issue for me too.
(Drupal 11, PHP 8.3)
Comment #30
joelpittetRTBC++ bumping priority because I can't see the report page.
Comment #31
gábor hojtsy#3416934: Config Inspector crashes on 10.1.x + 10.2.x for `type: mapping` with `nullable: true` due to core bug was just merged (even though it was marked fixed 2 years ago). That issue was mentioned above as it exposes the same error message. However I think this strengthening of the behaviour of config inspector with invalid schemas is a good idea since it will actually report such issues instead of throwing exceptions. As a developer tool I agree it should report issues instead of break hard.
Comment #32
gábor hojtsyComment #34
gábor hojtsyComment #36
joelpittetThank you Gàbor, I am interested to see this in action, where it helps me spot missing or broken schema.