Protheus: rotina parou? O que ch…

Protheus: rotina parou? O que checar

Atualizar o Protheus é um procedimento rotineiro em ambientes corporativos, mas nem sempre a entrega do build ou patch é indolor: rotinas que funcionavam passam a falhar. Este artigo técnico detalha um checklist aprofundado para diagnosticar e remediar rotinas interrompidas após atualização. Assumo familiaridade com arquitetura Protheus (AppServer, SmartClient, AdvPL/TDS), administração de sistemas e bases de dados corporativas.

1. Primeiras verificações e isolamento do problema

Ao detectar uma rotina parada após atualização, o primeiro objetivo é reduzir a superfície de análise. Proceda assim:

  • Confirmar escopo: a falha ocorre para todos os usuários/empresas ou apenas em um tenant/filial? Reproduzindo em homologação ou somente em produção?
  • Reproduzir o erro com dados mínimos: capture parâmetros de entrada, sequência de telas ou endpoint que dispara a rotina.
  • Registrar o momento exato da atualização e identificar quais builds/patches foram aplicados (número do build do executável AppServer/SmartClient, build do dicionário, patches aplicados).
  • Se possível, validar se houve rollback parcial (arquivos substituídos apenas no servidor de aplicação, sem tocar a base de dados).

2. Logs: onde procurar e como interpretar

Logs são a principal fonte de evidência. Conheça os pontos de coleta e os padrões de erro relevantes.

  • AppServer: examine o arquivo de log do AppServer (appserver.log ou arquivo configurado). Procure por ERROR, FATAL, EXCEPTION, SIGSEGV, undefined symbol, ou mensagens de compilação de runtime.
  • SmartClient: logs locais do SmartClient (trace/totvsclient.log) podem revelar erros de interface, scripts ou problemas de comunicação com o AppServer.
  • Banco de dados: logs do SGBD (SQL Server Error Log, alert.log do Oracle, syslog/journalctl para Postgres) para problemas de conexão, deadlocks ou erros de execução de SQL gerado pela rotina.
  • Sistema operacional: syslog, journalctl (Linux) e Event Viewer (Windows) ajudam a identificar falhas de bibliotecas nativas, permissões ou ações de antivirus que interromperam processos.
  • Ferramentas de busca: utilize tail -f, grep/egrep, ou utilitários de log central (ELK, Splunk) com queries por timestamps, nome do usuário e termos de exceção.

3. Compatibilidade de versões e notas de breaking changes

Atualizações frequentemente trazem mudanças de API, remoção de parâmetros ou alteração de comportamento de funções internas. Verifique:

  • Matriz de compatibilidade: confirme a compatibilidade entre versão do AppServer, SmartClient, dicionário de dados e build do ADVPL. Consulte notas técnicas da TOTVS relativas ao build aplicado.
  • Notas de release e breaking changes: procure por alterações em funções ADVPL, assinatura de APIs, mudanças em parâmetros de compilador ou no comportamento de rotinas de sistema.
  • Patches incrementais: algumas correções são entregues em hotfixes subsequentes; valide se há hotfixes correlacionados com o problema.
  • Versões de bibliotecas nativas: alteração em bibliotecas C/C++ (DLL/.so) que o AppServer consome — verifique se houve atualização de runtime (glibc, OpenSSL, etc.).

4. Ambiente de execução: serviços, variáveis e bibliotecas

Depois de confirmar que a versão aplicada é suportada, verifique o ambiente onde o Protheus roda.

  • Serviços: reinicie AppServer, SmartClient e quaisquer serviços auxiliares (job servers, brokers). Em Linux, use systemctl restart e confire status com systemctl status.
  • Variáveis de ambiente: PATH, LD_LIBRARY_PATH (Linux) ou PATH (Windows) podem apontar para versões antigas de bibliotecas. Verifique variáveis customizadas utilizadas pelo AppServer.
  • Permissões de arquivos: após update, permissões de execuçã o ou propriedade de arquivos executáveis ou bibliotecas podem ter sido alteradas. Confirme usuário que executa o AppServer tem leitura/execução nos binários e acesso ao diretório do dicionário.
  • Arquivos de configuração: appserver.ini, smartclient.ini, server.ini ou arquivos equivalentes podem ter parâmetros novos ou descontinuados. Compare com a versão padrão distribuída no build.
  • Consistência entre servidores: em ambientes com multi-appserver, certifique-se que todos tenham o mesmo build e configuração; divergências causam comportamento imprevisível.

