Árvore de páginas

Versões comparadas

Chave

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

...

Exibir filhos

Correções

Expandir
titleTratamento de objetos json "inline"Falha na inicialização do Rest após processo de compilação e desfragmentação de RPO.

Incidente:  o realizar a compilação de um fonte e logo em seguida realizar o procedimento de desfragmentação, o serviço de REST não sobe mais e apresenta o erro "FUNCTION TLPP.REST.HANDLEREST NOT FOUND". Além disso, vários outros recursos do ERP passam a apresentar "500 - Erro interno do servidor".

Solução: foi protegido o acesso ao Rpo TLpp.

Referente ao chamado: DTAPPSRV-7468

Expandir
titleDeclaração de JSON no TLpp não suporta Array

Incidente:  a implementação de JSON direto no fonte TLpp não suporta o uso de array. Também não suportava tipos de dados primários JSON (true, false, null). 

Solução: implementado o tratamento de objetos JSON conforme a RFC.

Documentação: Json

Referente ao chamado: DTAPPSRV-2765

Expandir
titleMPFD (Multipart/Form-data) não está funcionando no Rest

Incidente:  MPFD (Multipart/Form-data) parou de funcionar no Rest, não fazendo mais download de arquivos.

Solução: correção para retornar o comportamento anterior e com isto permitir a gravação do arquivo em disco e retornar para o usuário o Json contendo as informações.

Referente ao chamado: DTAPPSRV-7391

Expandir
titleFunção SFTPUpld2 retorna Login Denied no Application Server

Incidente:  falha no uso de certificados de login ssh2-rsa na função SFTPUpld2.

Solução: correções realizadas no componente para utilização de certificados.

Referente ao chamado: DTAPPSRV-7083

Expandir
titleFunção SFTPdwl2 com problemas na utilização de certificado para login.

Incidente: problemas na utilização de certificado para login.

Solução: correções na utilização de certificado.

Referente ao chamado: DTAPPSRV-7252

Expandir
titleInterface PO-UI via chave app_environment com ocorrência de erro: [SQLITE] Open Query Error: no such table: dbTemp.tmp_

Incidente: ao utilizar a interface PO-UI em um ambiente com SQLite como database principal (RPODB=SQLITE), a emissão de uma query para abertura da tabela temporária falhava apresentando a mensagem de erro:
"[SQLITE] Open Query Error: no such table: dbTemp.tmp_29892_SC00 on MPSYSOPENQUERY(MPSYSOPENTABLES.PRW) 05/09/2022 10:01:39 line : 712"

Solução: para evitar essa falha, alteramos o tratamento de tabelas temporárias no database DB_TMP e passamos a criar a tabela temporária no próprio DB_SYS.

Referente ao chamado: DTAPPSRV-6943

Expandir
title[HTTPPost] Lentidão no consumo de API específica no AdvPL

Incidente: ao consumir determinadas APIs via AdvPL, a resposta de retorno estava demorando muito, entre 4 e 5 minutos.

Solução: foram realizados ajustes no separador de linhas de recebimento do header HTTP para suportar o delimitador '\n'.

Referente ao chamado: DTAPPSRV-7280

Expandir
titleOcorrência de queda no Linux com erro "[THROW] tAutoChar::CheckBuffer() ERROR - *** BUFFER OVERRUN ***"

Incidente: no Application Server Linux, à medida que o número de handles de arquivos e sockets aumentava, havia o risco de queda do Application Server por deficiência no tratamento de eventos de rede.

Solução: melhorado o tratamento de eventos de rede pelo Application Server no ambiente Linux, evitando as quedas relatadas.

Referente ao chamado: DTAPPSRV-7041

Expandir
titleQueda no Application Server quando a chave tlpp_rest_log configurada com valor igual a 1 e o path da pasta do AppServer contém espaços.

Incidente: queda no Application Server em Serviço Rest quando a chave tlpp_rest_log configurada com valor igual a 1 e o path da pasta do AppServer contém espaços.

Solução: correção realizada dentro do componente Vader para o tratamento correto do path de arquivos.

Referente ao chamado: DTAPPSRV-7306

Expandir
titleProblema na criação de tela usando ADVPL e Code Block, ocasionando queda do Application Server.

Incidente: problema na criação de tela usando ADVPL e Code Block, ocasionando queda do Application Server.

