- Criado por Paulo Reinaldo Tovo Filho, última alteração por Fabio Garbin em 30 set, 2025
Você está vendo a versão antiga da página. Ver a versão atual.
Comparar com o atual Ver Histórico da Página
« Anterior Versão 4 Próxima »
EM DESENVOLVIMENTO
Correções
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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+file![]()
Referente ao chamado: DTAPPSRV-9119
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
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
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
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
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
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
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
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
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
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/4bclE
).
Referente ao chamado: DTAPPSRV-9259
Melhorias
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
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/wwmeCQ![]()
Referente ao chamado: DTAPPSRV-8102
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
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
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
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
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
Solicitação: Demanda de autenticação através do protocolo LDAP.
Solução: Implementação da função LDAPUserValid para sistema operacional Windows.
Referente ao chamado: DTAPPSRV-9036
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
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 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
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+Disponibilidade![]()
Referente ao chamado: DTAPPSRV-9080
Incidente: A checagem em compilação para endpoints duplicados em Rest não contemplava ainda duplicidade nos seguintes casos:
Endpoints repetidos dentro do mesmo fonte
Até então, a gente olhava apenas entre fontes distintos.
Faltava olhar dentro do próprio fonte.
Endpoint vazio (duas formas de escrever a mesma coisa)
@Get("")
@Get("/")
Endpoints iguais, de escrita ligeiramente diferente (barra facultativa)
@Get("xpto")
@Get("/xpto")
@Get("xpto/")
@Get("/xpto/")
Solução: A checagem de Duplicidade de Endpoints Rest agora está mais coesa, levando a implementações de maior qualidade.
Referente ao chamado: DTAPPSRV-9091
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
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
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
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
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/BtwNOw![]()
Referente ao chamado: DTAPPSRV-9222
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
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:
ERRORSERVER 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
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/BtwNOw![]()
Referente ao chamado: DTAPPSRV-9252
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/Qf4gO
) e removemos o limitador de tamanho para os slots que retornam listas de dados, vide: https://tdn.totvs.com/x/r-VUE
.
Referente ao chamado: DTAPPSRV-9253
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
- Sem rótulos