Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Pagetitle
Application Server - 24.3.1.01
Application Server - 24.3.1.1

Correções

...

Expandir
titleFunção FCreate quando utilizada com um caminho do client, está retornando um handle sempre válido, mesmo quando a pasta não existe

Incidente: Função FCreate quando utilizada com um caminho do client, está retornando um handle sempre válido, mesmo quando a pasta não existe, causando erro depois.

Solução: Problema só ocorre no binário Onça, devido a uma melhoria no controle de arquivos para webapp/web-agent, faltava verificar se a pasta de destino existia antes de criar o arquivo.
Referente ao chamado: DTAPPSRV-8968

Expandir
titleEm um objeto Grid, ao incluir uma linha utilizando a tecla seta para baixo a linha atual é apagada

Incidente: Em uma GRID, ao pressionar seta para baixo para criar uma nova linha, a linha atual é "apagada"

Solução: Correção feita para tratar corretamente a criação de uma nova linha sem perder a anterior.
Referente ao chamado: DTAPPSRV-9073

Expandir
titleTela de criação de diretório não aparece ao imprimir relatório na release 12.1.2410

Incidente: Ao imprimir e selecionar um diretório que não existe no client, o mesmo não está verificando isso e no final da geração do arquivo gera um error.log porque o diretório não existe.

Solução: Primeiro é verificado se foi possível criar o arquivo do lado do client, se negativo já retorna erro e o ADVPL consegue tratar corretamente a criação de diretório se for o caso.
Referente ao chamado: DTAPPSRV-9074

Expandir
titlecGetFile não adiciona extensão de arquivo automaticamente, quando utilizado via WebApp

Incidente: Ao utilizar a função tFileDialog, usar o retorno diretamente na função CpyT2S não funciona.

Solução: Como a função tFileDialog joga o arquivo na pasta do usuário do webapp, foi necessário alterar a função CpyT2S para considerar essa pasta como sendo do lado do servidor para conseguir realizar a cópia.
Referente ao chamado: DTAPPSRV-9101

Expandir
titleAccess Violation utilizando BuildKillUsers=1 - Message_t::ReceiveAsyncEvent

Incidente: Foi observada uma intermitência no encerramento dos processos durante uma compilação de fonte ou aplicação de patch que em certas situações gerava queda do Appserver.

Solução: Foi criada uma proteção na finalização dos recursos REST para evitar essa intermitência.
Referente ao chamado: DTAPPSRV-8734

Expandir
titleExibição incorreta de registros no APSDU com tabela SQLITE filtrada

Incidente: Ao aplicar um filtro com a expressão OR em uma tabela aberta via RDD SQLite, a navegação com DBSkip(-1) apresentava falha: a aplicação não conseguia identificar corretamente o BOF (begin of file) durante a emulação ISAM.

Solução: Fizemos um ajuste no AppServer para evitar a falha na identificação do BOF, o que trazia um falso entendimento de que a aplicação estava retrocedendo na navegação dos registros.
Referente ao chamado: DTAPPSRV-8930

Expandir
titleAvaliar diferença de comportamento da função GetUserInfoArray via Command Line

Incidente: função GetUserInfoArray apresentando diferença de comportamento via linha de comando do AppServer. No array de retorno da função não estava vindo os dados de nome da máquina e do usuário logado, diferente de quando executado via Smartclient.

Solução: foram realizados ajustes na camada de criação de jobs.
Referente ao chamado: DTAPPSRV-8987

Expandir
titleErro 404 quando App_Environment está ativo e RootPath for relativo

Incidente: Erro 404 ao acessar o Protheus via WebApp quando a chave App_Environment está ativa e a chave RootPath utiliza um caminho relativo. O erro ocorria devido a uma restrição que bloqueia o uso de ".." na URL. Como o caminho relativo incluía "..", a requisição era barrada.

Solução: Quando RootPath for configurado como relativo, ele passará a ser convertido internamente para um caminho absoluto.
Referente ao chamado: DTAPPSRV-9003

Expandir
titleErro no gerenciamento de licenças pode ocasionar interrupção do Application Server

Incidente: Queda do AppServer durante o gerenciamento de licenças web. Uma exceção lançada pelo gerenciador de licenças, ao tentar adicionar novamente uma licença já marcada como em uso, não era tratada, ocasionando a queda do AppServer.