5. Código customizado: recompilação e incompatibilidades AdvPL

Customizações são a causa mais comum de rotinas que “pararam” após update. Pontos-chave:

  • Recompilação obrigatória: após atualização do dicionário ou do compilador ADVPL, módulos custom (RPOs ou fontes advpl) normalmente precisam ser recompilados com o novo ambiente. Falta de recompilação gera erros de symbols não encontrados ou comportamento incorreto.
  • Deprecated APIs: funções internas podem ter sido alteradas ou removidas. Procure substitutos na documentação e atualize includes.
  • Includes e bibliotecas: verifique paths de include e libs compartilhadas. Imports de bibliotecas custom ou de terceiros podem falhar se as bibliotecas do novo build mudaram suas interfaces.
  • Controle de versão do código: sempre mantenha fontes em repositório e registre o commit/versão implantada. Isso facilita rollback seletivo em caso de incompatibilidade.
  • Testes unitários e de integração: rotinas isoladas podem passar, mas falhar em combinação. Invista em uma suíte mínima de testes que valide fluxos críticos após recompilação.

6. Banco de dados: scripts de atualização, schema e performance

Atualizações podem incluir scripts que alteram schema, índices ou procedimentos armazenados. As consequências variam:

  • Scripts aplicados com erro: verifique histórico de migração e log de execução dos scripts. Um script parcialmente aplicado (com erros) pode deixar o schema inconsistente.
  • Campos e índices ausentes: rotinas que dependem de colunas adicionadas podem falhar com erro de column not found. Faça um diff entre schema esperado e o atual.
  • Permissões: a conta de conexão (usuário do Protheus no SGBD) pode necessitar de privilégios novos para executar comandos DDL/DDL temporário ou criar objetos temporários.
  • Performance e planos de execução: alterações em índices ou estatísticas do SGBD podem gerar planos diferentes e trazer timeouts. Recoleta de estatísticas (UPDATE STATISTICS / ANALYZE) e reconstrução de índices podem ser necessárias.
  • Conectores/Drivers: mudanças no driver ODBC/JDBC ou atualização do cliente do SGBD podem romper compatibilidade. Confirme versão e parâmetros de timeout/charset.

7. Integrações externas, webservices e segurança (TLS/Certificados)

Erros em rotinas que consomem serviços externos frequentemente estão ligados a mudanças de segurança ou protocolos:

  • TLS e ciphers: atualizações podem forçar TLS 1.2/1.3. Clients que utilizam bibliotecas antigas (OpenSSL/SSPI) podem falhar na handshake. Verifique logs de handshake e atualize bibliotecas ou configure ciphers compatíveis.
  • Alteração de endpoints ou autenticação: provedores de serviço podem alterar URLs ou métodos de autenticação (Basic → OAuth2). Verifique payloads e headers usados pela rotina.
  • Certificados: certs expirados ou cadeia incompleta no servidor impedem conexões seguras. Valide a cadeia, a data e a confiança do certificado usado pelo AppServer.
  • Timeouts e retry policies: mudanças de latência em rede após atualização (por exemplo, novas validações síncronas) podem fazer rotinas exceder thresholds. Ajuste timeouts e implemente retry com backoff quando apropriado.

8. Ferramentas de diagnóstico avançado

Quando a causa não é óbvia, use técnicas de diagnóstico para criar evidências determinísticas:

  • Ativar trace detalhado do AppServer/SmartClient: aumente loglevel temporariamente e capture dados de entrada/saída. Atenção ao volume de logs e dados sensíveis.
  • Debug remoto com TDS: se a rotina for ADVPL, anexe um depurador (breakpoints) para inspecionar variáveis e fluxo de execução.
  • Comparação binária e de configuração: use tools de diff para comparar diretórios antes/depois (rsync --dry-run, diff -r). Identifique arquivos alterados inadvertidamente.
  • Captura de tráfego: se a rotina envolve chamadas HTTP/HTTPS, capture via tcpdump ou Wireshark para inspecionar headers, ciphers e payloads (filtrar por IP/porta).
  • Profiling de performance: monitore CPU, memória, I/O e locks durante execução da rotina. Tools como top, vmstat, iostat, perf (Linux) ou Performance Monitor (Windows) ajudam a identificar gargalos.
  • Ambiente de replicação: crie um ambiente de homologação que reproduza a configuração de produção (mesmos builds, dados amostrados) para testar hipóteses sem risco.

9. Estratégias de mitigação e rollback

