Component validation QA: component without default_config overridden causes schema_validator to print stack trace due to missing priority #10143
Closed
Description
schema_validator
component throws an unhandled exception when a custom component is used that does not override get_default_config
and fails to specify a config with key priority
Steps to reproduce
- Define a simple custom policy and deliberately do not override
get_default_config
- Run
rasa train
Observed output
File "/Users/msumm/.pyenv/versions/rasa-qa/lib/python3.8/site-packages/rasa/engine/graph.py", line 455, in __call__
output = self._fn(self._component, **run_kwargs)
File "/Users/msumm/.pyenv/versions/rasa-qa/lib/python3.8/site-packages/rasa/graph_components/validators/default_recipe_validator.py", line 112, in validate
self._validate_core(story_graph, domain)
File "/Users/msumm/.pyenv/versions/rasa-qa/lib/python3.8/site-packages/rasa/graph_components/validators/default_recipe_validator.py", line 395, in _validate_core
self._warn_if_priorities_are_not_unique()
File "/Users/msumm/.pyenv/versions/rasa-qa/lib/python3.8/site-packages/rasa/graph_components/validators/default_recipe_validator.py", line 450, in _warn_if_priorities_are_not_unique
default_priority = schema_node.uses.get_default_config()["priority"]
KeyError: 'priority'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/Users/msumm/.pyenv/versions/rasa-qa/bin/rasa", line 8, in <module>
sys.exit(main())
File "/Users/msumm/.pyenv/versions/rasa-qa/lib/python3.8/site-packages/rasa/__main__.py", line 121, in main
cmdline_arguments.func(cmdline_arguments)
File "/Users/msumm/.pyenv/versions/rasa-qa/lib/python3.8/site-packages/rasa/cli/train.py", line 59, in <lambda>
train_parser.set_defaults(func=lambda args: run_training(args, can_exit=True))
File "/Users/msumm/.pyenv/versions/rasa-qa/lib/python3.8/site-packages/rasa/cli/train.py", line 91, in run_training
training_result = train_all(
File "/Users/msumm/.pyenv/versions/rasa-qa/lib/python3.8/site-packages/rasa/api.py", line 105, in train
return train(
File "/Users/msumm/.pyenv/versions/rasa-qa/lib/python3.8/site-packages/rasa/model_training.py", line 170, in train
return _train_graph(
File "/Users/msumm/.pyenv/versions/rasa-qa/lib/python3.8/site-packages/rasa/model_training.py", line 237, in _train_graph
trainer.train(
File "/Users/msumm/.pyenv/versions/rasa-qa/lib/python3.8/site-packages/rasa/engine/training/graph_trainer.py", line 78, in train
fingerprint_run_outputs = self.fingerprint(
File "/Users/msumm/.pyenv/versions/rasa-qa/lib/python3.8/site-packages/rasa/engine/training/graph_trainer.py", line 145, in fingerprint
return fingerprint_graph_runner.run(inputs={PLACEHOLDER_IMPORTER: importer})
File "/Users/msumm/.pyenv/versions/rasa-qa/lib/python3.8/site-packages/rasa/engine/runner/dask.py", line 106, in run
dask_result = dask.get(run_graph, run_targets)
File "/Users/msumm/.pyenv/versions/rasa-qa/lib/python3.8/site-packages/dask/local.py", line 560, in get_sync
return get_async(
File "/Users/msumm/.pyenv/versions/rasa-qa/lib/python3.8/site-packages/dask/local.py", line 503, in get_async
for key, res_info, failed in queue_get(queue).result():
File "/Users/msumm/.pyenv/versions/3.8.6/lib/python3.8/concurrent/futures/_base.py", line 432, in result
return self.__get_result()
File "/Users/msumm/.pyenv/versions/3.8.6/lib/python3.8/concurrent/futures/_base.py", line 388, in __get_result
raise self._exception
File "/Users/msumm/.pyenv/versions/rasa-qa/lib/python3.8/site-packages/dask/local.py", line 545, in submit
fut.set_result(fn(*args, **kwargs))
File "/Users/msumm/.pyenv/versions/rasa-qa/lib/python3.8/site-packages/dask/local.py", line 237, in batch_execute_tasks
return [execute_task(*a) for a in it]
File "/Users/msumm/.pyenv/versions/rasa-qa/lib/python3.8/site-packages/dask/local.py", line 237, in <listcomp>
return [execute_task(*a) for a in it]
File "/Users/msumm/.pyenv/versions/rasa-qa/lib/python3.8/site-packages/dask/local.py", line 228, in execute_task
result = pack_exception(e, dumps)
File "/Users/msumm/.pyenv/versions/rasa-qa/lib/python3.8/site-packages/dask/local.py", line 223, in execute_task
result = _execute_task(task, data)
File "/Users/msumm/.pyenv/versions/rasa-qa/lib/python3.8/site-packages/dask/core.py", line 121, in _execute_task
return func(*(_execute_task(a, cache) for a in args))
File "/Users/msumm/.pyenv/versions/rasa-qa/lib/python3.8/site-packages/rasa/engine/graph.py", line 461, in __call__
raise GraphComponentException(
rasa.engine.exceptions.GraphComponentException: Error running graph component for node schema_validator.```
Expected Output
A much nicer error message saying that the component is not valid because it does not define a unique value for priority
/does not define any value for priority