Solução: Adicionado tratamento para a possível exceção lançada pelo gerenciador de licenças, prevenindo a queda do AppServer.
Referente ao chamado: DTAPPSRV-9043

Expandir
titleErro no uso de parâmetros nomeados no método New

Incidente: Parâmetros nomeados não estavam funcionando ao chamar o construtor New.

Solução: Foi realizado o tratamento na linguagem TLPP para sanar esse débito técnico.
Referente ao chamado: DTAPPSRV-9044

Expandir
titleInstabilidades do binário durante debug/compilação

Incidente: Inconsistência durante o debug multithread de APIs REST via VSCode que em determinadas situações ocasionava a queda do server REST.

Solução: Foi inserida uma proteção no código para evitar a inconsistência observada.
Referente ao chamado: DTAPPSRV-9061

Expandir
titleHTTPQuote enviado "Content-Length=0" no parâmetro "Delete" gerando erro na requisição pelo Itau

Incidente: HTTPQuote apresenta falha enviando Content-Length=0 incorretamente na requisição HTTP DELETE.

Solução: Revisado a função HTTPQuote para tratar corretamente a requisição do tipo HTTP DELETE.
Referente ao chamado: DTAPPSRV-9099

Expandir
titleAccess Violation - Message_t::ReceiveAsyncEvent

Proteção de uso de contextos na camada de comunicação para evitar falhas que resultavam na geração de arquivos de depuração (*.dmp)
Referente ao chamado: DTAPPSRV-9110

Expandir
titleAtualização SQLite

Incidente: Inconsistências observáveis na integração com SQLite.

Solução: Atualizações realizadas nas APIs dos componentes envolvendo o SQLite
Referente ao chamado: DTAPPSRV-9112

Expandir
titleError with IDP metadata file

Incidente: No momento de uso da autenticação via SAML é apresentada a mensagem de erro: Error with IDP metadata file: IDP metadata URI error: Couldn't resolve host name.

Solução: Implementação de correção na mensagem de erro e documentação de como proceder no caso da ocorrência do erro. Documentação: https://tdn.totvs.com/display/tec/SAML+-+Error+with+IDP+metadata+fileImage Added
Referente ao chamado: DTAPPSRV-9119

Expandir
titleBroker Agent não está fazendo scale in

Incidente: Broker Agent não estava fazendo scale-in na versão 24.3.0.11.

Solução: Correção no processo de Scale-in executado pelo Broker Agent.
Referente ao chamado: DTAPPSRV-9158

Expandir
titleAccess Violation - Message_t::ReceiveAsyncEvent

Proteção de uso de contextos na camada de comunicação para evitar falhas que resultavam na geração de arquivos de depuração (*.dmp)
Referente ao chamado: DTAPPSRV-9164

Expandir
titleAppServer parando de forma indevida novamente 24.3.0.11

Proteção de uso de contextos na camada de comunicação para evitar falhas que resultavam na geração de arquivos de depuração (*.dmp)
Referente ao chamado: DTAPPSRV-9166

Expandir
titleAccess Violation - Message_t::ReceiveAsyncEvent

Proteção de uso de contextos na camada de comunicação para evitar falhas que resultavam na geração de arquivos de depuração (*.dmp)
Referente ao chamado: DTAPPSRV-9169

Expandir
titleAccess Violation - tVdrThreadPool::checkInstances

Incidente: Access Violation em serviço Rest ou Broker.

Solução: Foi realizado um tratamento interno para proteger o serviço, finalizando graciosamente a conexão afetada, porém mantendo as demais conexões com o fluxo esperado.
Referente ao chamado: DTAPPSRV-9176

Expandir
titleAccess Violation - tProgramAbs::~tProgramAbs()

Incidente: Access violation gerado em um json durante uma exceção tratável, especialmente se for json inline.

Solução: O servidor de aplicação fez o tratamento para que um comportamento inesperado do objeto json não gere uma inoperância do servidor.

Referente ao chamado: DTAPPSRV-9178

Expandir
titleAccess Violation - tString::operator<<

Incidente: Em um fonte PRW, declarar duas variáveis como char / character, e tentar somá-las , sendo que AMBAS as variáveis possuem valor nulo (NIL), causava o término anormal do Serviço do TOTVS Application Server, com a ocorrência crítica "Access Violation".

Correção: O comportamento do operador de soma tipado já considerava variáveis com conteúdo NIL como uma string em branco. Desse modo, a soma de duas variáveis tipadas como string com conteúdo NIL retornará uma string em branco.
Referente ao chamado: DTAPPSRV-9200

