Em um determinado processo de deploy tivemos uma situação em que um fonte antigo de API tlpp não foi removido do repositório de fontes e o projeto foi compilado na íntegra, ficando 2 fontes com a mesma definição de método e endpoint de uma determinada API TLPP.
Com isso na carga do Serviço do WS REST com esse RPO tivemos a seguinte mensagem de erro fatal:
[FATAL][SERVER] 14/11/2023 16:21:46[Thread 10768] [THROW] HTTP Server - error, duplicated method, environment: PRODUCAO, URN: /url/api/v3/Processo, method: POST, program: API.RESTV3.TLPP, function: API.U_APIPOSTDATA.
Nota: Nome do Ambiente, URL, Programa e Função apenas ilustrativo, mas ocorreu com fontes reais em TLPP.
Com isso todas as APIs TLPPs que o WS REST respondia pararam de responder aos consumidores. Ou seja, o problema acima não afetou somente a API em questão e sim todas as APIs do ambiente.
Como esse problema não foi imediatamente descoberto (Pela avaliação do log do Appserver - São vários appservers slaves no Ambiente), houve um rollback do RPO e o processo voltou a operar e o time de infraservices ficou confuso com relação ao problema.
A questão foi que a compilação valida se uma User Function ou Function está sendo duplicada, mas não valida se um EndPoint e Método TLPP com Annotation está sendo duplicado na compilação, causando uma falha geral nas APIs Protheus.
A pergunta é: Seria possível travarmos na compilação essa duplicidade?
Sugestões:
Uma sugestão seria uma Melhoria no Linter TOTVS para não permitir que o fonte com annotation duplicado fosse compilado.
Outra sugestão que o AppServer não deixasse de responder as demais APIs por conta de um erro de duplicidade de anottation de um único processo.