Mycroft-core: erro pyee | exceção chamando callback para<future at="" state="finished" raised="" keyerror=""/>

Criado em 16 set. 2020  ·  10Comentários  ·  Fonte: MycroftAI/mycroft-core

Como enviar um problema para um repositório Mycroft

Ao enviar um problema para um repositório Mycroft, siga estas diretrizes para nos ajudar a ajudá-lo.

Seja claro sobre o software, hardware e versão que você está executando

Por exemplo:

  • Estou dirigindo o Picroft
  • Com a última versão
  • Com o Wake Word padrão

Tente fornecer etapas que possamos usar para replicar o problema

Por exemplo:

  1. Abra mycroft cli
  2. espere (vem a cada 30 segundos aproximadamente)

Forneça arquivos de registro ou outra saída para nos ajudar a ver o erro

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

Comentários muito úteis

Ok, uma correção para minha observação teórica foi mesclada no pyee e lançada como 8.1.0. Vou preparar um PR aqui e no Adapt para sincronizar as versões e veremos se isso resolve o problema. Caso contrário, há algum outro problema também :)

Todos 10 comentários

Você poderia tentar definir o nível de log para depuração digitando o comando cli :log level debug para ver se ele fornece mais informações sobre o que ele tenta fazer antes do erro?

Parece um erro mostrado quando wait_for_response() ou wait_for_message() tenta remover um manipulador que já foi removido. Vou ver se consigo provocar isso.

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

Droga, nenhuma informação adicional se estou lendo as imagens corretamente. Não consegui reproduzir ontem, mas vou tentar mais alguns.

@forslund, desculpe: /

Apenas uma ideia aqui. Se o usuário ou alguma habilidade instalar o pacote pip "mycroft-messagebus-client", haverá um conflito de versão pyee, pois o messagebus-client ainda está usando pyee == 5.0.1

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

Estou vendo isso ao instalar em todo o sistema como opção --user. Não tenho certeza se também ocorre dentro de um venv. Talvez esteja relacionado, pois é sobre xixi.

Se isso acontecer, acredito (após o teste) que os erros ocorridos seriam ImportErrors, pois a classe ExecutorEventEmitter não está disponível.

Depois de mais sondar e conversar com Ake, acho que esse pode ser o método MessageBusClient.emitter.once tentando retirar a função de retorno de chamada de um evento que já foi apagado.

Ainda precisamos verificar isso e, se for verdade, talvez garantir que cada função registrada seja única.

Então fiz alguns testes e cada função registrada é única. Acho que o problema aqui não é fatal, pois a exceção é detectada e relatada.

Meus testes me fazem acreditar que o problema é uma condição de corrida entre o tempo limite (que remove o manipulador) e a remoção automática pyee once do manipulador. Isso pode ser algo que precisamos relatar upstream para pyee ...

Eu mesmo vi o erro aleatoriamente e adicionei alguns registros extras para ver se posso identificar onde no código de mycroft ele é acionado. Em algum lugar no processo de habilidades ...

Eu abri um problema a montante.

Ok, uma correção para minha observação teórica foi mesclada no pyee e lançada como 8.1.0. Vou preparar um PR aqui e no Adapt para sincronizar as versões e veremos se isso resolve o problema. Caso contrário, há algum outro problema também :)

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

Ahmed-Benj picture Ahmed-Benj  ·  7Comentários

krisgesling picture krisgesling  ·  3Comentários

KathyReid picture KathyReid  ·  8Comentários

ChanceNCounter picture ChanceNCounter  ·  8Comentários

beemorris picture beemorris  ·  6Comentários