Saat mengirimkan Masalah ke repositori Mycroft, harap ikuti panduan ini untuk membantu kami membantu Anda.
Sebagai contoh:
Sebagai contoh:
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>>
Bisakah Anda mencoba menyetel tingkat log ke debug dengan memasukkan perintah cli :log level debug
untuk melihat apakah ini memberikan info lebih lanjut apa yang coba dilakukan sebelum terjadi kesalahan?
Sepertinya kesalahan ditampilkan saat wait_for_response()
atau wait_for_message()
mencoba menghapus penangan yang sudah dihapus. Akan melihat apakah saya bisa memprovokasi itu terjadi.
Sial, tidak ada info tambahan jika saya membaca tangkapan layar itu dengan benar. Saya tidak dapat mereproduksinya kemarin tetapi akan mencoba lagi.
@slundsurabaya maaf: /
Hanya ide di sini. Jika pengguna atau beberapa keahlian menginstal paket pip "mycroft-messagebus-client", ada konflik versi pyee karena klien-messagebus masih menggunakan pyee == 5.0.1
https://github.com/MycroftAI/mycroft-messagebus-client/pull/4
Saya melihat itu ketika menginstal systemwide sebagai opsi --user. Tidak yakin apakah itu juga terjadi dalam venv. Mungkin itu terkait karena tentang pyee.
Jika itu terjadi, saya yakin (setelah pengujian) kesalahan yang terjadi adalah ImportErrors karena kelas ExecutorEventEmitter tidak tersedia.
Setelah beberapa lebih menyelidik dan mengobrol dengan Ake, saya pikir ini mungkin metode MessageBusClient.emitter.once
mencoba untuk mengeluarkan fungsi panggilan balik dari acara yang telah dihapus.
Kami masih perlu memverifikasi ini dan jika benar, mungkin memastikan bahwa setiap fungsi yang terdaftar adalah unik.
Jadi saya melakukan beberapa pengujian dan setiap fungsi yang terdaftar itu unik. Saya pikir masalah di sini tidak fatal karena pengecualian ditangkap dan dilaporkan.
Pengujian saya membuat saya yakin bahwa masalahnya adalah kondisi balapan antara batas waktu (yang menghapus penangan) dan penghapusan otomatis pengendali pyee once
. Ini mungkin sesuatu yang perlu kami laporkan ke hulu ke pyee ...
Saya telah melihat kesalahan itu sendiri secara acak dan menambahkan beberapa logging tambahan untuk melihat apakah saya dapat menunjukkan di mana dalam kode mycroft itu dipicu. Di suatu tempat dalam proses keterampilan ...
Saya membuka masalah di hulu.
Ok, perbaikan pengamatan teoretis saya telah digabungkan dalam pyee dan dirilis sebagai 8.1.0. Saya akan menyiapkan PR di sini dan di Adapt untuk menyinkronkan versi dan kami akan melihat apakah itu menyelesaikan masalah. Kalau tidak, ada beberapa masalah lain juga :)
Komentar yang paling membantu
Ok, perbaikan pengamatan teoretis saya telah digabungkan dalam pyee dan dirilis sebagai 8.1.0. Saya akan menyiapkan PR di sini dan di Adapt untuk menyinkronkan versi dan kami akan melihat apakah itu menyelesaikan masalah. Kalau tidak, ada beberapa masalah lain juga :)