Solução: proteção e checagem na lista de code block.

Referente ao chamado: DTAPPSRV-7274

Expandir
titleFalha no funcionamento do Broker Agent identificado na versão 20.3.1.9

Incidente: não estava sendo possível utilizar o Broker Agent na versão 20.3.1.9. As instâncias de Application Server não estavam sendo criadas.

Solução: corrigido o tratamento do arquivo de configuração do Broker Agent que estava causando este comportamento.

Referente ao chamado: DTAPPSRV-7317

Expandir
titleAccess Violation - HTTP_Cookies_s::parse

Incidente: Access Violation dentro do Vader envolvendo o tratamento de Cookies HTTP

Solução: revisado e corrigido o componente interno.

Referente ao chamado: DTAPPSRV-7348

Expandir
titleApplication Server apresenta falha na execução da função HttpSGet utilizando certificado com path absoluto.

Incidente: o mecanismo de reinicialização da camada do App Monitor evidenciou uma falha na HttpSGet quando utilizamos certificado e chave privada armazenados em path absoluto.

Solução: fizemos um ajuste para viabilizar a utilização de certificado e chave privada armazenados em uma pasta diferente do RootPath, evitando a falha em questão.

Referente ao chamado: DTAPPSRV-7383

Expandir
titleQueda de performance em rotinas de integração Excel

Incidente: após atualização do AppServer foi identificado um problema de serialização na conexões RPC que impactaram na performance das rotinas de Integração Excel.

Solução: foi aplicada uma correção na camada de conexões RPC para evitar este comportamento, devolvendo a performance esperada para a integração.

Referente ao chamado: DTAPPSRV-7428

Expandir
titleUpload em lote de arquivos utilizando rotinas Rest

Incidente: erro no upload de arquivos utilizando rotinas REST.

Solução: correção no tratamento de upload de arquivos.

Referente ao chamado: DTAPPSRV-7438

Expandir
title"Insufficient Buffer on tString::sprintf()" ao processar um Json inválido, observado em alguns casos específicos com arquivos Json muito grandes.

Incidente: "Insufficient Buffer on tString::sprintf()" ao processar um Json inválido, observado em alguns casos específicos com arquivos Json muito grandes.

Solução: correção no tratamento de arquivos Json.

Referente ao chamado: DTAPPSRV-7334

Expandir
titleEnvio de PDF por API REST para URL formatada

Incidente: Application Server estava apresentando lentidão ao realizar uma requisição PUT via Rest. A aplicação estava pegando o content-length da requisição de forma incorreta, por isso ficava esperando por um body como resposta, o que dava a impressão de baixo desempenho.

Solução: foram realizados ajustes para que o content-length seja consumido da forma correta.

Referente ao chamado: DTAPPSRV-7294

Expandir
titleTWsdlManager - erro 401 Unauthorized

Incidente: utilizando a classe TWSDLManager, ao fazer o parse de um WSDL que necessita de autenticação HTTP e que existe um redirect para outra URL, necessitando dos mesmos dados de autenticação, o parse falhava.

Solução: criada a propriedade lHTTPTransferAuth na classe TWSDLManager, que permite transferir os dados de autenticação HTTP em caso de redirect da URL. O valor padrão dessa propriedade é true (.T.).

Referente ao chamado: DTAPPSRV-7464

Expandir
titleErro na recepção de arquivos do Rest 2.0

Incidente: erro na execução de download de arquivos através das rotinas REST.

Solução: correção no tratamento do MFPD (Multi forma part data).

Referente ao chamado: DTAPPSRV-7455

Expandir
titleFunções AdvPL relacionadas ao RPO Seguro tratando incorretamente o tipo de RPO

Incidente: funções AdvPL relacionadas ao RPO seguro não estavam respeitando corretamente as definições de tipo de RPO e com isso, falhando nas consultas e acessos.

Solução: ajustes e correções para correto acesso aos RPOS TLPP, Custom e Default.

Referente ao chamado: DTAPPSRV-7445

Expandir
titleUso do logprofiler no License Server derruba o Application Server após ocorrência de erro "Insufficient buffer on tString:sprintf()"

Incidente: insufficient Buffer on tString::sprintf() durante a geração de um logprofiler.