Quando uma rotina parada impacta operação, medidas rápidas são necessárias:

  • Mitigação temporária: isole o impacto (bloquear job scheduler, redirecionar usuários, scripts alternativos) enquanto investiga.
  • Rollback controlado: execute rollback apenas se tiver garantia de restauração consistente (backup do dicionário, binários e dump da base). Rollback parcial pode deixar sistema inconsistente.
  • Hotfix local: se a causa for um módulo custom, substitua o módulo problemático por versão recompilada/ajustada para o novo build, validando em homologação antes de promoção.
  • Comunicação: informe stakeholders sobre impacto, plano de ação e janela de manutenção. Documente passos de rollback e pré-requisitos.

10. Checklist pós-correção e prevenção para futuras atualizações

Com o problema resolvido, implemente controles para reduzir recorrência:

  • Automatizar testes: criar suítes automatizadas (smoke tests e testes de integração) que rodem após cada build ou patch.
  • Plano de release e validação: checklist formal que inclui recompilação de fontes custom, validação de scripts de DB, testes de integração e verificação de logs nativos.
  • Ambientes pareados: manter ambientes de homologação que reproduzam configurações de produção, incluindo versões de SGBD, sistemas operacionais e conectores.
  • Documentação de customizações: inventário de módulos custom, dependências externas e ponto de contato; associá-los a riscos de versão.
  • Monitoramento proativo: definir métricas e alertas (erros de aplicação, aumentos súbitos de latência, falhas de handshake TLS) para detectar regressões logo após deploy.

11. Exemplo prático: fluxo rápido de diagnóstico

Exemplo condensado de sequência de ações operacionais para quando uma rotina crítica falha após update:

  • 1) Isolar: parar o job/fluxo que dispara a rotina para evitar dados inconsistentes.
  • 2) Coletar logs: extrair appserver.log, smartclient.log e logs do SGBD com timestamp do erro.
  • 3) Verificar mensagem de erro: buscar por “undefined symbol”, “column not found”, “connection refused”, “TLS handshake” — keywords orientam a causa.
  • 4) Verificar build: confirmar números de build do AppServer e SmartClient e checar notas de versão.
  • 5) Recompilar fontes custom: fazer build em ambiente controlado e validar se erro persiste.
  • 6) Testar conexão e scripts do DB: executar manualmente SQL gerado pela rotina e validar esquema/permissões.
  • 7) Mitigar e/ou rollback: se identificação imediata, aplicar hotfix; se não, considerar rollback planejado.

12. Contato com suporte e documentação

Se esgotadas verificações internas, reúna evidências antes de abrir chamado com a TOTVS/support:

  • Coletar pacotes de logs, dump de tela, versã o completa de componentes (executáveis, libs, SGBD), arquivo de configuração e passos para reproduzir.
  • Incluir amostras de entradas e quick-fix tentados (recompilação, restart, rollback parcial).
  • Priorizar severidade e impacto de negócio para acelerar atendimento.

Conclusão: rotinas que deixam de funcionar após atualizar o Protheus raramente são "misteriosas" — a causa normalmente pertence a uma das frentes: incompatibilidade de versão, ambiente de execução alterado, código custom que precisa ser recompilado ou mudanças no banco/integradores. Seguir uma investigação ordenada (reprodução, logs, comparação de builds, recompilação, validação de DB, tracing de integrações) acelera a resolução e reduz a necessidade de rollback.

Index

Categorias

Sobre o Autor

Foto do Autor
Fábio Hayama

Apaixonado por gestão, tecnologia e inovação, Fábio Hayama possui mais de 15 anos de experiência no universo do ERP Protheus, estratégia empresarial e automação de processos.

Leia mais sobre o Fábio

Entre em contato conosco

Veja mais artigos relacionados

Protheus: rotina parou? O que ch…
Atualizar o Protheus é um procedimento rotineiro em ambientes corporativos, mas nem sempre a entrega do build ou patch é indolo...
Mapeamento antes do Protheus
Atualizar o Protheus não é só apertar um botão: é planejamento, cuidado e muita conversa com o time. Neste artigo eu vou te gui...
Dívida técnica em Protheus
Customizações em sistemas ERP como o Protheus são inevitáveis para atender requisitos de negócio específicos. Entretanto, nem t...
Protheus x Excel: 5 processos
Se você já fez parte de uma pequena ou média empresa, provavelmente conhece bem a cena: alguém salva uma planilha com nome tipo...