Árvore de páginas

Correções

Incidente: Finalização inesperada do Totvs Application Server em Linux após a ocorrência de erro crítico registrado no log de console: [THROW] tAutoChar::CheckBuffer() ERROR - *** BUFFER OVERRUN *** 

Solução:  Mecanismo de verificação de conexão e recepção de dados refatorado para a plataforma Linux.

Referente ao chamado: DTAPPSRV-7278

Incidente: O erro "LOCAL declaration follows executable statement" deixou de ser apresentado a partir da versão 20.3.1.0.

Solução:  Foram realizados ajustes pontuais na camada de pré-processamento e o problema foi corrigido.

Referente ao chamado: DTAPPSRV-7158

Incidente: Problema no Try-catch em validações de banco de dados, não estava reconhecendo como um erro.

Solução:  Ajustado identificação de conexões e retorno de bancos para enviar para o CATCH.

Referente ao chamado: DTAPPSRV-7104

Incidente: Quando alguma thread do AppServer está realizando a atualização automática do SmartClient, qualquer outra thread que executar a função File2Printer vai tentar executar o printer.exe no diretório da atualização automática por ser o diretório corrente.

Solução:  Define a chamada ao executável printer.exe na File2Printer para utilizar o full path de execução do AppServer, garantindo que será executado no diretório do AppServer.

Referente ao chamado: DTAPPSRV-7295

Incidente: Finalização inesperada do TOTVS Application Server em execução de múltiplas conexões de RPC AdvPL (Server Side).

Solução:  Protegido um ponto de colisão entre uma finalização de conexão e o aceite de uma requisição de processamento.

Referente ao chamado: DTAPPSRV-7206

Incidente: Incidente: Quando alguma thread do AppServer está realizando a atualização automática do SmartClient, qualquer outra thread que executar a função File2Printer vai tentar executar o printer.exe no diretório da atualização automática por ser o diretório corrente.

Solução: Definida a chamada ao executável printer.exe na File2Printer para utilizar o fullpath de execução do AppServer, garantindo que será executado no diretório do AppServer.

Referente ao chamado: DTAPPSRV-7295

Incidente: A ocorrência de erro na camada REST poderia gerar falha no tratamento das mensagens do protocolo e fazer com que as conexões permanecessem ativas, gerando um acumulo de handles da camada TCP, consequentemente gerando um aumento no consumo de memória por parte do AppServer.

Solução: Fizemos um ajuste na camada de tratamento das mensagens de erro para evitar o comportamento em questão, melhorando assim a contabilização do consumo de memória.

Referente ao chamado: DTAPPSRV-7044

Incidente: A utilização de funções AdvPL que geram troca de mensagens entre o SmartClient e o AppServer poderiam ocasionar uma falha e queda na aplicação.

Solução: Foram criadas proteções na camada de troca de mensagens de eventos entre o SmartClient e o AppServer para evitar que a queda em questão volte a ocorrer.

Referente ao chamado: DTAPPSRV-7174

Incidente: O LogClient não funciona em sistema operacional Linux.

Solução: Implementada correção para o envio de logs quando configurado a seção LogClient.

Referente ao chamado: DTAPPSRV-7183

Incidente: Endpoint com parâmetro(pathParam) codificado falha.

Solução: Implementação realizada para permitir que seja repassado path codificado com barra ("%2F"  "/" ).

Referente ao chamado: DTAPPSRV-7217

Incidente: AppServer configurado com REST com ocorrência de Access Violation.

Solução: Correções realizadas no componente do REST.

Referente ao chamado: DTAPPSRV-7288

Melhorias

Situação: Para incluir novos servidores a serem balanceados, era preciso reiniciar o Broker.

Solução:  Implementação do recurso para incluir servidores a serem balanceados pelo Broker sem a necessidade de reinicialização, por meio do uso do arquivo de comandos .TOTVS_BROKER_COMMAND.

Referente ao chamado: DTAPPSRV-6162

Incidente: A função FindFunction não tem o funcionamento correto quando feito em fontes PRW para funções TLPP.

Solução:  Foi implementado um novo parâmetro na função FindFunction que permite buscar funções com nomes longos, por exemplo, funções em fontes TLPP.
Para usar:
FindFunction("nome da função", [buscar com nomes longos])


Se [buscar com nomes longos] estiver como verdadeiro (.T.) irá procurar por nomes longos, se o valor for passado como falso (.F.) irá procurar por nomes curtos.
Se o parâmetro não for informado continua fazendo a busca como é hoje, em AdvPL com nomes curtos e em TLPP com nomes longos.

Referente ao chamado: DTAPPSRV-4615

Novas Implementações