Solução: impor um limite de 256 bytes para definir uma string de "observação" para a Thread / Processo atual.

Referente ao chamado: DTAPPSRV-7444

Expandir
titleLog do Broker Agent crescendo muito rapidamente

Incidente: possibilidade de crescimento indiscriminado do log do Broker Agent quando executado em modo desktop.

Solução: melhorado o tratamento de eventos de teclado (Ctrl-C etc) que estava causando o crescimento indiscriminado do log do Broker Agent.

Referente ao chamado: DTAPPSRV-7420

Expandir
titleOcorrência de queda no Application Server com a chave ADVSQLREPLAY habilitada

Incidente: finalização inesperada do TOTVS Application Server ao utilizar o rastreio de conexões com o DBACCESS ADVSQLREPLAY em uma situação em que a aplicação AdvPL tem duas ou mais conexões ativas e fecha a primeira conexão aberta com TCUNLINK().

Solução: corrigida a busca na lista de conexões ativas.

Referente ao chamado: DTAPPSRV-7409

Expandir
titleArquivo sso\\etc\\services.conf vazio utilizado pelo SAML causando queda do Application Server

Incidente: o arquivo sso\etc\services.conf em branco utilizado pelo SAML estava causando a queda do Application Server.

Solução: checagem do arquivo services.conf e mensagem de erro no console durante a execução, caso o arquivo esteja em branco.

Referente ao chamado: DTAPPSRV-7402

Expandir
titleQuery com estrutura inválida de campos no SQLITE.

Incidente: select * de tabela SQLITE após apagar e recriar a tabela com nova estrutura diferente da anterior, retornava a primeira estrutura da tabela, pois ao apagar a tabela, um cache de resolução de queries não era apagado.

Solução: limpar o cache de estrutura de retorno de Queries relacionado a uma tabela, quando ela for eliminada.

Referente ao chamado: DTAPPSRV-7395

Expandir
titleSymtab em uso após compilação.

Incidente: ao forçar uma compilação com a chave BUILDKILLUSERS e Servidor Rest ativos, o serviço Rest era corretamente interrompido. Porém, ao tentar conectar novamente ao serviço Rest (exemplo: Webmonitor e TLPP Monitor) ocorria o erro "SYMTAB in use for addSourceInfo...".

Solução: foram realizadas correções pontuais no Servidor de Aplicação (Application Server).

Referente ao chamado: DTAPPSRV-7375

Expandir
titleErro de CORS usando fetch.

Ocorrência: requisições em REST com "origin: null" estavam falhando por causa do tratamento de CORS.

Solução: corrigido o tratamento de CORS para aceitar requisições com "origin: null".

Referente ao chamado: DTAPPSRV-7360

Expandir
titleOcorrência de access violation no AppServer em execução de Job.

Ocorrência: access Violation no Application Server causado pela soma entre variáveis definida como Char (tipagem forte) e string.

Correção: proteção para não permitir operação de soma, apresentando mensagem de erro durante a execução.

Referente ao chamado: DTAPPSRV-7355

Expandir
titleWebApp - Problema na montagem de mensagens maiores que 100k no websocket.

Ocorrência: problemas no funcionamento do WebApp causados pelo tratamento de Websockets em um componente do Appserver.

Correção: corrigido o tratamento de Websockets para permitir o funcionamento correto do WebApp com protocolo Websocket.

Referente ao chamado: DTAPPSRV-7205

Expandir
titleOcorrência de access violation durante assinatura de fontes via AppServer Command Line.

Ocorrência: access Violation durante assinatura de fonte via AppServer Command Line.

Correção: inicialização e configuração dos parâmetros SSL.

Referente ao chamado: DTAPPSRV-7431

Expandir
titleOcorrência de queda ao chamar função HSMObjList

Ocorrência: ao chamar a função HSMObjList com o parâmetro cPass (segundo parâmetro) igual a string vazia e com o dispositivo HSM inicializado, ocorria queda no Application Server.

Correção: foi feito um tratamento para evitar a queda quando o parâmetro cPass estiver vazio.

Referente ao chamado: DTAPPSRV-7510

Expandir
titleTela branca no WebApp

Ocorrência: Erro na apresentação de tela PO-UI quando da utilização do Broker.

Correção : Inclusão do parâmetro de path no cookie utilizado pelo broker.

