Application Server - 20.3.2.19
- Criado por Paulo Reinaldo Tovo Filho, última alteração em 26 fev, 2025

EM DESENVOLVIMENTO
Correções
Incidente: em certas situações passa a não aceitar conexões, devido ao esgotamento do número de handles pelo processo (Linux)
Solução: correção do processo de monitoramento ativo no broker, que estava causando o esgotamento de handles utilizados pelo processo.
Referente ao chamado: DTAPPSRV-7923
Incidente: Corrompimento do RPO após aplicação de um patch gerado pelo Appserver Onça-preta no Appserver Harpia.
Solução: Proteção para que aceite somente o valor do tamanho da chave de criptografia aleatória gerada pelo Appserver Harpia.
Referente ao chamado: DTAPPSRV-8197
Incidente: Ao realizar uma requisição SAML com um AppServer Linux, o AppServer fechava abruptamente.
Solução: Corrigida a comunicação SAML para não acontecer a queda.
Referente ao chamado: DTAPPSRV-8227
Incidente: Quando do uso de recursão no construtor de uma classe pode ocasionar o erro de variable is no an object.
Solução: Implementado o tratamento de recursão em chamada de construtor de classe
Referente ao chamado: DTAPPSRV-8238
Incidente: Durante a utilização do broker agent, foi constatada uma incoerência entre o local de gravação configurado através do parämetro "-log_path" para serviços que fossem instalados (-install) e o local onde os logs estavam sendo gravados de fato.
Solução: Foi efetuada uma correção no código para que os logs fossem gravados no local esperado ao utilizar o parâmetro -log_path.
Referente ao chamado: DTAPPSRV-8324
Incidente: Interrupção do Application Server quando da tentativa de acesso ao arquivo /proc/stat
Solução: Correção no log de acesso ao arquivo /proc/stat
Referente ao chamado: DTAPPSRV-8341
Incidente: ao acessar a tela central de diagnóstico (shift + F6) eram apresentados warnings "Warning (DecodeUtf8) Invalid conversion from utf-8 to cp1252".
Solução: foram realizados ajustes nas funções de encode e decode.
Referente ao chamado: DTAPPSRV-8342
Incidente: Em uma tela com dois componentes TCBrowse utilizados como lista de itens onde é possível mover itens de um para o outro, ao mover repetidamente o último registro em algum momento pode ser exibido um erro tratado indicando acesso de índice inválido (array out of bounds).
Solução: Foi aplicada uma correção no componente TCBrowse para tratar corretamente os índices caso ocorra exclusão de linhas.
Referente ao chamado: DTAPPSRV-8483
Incidente: Foi observada uma intermitência durante a utilização de valores do tipo JSON em campos do banco.
Solução: Foi criada uma nova proteção no código para as atribuições do tipo JSON.
Referente ao chamado: DTAPPSRV-8405
Incidente: Observou-se congelamento de ManualJob e também de jobs comuns definidos no OnStart quando o RefrashRate do OnStart não está definido.
Solução: Quando não definido, o RefreshRate recebe o valor default de 60 segundos e a checagem de reexecução e reciclagem de jobs são realizadas conforme previsto.
Referente ao chamado: DTAPPSRV-8412
Incidente: Ao acessar a URL do Broker no navegador passando "/TOTVS_BROKER_QUERY/status", o retorno, que é em HTML, está OK; já ao acessar com "/TOTVS_BROKER_QUERY", o retorno, que é em JSON, está vindo com tags HTML.
Solução: Corrigido o retorno em JSON do status do Broker.
Referente ao chamado: DTAPPSRV-8421
Incidente : Apos uma ocorrência de erro "Stack Depth Overflow", caso fosse mostrado no log de console a mensagem "[ERROR][SERVER] GLOBAL STACK LIMIT exceed; RETHROW disabled", o Application Server era finalizando com uma ocorrência de "Access Violation"
Correção : Corrigido o tratamento de desempilhamento do stack de execução AdvPL.
Referente ao chamado: DTAPPSRV-8429
Incidente: Foi observada uma intermitência na interpretação de colchetes em atribuições no .ini do AppServer em ambiente Linux.
Solução: Foi criada uma nova proteção no código para o correto tratamento de colchetes no .ini em ambientes Linux.
Referente ao chamado: DTAPPSRV-8430
Incidente: Durante uma inserção de registro em tabelas SQLITE, após fazer um dbappend(), caso você tente ler o valor de algum campo no alias da inserção, o valor do campo não vinha vazio , mas sim preenchido com valor do campo do registro posicionado na tabela antes da inserção.
Solução : Tratar adequadamente o mecanismo de cache e leitura de valores, somente lendo do SQLITE caso o registro atual não esteja em operação de inserção.
Referente ao chamado: DTAPPSRV-8488
Melhorias
Incidente: A classe tJWT não permitia a recuperação dos dados de header e payload do tokem.
Diferença de comportamento do método de encode da classe tJWT entre as plataforma windows e linux.
Implementação: Inclusão dos métodos getTokenHeader, getHeaderClaim, getTokenPayload e getPayloadClaim e equiparação do comportamento da função decode entre plataformas (Windows e Linux). Para maiores detalhes vide documentação da classe tJWT.
Referente ao chamado: DTAPPSRV-8221