Expandir
titleDefrag apresentando erro de RPO já aberto

Incidente: Problemas durante aplicação de patch e desfragmentação do RPO.

Solução: Foi ajustado um tratamento de validação de duplicidade de recursos que estava mantendo o rpo aberto.
Referente ao chamado: DTAPPSRV-9229

Expandir
titleInconsistência no comportamento do ErrorBlock ao tratar erros de utilização do método SET da classe tHashMap

Incidente: Inconsistência no comportamento do ErrorBlock ao tratar erros de utilização do método SET da classe tHashMap

Solução: Foi inserida uma correção no código para que erros envolvendo a utilização dos métodos SET, GET, DEL e LIST da classe tHashMap sejam tratados conforme esperado pelo ErrorBlock.
Referente ao chamado: DTAPPSRV-9244

Expandir
titleErro Cannot update a constant string no uso da função TCSetParam

Ocorrência: Mensagem "FATALSERVER Cannot update a constant string" gerada no console.log do Application Server, com uma pilha de chamadas interna indicando a chamada TOP_LITE_TCSetParam.

Correção: Foi realizado o tratamento adequado do parâmetro recebido na função TCSetParam (https://tdn.totvs.com/x/4bclEImage Added).
Referente ao chamado: DTAPPSRV-9259

Melhorias

...

Expandir
titleImplementar configuração para definir limite máximo do protocolo SSL

Incidente: Configurar o protocolo máximo suportado pelo servidor REST, devido à restrição de comunicação com alguns servidores.

Solução: Criada a chave SSLMaxMethod para o REST, que aceita os mesmos valores da chave SSLMethod.
Referente ao chamado: DTAPPSRV-8008

Expandir
titleImplementar suporte IPv6 ao serviços REST 2.0 e Porta Multiprotocolo (MPP)

Incidente: Implementar suporte ao protocolo IPv6 nos serviços portal multiprotocolo, REST 2.0

Solução: Criada a possibilidade de ativar o protocolo IPv6 nos serviços de REST 2.0 e portal multiprotocolo (MPP). Vide documentação: https://tdn.totvs.com/x/wwmeCQImage Added
Referente ao chamado: DTAPPSRV-8102

Expandir
titleImplementar validação de Duplicidade de Métodos, em tempo de compilação, de API REST TLPP com Annotation

Incidente: Se dois ou mais fontes definissem, via annotation, um endpoint Rest com a mesma URL, isso poderia causar uma subida parcial dos serviços de Rest. Por exemplo, um fonte x.tlpp definia @Get("/test/resource") e um fonte y.tlpp também poderia definir o mesmo @Get("/test/resource").

Solução: Foi realizado um tratamento em tempo de compilação, que sempre observa se alguma URL de Rest, definida via annotation, já existe. Se já existir, a compilação desse fonte causa erro, alertando sobre a duplicidade. Com isso, se no repositório já existir um endpoint @Get("/test/resource") e um novo fonte tentar definir o mesmo @Get("/test/resource"), isso causará erro de compilação.

Referente ao chamado: DTAPPSRV-8463

Expandir
titleTXMLManager - Método para retornar a quantidade de elementos

Solicitação: Existir na classe TXMLManager uma forma de retornar quantos elementos existem em um certo grupo.

Solução: Criado o método XPathElementCount, que retorna a quantidade de nós com o mesmo nome apontado por uma expressão XPath.
Referente ao chamado: DTAPPSRV-8723

Expandir
titleTXMLManager - Melhoria no processo de navegação através de XPath

Solicitação: Foi solicitado a criação de métodos na classe TXMLManager para navegação baseado numa expressão XPath.

Solução: Criado o metodo XPathSetPostion na classe TXMLManager, que posiciona o objeto de acordo com a expressão XPath.

Referente ao chamado: DTAPPSRV-8724

Expandir
titleTratamento de burst de conexões no Broker HTTP

Solicitação: ocorrência de "efeito manada" se muitos usuários se conectassem ao mesmo tempo (num intervalo de 5 segundos ou pouco mais) no ERP via broker, causando sobrecarga de memória no servidor que estivesse mais disponível para balanceamento

Solução: foi adicionado um "peso" a cada nova conexão a um servidor, de modo que mesmo se muitos usuários se conectam "ao mesmo tempo" ao ERP via broker não ocorrem mais distorções no balanceamento.
Referente ao chamado: DTAPPSRV-8847

Expandir
titleDiagnosticsJson - Adicionar informação sobre tipo do binário utilizado

Solicitação: O arquivo de diagnostics.json não estava salvando as informações sobre o tipo da build utilizada.

Solução: Foi inserido no arquivo diagnostics.json as informações sobre o tipo da build utilizada (RELEASE, REL WITH DEBUG ou DEBUG).
Referente ao chamado: DTAPPSRV-9030

Expandir
titleInserir no monitor do Broker uma coluna com a informação de uptime de cada AppServer secundário

Solicitação: Visualizar informação de inicialização do Application Server secundário na tela de status do Broker.

Solução: Foi alterada a apresentação de dados da tela de status do Broker e foram incluídas as informações de horário em que o serviço foi ativado (uptime) e a informação do identificador do processo do serviço (pid) para facilitar na identificação de múltiplos serviços ativados no mesmo host físico.
Na mensagem de status json foram inseridas as informações de horário em que o serviço foi ativado (uptime) e a informação do identificador do processo do serviço (pid).
Referente ao chamado: DTAPPSRV-9078

Expandir
titleAlterar coluna quarentena no monitor do Broker para exibir o dia e hora que o serviço entrou em quarentena e não o horário da próxima verificação

Solicitação: Exibir data e hora na qual o serviço (Application Server) entrou em quarentena.

Solução: Foi alterada a apresentação de dados da tela de status

...

Correções

Melhorias

...

do Broker e foi removida a informação de próximo horário de monitoria de serviço em quarenta e no lugar foi incluída uma coluna que informa o horário de início de detecção de falha do serviço ("horário de entrada em quarentena").
Na mensagem de status json foi mantida a informação de próximo horário de monitoria de serviço em quarenta (quarantine) e foi incluída a informação de horário de entrada em quarentena (quarantine_entry_time).
Referente ao chamado: DTAPPSRV-9079

Expandir
titleBroker HA - Implementar funcionalidade para que o Broker execute um fork e monitore o processo filho

Incidente: Usuários perdem conexão com ERP em caso de queda do Broker HTTP.

Solução: Implementada uma funcionalidade opcional no Broker HTTP, que em caso de queda reinicia automaticamente o broker, de modo que os usuários não perdem conexão com o ERP. Vai aparecer uma janelinha popup amarela de reconexão (nativa do Smartclient Webapp), mas rapidamente o browser se reconecta na nova instância de broker que foi iniciada, e o usuário pode voltar a trabalhar normalmente.
TDN: https://tdn.totvs.com.br/display/tec/Alta+DisponibilidadeImage Added
Referente ao chamado: DTAPPSRV-9080

Expandir
titleCriar LOG no APPServer para rastrear transações ( begin / commit / rollback )

Solicitação: Dificuldade de identificar rollback de transações nas aplicações do AppServer em AdvPL, principalmente quando a aplicação largou equivocadamente uma transação aberta, e é realizado um rollback implícito no final da thread.

Solução: Criado mecanismo de rastreio de transações, habilitado pela configuração TRACETRANSACTION no environment desejado no appserver.ini. Para maiores informações, consulte a documentação da configuração TRACETRANSACTION no TDN
Referente ao chamado: DTAPPSRV-9144

Expandir
titleIncluir mais informações no nome do arquivo de DUMP gerado pelo AppServer

Solicitação: Incluir mais informações no nome do arquivo de dump gerado pelo AppServer, seja configurado como Broker ou como AppServer.

Solução: Padronizado o nome do arquivo de dump para PREFIX_VERSION_BUILDTYPE_YYYYMMDD_hhmmss_THREADID_PID, onde PREFIX pode ser "core" ou "broker" e BUILDTYPE pode ser "dbg", "relwithdbg", "rel".
Referente ao chamado: DTAPPSRV-9160

Expandir
titleDesligar a geração de core dump quando o AppServer entrar em shutdown

Solicitação: Após sinalizar a finalização do appserver, seja com control+c ( console ) ou stop ( service manager ), se ocorrer um access violation durante a parada do serviço, era gerado um core dump completo no disco, ocupando relevante espaço e dando a falsa impressão que o serviço estaria caindo enquanto estava em uso.

Solução: Para evitar isso, não será mais gerado core dump após o serviço ser finalizado. Caso ocorra um Access Violation durante a finalização do serviço, será apenas mostrando no log de console a mensagem "*** THREAD <nnnnnn> - CRASH DURING APPSERVER SHUTDOWN ***"
Referente ao chamado: DTAPPSRV-9172

Expandir
titleMelhorar monitoramento de Objetos XML dinâmicos

Solicitação: Aplicações e rotinas AdvPL usando XMLPARSER e/ou XMLPARSERFILE, sem chamar a função DelClassintf() ao final da execução, geram aumento de memória da thread.

Solução: Criada a configuração TRACEXMLPARSER=1, para ser colocada no appserver.ini, no environment em uso, para rastrear a criação de objetos XML com as funções acima, e informar se esses objetos não foram limpos no final da aplicação. Para maiores detalhes, consulte no TDN a documentação da configuração TRACEXMLPARSER.
Referente ao chamado: DTAPPSRV-9184

Expandir
titleRemover bibliotecas CTREE Server do pacote Appserver

Solicitação: Descontinuação do driver CTREE Server e CTREE BoundServer

Solução: Remoção das bibliotecas CTREE do pacote do Application Server. Detalhes em: https://tdn.totvs.com/x/BtwNOwImage Added
Referente ao chamado: DTAPPSRV-9222

Expandir
titleMelhorias na instrumentação de Memória do APPSERVER

Solicitação: As informações registradas em console com a configuração ServerMemoryInfo=1 eram mostradas em KB, com 3 dígitos decimais, induzindo a erros de leitura.

Solução: As informações passam a ser mostradas em MegaBytes (MB), com 2 dígitos decimais, para todos os contadores de memória.
Referente ao chamado: DTAPPSRV-9231

Expandir
titleImplementar validação para impedir a inicialização do AppServer com o Kernel UEK

Ocorrência: O kernel UEK do Oracle Linux não é homologado/suportado pelo AppServer e pode causar diversos problemas, por exemplo, quedas, lentidão, entre outros.

Melhoria: Inserida validação do kernel no AppServer Linux para verificar se o kernel é UEK e impedir a inicialização com a mensagem de erro abaixo:

[ERROR][SERVER] [DEBUG] *** THE KERNEL VERSION (N.N.N-NNN.el8uek.x86_64) IS UEK AND IT IS NOT SUPPORTED, PLEASE REFER TO THE DOCUMENTATION OF SUPPORTED OPERATING SYSTEMS https://tdn.totvs.com/x/g4H7Gg

Referente ao chamado: DTAPPSRV-9251

Expandir
titleImplementar mensagem de descontinuação na carga de configurações CTREE Server e BoundServer

Solicitação: Implementar mensagem de descontinuidade do CTREE SERVER e BOUND SERVER no uso das chaves CTREEMODE

Solução: No momento da leitura das chaves CTreeMode (Seção General) e as seções ctreeServer, ctreeMaster, será exibida mensagem de descontinuidade desta funcionalidade, conforme documentação: https://tdn.totvs.com/x/BtwNOwImage Added
Referente ao chamado: DTAPPSRV-9252

Expandir
titleAjustar o retorno dos slots 11 e 12 da TCGetInfo ou criar uma nova função que retorne TODA a lista de Locks

Solicitação: Remover a limitação do tamanho das listas retornadas pela TCGetInfo().

Solução: Fizemos um ajuste no DBAccess 24.1.1.0 (https://tdn.totvs.com/x/Qf4gOImage Added) e removemos o limitador de tamanho para os slots que retornam listas de dados, vide: https://tdn.totvs.com/x/r-VUEImage Added.
Referente ao chamado: DTAPPSRV-9253

Expandir
titleAjustar a TC_Quit para definir quais tipos de conexão devem ser encerradas

Incidente: Implementar uma forma de indicar quais tipos de conexões a TCQuit deve encerrar

Solução: Fizemos uma mudança na TCQuit que agora pode receber um novo parâmetro numérico para determinar seu comportamento.

Ajuste na TCQuit... Agora ela pode receber uma parâmetro numérico para determinar o comportamento de desconexão das threads!

0 = encerra todas as conexões
1 = encerra conexões de dados, mas mantém as conexões de controle de numeração automática e lockbyname (default)

Essa implementação depende do uso do DBAccess 24.1.1.0 ou superior.
Referente ao chamado: DTAPPSRV-9254