Referente ao chamado: DTAPPSRV-7533

Expandir
titleLentidão em RPC, WebSErvices e GRID AdvPL

Ocorrência : Perdas significativas de desempenho em ambientes que utilizam GRID de processamento AdvPL, Jobs de WebServices, e integrações via RPC, como por exemplo Front Loja e Retaguarda, ao atualizar o Application Server para builds superiores a 20.3.1.5. 

Correção : Corrigida a rotina de verificação de carga de RPO, que causava uma retenção e serialização entre processos. 

Referente aos chamados: DTAPPSRV-7413 e DTAPPSRV-7392. Incidente: O tratamento de objetos Json "inline", na linha de código, não está respeitando o padrão correto de objetos Json, não sendo possível criar objetos Json vazios, ex: { }, e nem corretamente os arrays de Json [ ], também não permitem que os tipos True, False e Null sejam tratados como tipos Json. 
Solução: O tratamento dos objetos Json foi corrigido para que ele passasse a ser tratado conforme a formatação Json. A principal alteração se dá com array advpl que é representado por "{ }", todavia no padrão Json, isto representa um objeto Json vazio, ou seja, em um código que tenha:
local jJson := { "chave" : {} }
terá como valor um objeto Json vazio.
Tratamentos para o objeto Json inline:
  - faz a expansão de todos os nós do Json avaliando possíveis expressões, funções, e variáveis AdvPL/TLPP, ou seja, os valores das chaves Json, podem vir de variáveis, funções, expressões AdvPL/TLPP, podendo combinar com os tipos primitivos do Json.
  - quando dentro de objetos Json, faz correção de "{ }", para considerar como um "objeto Json" vazio, e não como um "array de AdvPL" vazio, pois este é o padrão correto de da estrutura Json.
  - também quando dentro de objetos Json, faz tratamento especial para os tipos: true, false e null, para que sejam considerados como elementos Json e não tentem extrair como um identificador/variável em Advpl/TLPP, representando os tipos AdvPL: .T., .F. e Nil, respectivamente.
  - Array AdvPL, com elementos, são tratados como array Json. Ex: "chave":{1, 2, "3"}, será transformado em "chave":[1, 2, "3"], este caso é possível pois as estruturas de Array com conteúdo AdvPL, é diferente de um Objeto Json, então foi mantido este comportamento para dar maior poder ao tratamento do objeto Json.
  - Array Json são tratados naturalmente no Json inline. Ex: "chave":[true, 2, "a"]Removido o tratamento histórico do "clipper", de se trocar [ ] por "" em alguns cenários para fontes TLPP. Ex. ':= []'  ou ', []' ou '+ []', ... isto para permitir que os array Json sejam tratados corretamente quando declarados.Obs. para os casos onde se estivesse usando o "{ }" para determinar um array vazio, a recomendação é trocar por uma variável de array vazio.
Ex:
local jVarJson1 := { "valor_deveria_ser_array" : {} } as json   // Neste caso o valor {} será um Json vazio e não mais um array vazio
para manter o comportamento anterior a sugestão é trocar por:
local aArrayVazio := {}
local jVarJson1 := { "valor_deveria_ser_array" : aArrayVazio } as json // Neste caso será sempre um array em qualquer versão


Expandir
titleTratamento da criação de índices com campos maior que 10 caracteres

Incidente: Falha de criação de índices em índices em tabelas de uso interno do Framework AdvPL, usando RDD TOPCONN com DBAccess e/ou SQLITE, quando o campo possui nome com mais de 10 caracteres.

Solução:  Criação de índice suportada adequadamente após ajuste na lista de campos do índice no AppServer.

Referente ao chamado: DTAPPSRV-7245

Expandir
titleError in encode FindBase64Val returning -1: Serviço fica indisponível

Incidente: Ao apresentar Error in encode FindBase64Val returning -1, em algumas ocasiões o serviço ficava indisponível.

Solução:  Correção no tratamento da mensagem.

Referente ao chamado: DTAPPSRV-7253

Expandir
titleTratamento de objetos json "inline"

Incidente: O tratamento de objetos Json "inline" não está respeitando o padrão correto de objetos Json, não sendo possível criar objetos Json vazios (ex: { }), arrays de Json [ ] não são criados corretamente e também não permitem que os tipos True, False e Null sejam tratados como tipos Json. 

