Lorsque vous soumettez un problème à un référentiel Mycroft, veuillez suivre ces instructions pour nous aider à vous aider.
Par exemple:
Par exemple:
20:00:14.407 | ERROR | 949 | concurrent.futures | exception calling callback for <Future at 0x737d7b10 state=finished raised KeyError>Traceback (most recent call last): File "/usr/lib/python3.7/concurrent/futures/_base.py", line 324, in _invoke_callbacks callback(self) File "/home/pi/mycroft-core/.venv/lib/python3.7/site-packages/pyee/_executor.py", line 60, in _callback self.emit('error', exc) File "/home/pi/mycroft-core/.venv/lib/python3.7/site-packages/pyee/_base.py", line 111, in emit self._emit_handle_potential_error(event, args[0] if args else None) File "/home/pi/mycroft-core/.venv/lib/python3.7/site-packages/pyee/_base.py", line 83, in _emit_handle_potential_error raise error File "/usr/lib/python3.7/concurrent/futures/thread.py", line 57, in run result = self.fn(*self.args, **self.kwargs) File "/home/pi/mycroft-core/.venv/lib/python3.7/site-packages/pyee/_base.py", line 121, in g self.remove_listener(event, f) File "/home/pi/mycroft-core/.venv/lib/python3.7/site-packages/pyee/_base.py", line 136, in remove_listener self._events[event].pop(f)KeyError: <bound method MessageWaiter._handler of <mycroft.messagebus.client.client.MessageWaiter object at 0xb2e8fd90>> 20:00:14.408 | ERROR | 949 | concurrent.futures | exception calling callback for <Future at 0x737d79d0 state=finished raised KeyError>Traceback (most recent call last): File "/usr/lib/python3.7/concurrent/futures/_base.py", line 324, in _invoke_callbacks callback(self) File "/home/pi/mycroft-core/.venv/lib/python3.7/site-packages/pyee/_executor.py", line 60, in _callback self.emit('error', exc) File "/home/pi/mycroft-core/.venv/lib/python3.7/site-packages/pyee/_base.py", line 111, in emit self._emit_handle_potential_error(event, args[0] if args else None) File "/home/pi/mycroft-core/.venv/lib/python3.7/site-packages/pyee/_base.py", line 83, in _emit_handle_potential_error raise error File "/usr/lib/python3.7/concurrent/futures/thread.py", line 57, in run result = self.fn(*self.args, **self.kwargs) File "/home/pi/mycroft-core/.venv/lib/python3.7/site-packages/pyee/_base.py", line 121, in g self.remove_listener(event, f) File "/home/pi/mycroft-core/.venv/lib/python3.7/site-packages/pyee/_base.py", line 136, in remove_listener self._events[event].pop(f)KeyError: <bound method MessageWaiter._handler of <mycroft.messagebus.client.client.MessageWaiter object at 0x7514b7b0>>
Pourriez-vous essayer de définir le niveau de journalisation pour déboguer en entrant la commande cli :log level debug
pour voir si cela donne plus d'informations sur ce qu'il essaie de faire juste avant l'erreur?
Cela ressemble à une erreur affichée lorsque wait_for_response()
ou wait_for_message()
essaie de supprimer un gestionnaire qui a déjà été supprimé. Je verrai si je peux le provoquer.
Darn, aucune information supplémentaire si je lis correctement ces captures d'écran. Je n'ai pas pu le reproduire hier, mais j'essaierai encore.
@forslund désolé: /
Juste une idée ici. Si l'utilisateur ou une compétence installe le package pip "mycroft-messagebus-client", il y a un conflit de version pyee car le messagebus-client utilise toujours pyee == 5.0.1
https://github.com/MycroftAI/mycroft-messagebus-client/pull/4
Je vois cela lors de l'installation à l'échelle du système en tant qu'option --user. Je ne sais pas si cela se produit également dans un venv. Peut-être est-ce lié car il s'agit de pyee.
Si cela se produit, je crois (après le test) que les erreurs se produisant seraient ImportErrors puisque la classe ExecutorEventEmitter n'est pas disponible.
Après quelques recherches et discussions supplémentaires avec Ake, je pense que cela pourrait être la méthode MessageBusClient.emitter.once
tente de faire sortir la fonction de rappel d'un événement qui a déjà été effacé.
Nous devons encore vérifier cela et si cela est vrai, peut-être nous assurer que chaque fonction enregistrée est unique.
J'ai donc fait quelques tests et chaque fonction enregistrée est unique. Je pense que le problème ici n'est pas fatal puisque l'exception est détectée et signalée.
Mes tests me font croire que le problème est une condition de concurrence entre le délai d'expiration (qui supprime le gestionnaire) et la suppression automatique du gestionnaire pyee once
. Cela peut être quelque chose que nous devons signaler en amont à pyee ...
J'ai vu l'erreur moi-même au hasard et j'ai ajouté une journalisation supplémentaire pour voir si je peux localiser où dans le code de mycroft elle se déclenche. Quelque part dans le processus de compétences ...
J'ai ouvert un numéro en amont.
Ok, un correctif à mon observation théorique a été fusionné dans pyee et publié sous la version 8.1.0. Je vais préparer un PR ici et sur Adapt pour synchroniser les versions et nous verrons si cela résout le problème. Sinon, il y a aussi un autre problème :)
Commentaire le plus utile
Ok, un correctif à mon observation théorique a été fusionné dans pyee et publié sous la version 8.1.0. Je vais préparer un PR ici et sur Adapt pour synchroniser les versions et nous verrons si cela résout le problème. Sinon, il y a aussi un autre problème :)