Mycroft-core: erreur pyee | exception appelant le rappel pour<future at="" state="finished" raised="" keyerror=""/>

Créé le 16 sept. 2020  ·  10Commentaires  ·  Source: MycroftAI/mycroft-core

Comment soumettre un problème à un référentiel Mycroft

Lorsque vous soumettez un problème à un référentiel Mycroft, veuillez suivre ces instructions pour nous aider à vous aider.

Soyez clair sur le logiciel, le matériel et la version que vous utilisez

Par exemple:

  • J'utilise Picroft
  • Avec la dernière version
  • Avec le Wake Word standard

Essayez de fournir des étapes que nous pouvons utiliser pour reproduire le problème

Par exemple:

  1. Ouvrez mycroft cli
  2. attendez (ça vient toutes les 30 secondes environ)

Fournissez des fichiers journaux ou une autre sortie pour nous aider à voir l'erreur

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>>

image

hard Bug - complex help wanted

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 :)

Tous les 10 commentaires

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.

Screen Capture_deepin-terminal_20200917141521
Screen Capture_deepin-terminal_20200917141536
Screen Capture_deepin-terminal_20200917141604

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 :)

Cette page vous a été utile?
0 / 5 - 0 notes