Skip to content

Component validation QA: component without default_config overridden causes schema_validator to print stack trace due to missing priority #10143

Closed
@usc-m

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

  1. Define a simple custom policy and deliberately do not override get_default_config
  2. 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

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions