Mycroft-core: pyeeエラー| のコールバックを呼び出す例外<future at="" state="finished" raised="" keyerror=""/>

作成日 2020年09月16日  ·  10コメント  ·  ソース: MycroftAI/mycroft-core

Mycroftリポジトリに問題を送信する方法

Mycroftリポジトリに問題を送信するときは、これらのガイドラインに従ってください。

実行しているソフトウェア、ハードウェア、およびバージョンについて明確にしてください

例えば:

  • Picroftを実行しています
  • 最新バージョンで
  • 標準のウェイクワードを使用

問題を再現するために使用できる手順を提供するようにしてください

例えば:

  1. mycroftcliを開きます
  2. 待つ(約30秒ごとに来る)

エラーを確認するのに役立つログファイルまたはその他の出力を提供します

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

最も参考になるコメント

私の理論的観察に対する修正がpyeeに統合され、8.1.0としてリリースされました。 こことAdaptでPRを準備してバージョンを同期し、それで問題が解決するかどうかを確認します。 そうでなければ、他の問題もあります:)

全てのコメント10件

cliコマンド:log level debugを入力して、デバッグするログレベルを設定して、エラーが発生する前に、何をしようとしているのかについてさらに情報が得られるかどうかを確認できますか?

wait_for_response()またはwait_for_message() 、すでに削除されているハンドラーを削除しようとすると、エラーが表示されるように見えます。 私がそれを起こさせることができるかどうかを見ます。

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

くそー、私がそれらのスクリーンショットを正しく読んでいれば、追加情報はありません。 昨日は再現できませんでしたが、もう少し試してみます。

@forslundごめんなさい:/

ここにただのアイデア。 ユーザーまたは一部のスキルが「mycroft-messagebus-client」pipパッケージをインストールする場合、messagebus-clientがまだpyee == 5.0.1を使用しているため、pyeeバージョンの競合が発生します。

https://github.com/MycroftAI/mycroft-messagebus-client/pull/4

システム全体に--userオプションとしてインストールすると、それが表示されます。 それがvenv内でも発生するかどうかはわかりません。 おそらくそれはpyeeについてであるように関連しています。

それが発生した場合、ExecutorEventEmitterクラスが使用できないため、(テスト後に)発生するエラーはImportErrorsになると思います。

Akeとさらに調査してチャットした後、これは、すでにクリアされているイベントからコールバック関数をポップしようとしているMessageBusClient.emitter.onceメソッドである可能性があると思います。

これを確認する必要があります。trueの場合は、登録されている各関数が一意であることを確認してください。

そこで、いくつかのテストを行い、登録された各関数は一意です。 例外がキャッチされて報告されるため、ここでの問題は致命的ではないと思います。

私のテストでは、問題はタイムアウト(ハンドラーを削除する)とpyee onceハンドラーの自動削除の間の競合状態であると私は信じています。 これは、上流でpyeeに報告する必要があるものかもしれません...

私は自分でランダムにエラーを確認し、mycroftのコードのどこでエラーがトリガーされるかを特定できるかどうかを確認するためにログを追加しました。 スキルプロセスのどこか...

私は上流で問題を開きました。

私の理論的観察に対する修正がpyeeに統合され、8.1.0としてリリースされました。 こことAdaptでPRを準備してバージョンを同期し、それで問題が解決するかどうかを確認します。 そうでなければ、他の問題もあります:)

このページは役に立ちましたか?
0 / 5 - 0 評価