Por que meu serviço do Windows BuildBot está falhando imediatamente com o erro 7000?

2

Estou configurando um trabalhador BuildBot em uma VM do Windows Server 2016 Datacenter Edition em execução no Azure. Isso vai construir nosso produto para Windows, usando o compilador Visual Studio C ++.

Cheguei ao ponto em que o trabalhador é instalado e executado em uma sessão de área de trabalho administrativa. Ele se conecta ao nosso servidor mestre de construção e parece ser capaz de acessar todas as ferramentas e serviços necessários, com base nos resultados das compilações de teste.

Eu tenho trabalhado para fazer o trabalhador funcionar como um serviço. Isso tornará possível executar o trabalhador automaticamente como um usuário sem privilégios.

Exceto ... o serviço não inicia. Quando olho no log de eventos, vejo dois erros em 'Registros do Windows → Sistema':

  • ID do evento: 7000

    The BuildBot service failed to start due to the following error: The service did not respond to the start or control request in a timely fashion.

  • ID do evento: 7009

    A timeout was reached (30000 milliseconds) while waiting for the BuildBot service to connect

Não há eventos do próprio BuildBot conectados em 'Registros do Windows → Aplicativo', e esses eventos são registrados (e o serviço é reportado como com falha) imediatamente ao tentar iniciá-lo.

Atualmente, o serviço está configurado para ser executado como 'LocalSystem' (eu estava planejando reprimir as permissões posteriormente). Pelo que entendi, 'LocalSystem' deve ter acesso a todos os recursos locais, então eu não acho que as permissões do sistema de arquivos provavelmente estejam causando esse problema.

  • Há algum motivo comum para os serviços falharem assim?

  • Existem outros registros ou informações de diagnóstico que eu deveria estar olhando?

  • Quais outras etapas eu poderia tomar para determinar o que está causando essa falha?

Editar: esse problema pode ser reproduzido, mesmo usando o serviço de teste simples fornecido em esta resposta de estouro de pilha .

    
por Peter T.B. Brett 14.02.2017 / 13:30

1 resposta

1

O problema acabou sendo DLLs não registradas. Especificamente, o suporte de serviço Python fornecido pelo pywin32 requer que DLLs específicas estejam disponíveis para interação com a API do win32. Essas DLLs devem ser instaladas automaticamente ao instalar o pywin32 com:

pip install pypiwin32

Como mencionado em esta resposta de estouro de pilha , a correção correta nesse caso foi executar:

python C:\Python27\Scripts\pywin32_postinstall.py install

Isso resolveu meu problema.

    
por 14.02.2017 / 14:36