Solução: O tratamento dos objetos Json foi corrigido para que ele passasse a ser tratado conforme a formatação Json. A principal alteração ocorre com array AdvPL que é representado por "{ }", todavia no padrão Json, isto representa um objeto Json vazio, ou seja, em um código que tenha por exemplo "local jJson := { "chave" : {} }", terá como valor um objeto Json vazio.

Referente ao chamado: DTAPPSRV-7210

Expandir
titleProblemas com conexão RPC quando Broker está com SSL ativo

Incidente: Falha ao conectar via classe tRPC em um appserver de balanceamento desktop broker com SSL ativo

Solução: O quarto parâmetro do método Connect não estava sendo levado em consideração para ativar o SSL, a partir da próxma versão esse parâmetro passa a ser considerado

Referente ao chamado: DTAPPSRV-7311

Melhorias

Expandir
titleSegurança e vulnerabilidades

Correções Atualização de bibliotecas de terceiros e melhorias relacionadas a segurança.

...

Expandir
titleImplementar planos de desligamento no Broker Agent.

Incidente: Cliente necessita desativar o sistema associado a um Broker Agent, e para isso o Broker não deve direcionar novas conexões a esse sistema.

Solução: Implementado scheduling de funcionamento para o Broker Agent. O Broker só direciona novas conexões para os sistemas instanciados pelo Broker Agent nos intervalos de tempos especificados na configuração (ini) do broker Agent.

Expandir
titleServiço WebMonitor subir automaticamente no start do Application Server

Solicitação: serviço WebMonitor subir automaticamente no start do Application Server e também a opção para desligar se necessário com a seção [WEMONITOR] e chave Enable=0 no appserver.ini

Solução: implementado o start automático e a opção para desligar, caso seja necessário.

Referente ao chamado: DTAPPSRV-7376

Expandir
titleDescontinuação da antiga chave de compilação Linux

Solicitação: descontinuar a chave de compilação de compilação Linux baseada no algoritmo AES que foi criada para manter compatibilidade com a antiga chave de compilação.

Solução: remoção do suporte a antiga chave de compilação Linux e a partir de agora, deverá ser utilizado o TOKEN de compilação.

Documentação: AppServer Command Line - Compilação por linha de comando

Referente ao chamado: DTAPPSRV-7264

Expandir
titleMaior detalhamento sobre erros em caso de falha de criação de tabela usando TCAlter com RPODB=SQLITE e rdd TOPCONN.

Solicitação: em caso de falha de criação de tabela de destino usando TCAlter com RPODB=SQLITE e rdd TOPCONN, a mensagem informativa no log de console não trazia nenhum detalhe adicional da causa da falha, apenas o texto "Error - TC_Alter - (-19) TCAlter Error - Failed to create target table".

Solução: a partir do Application Server versão 20.3.2.0, as informações adicionais indicando a causa da falha serão mostradas após essa informação no log de console.

Referente ao chamado: DTAPPSRV-7497

Expandir
titleQueda de desempenho da função STRTRAN gerando lentidão na busca de retorno entre TAF-WS e TSS.

Solicitação: lentidão progressiva no uso da função Strtran() em strings com conteúdos maiores de 1 MB.

Solução: A função STRTRAN foi otimizada, para não haver queda de desempenho com o aumento da string a ser pesquisada e alterada.

Informações Adicionais: A lentidão é observada quando maior a string informada, quanto mais ocorrências forem substituídas, e quando o tamanho do conteúdo a ser alterado é maior ou menor do que o conteúdo a pesquisar.

Referente ao chamado: DTAPPSRV-7314

Novas Implementações

Expandir
titleConversões de imagens 24BPP

IncidenteSolicitação: Conversões conversões de imagens 24BPP

Solução: Suporte suporte a imagens BMP de até 24BPP na função bmptoJPEG.

Referente ao chamado: DTAPPSRV-7136

Expandir
titleClasse SFTP (Secure File Transfer Protocol)

Solicitação: Classe SFTP (Secure File Transfer Protocol)

Solução: implementação de classe para transferência de arquivos de forma segura, via protocolo SFTP. Disponível na linguagem TLpp

Documentação: tSFTPClient

Referente ao chamado: DTAPPSRV-7349