Árvore de páginas

Correções

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

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

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

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

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

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

Referente ao chamado: DTAPPSRV-7252

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

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

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

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

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

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

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

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

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

Incidente: erro no upload de arquivos utilizando rotinas REST.

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

Referente ao chamado: DTAPPSRV-7438

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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: Falha de criação de í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

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

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

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

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

Incidente: Comportamento do Sistema Operacional Linux afetava liberação de memória do mecanismo de alocação e controle do Appserver

Solução: Implementado recurso que possibilita o controle do cache de memória realizado pelo sistema operacional Linux, permitindo assim, a liberação de memória quando não utilizada.

Incidente: Em um cenário com Broker Agent e Monitor Embedded no Broker Smartclient, quando o Broker Agent finalizava um serviço este não estava sendo retirado das tabelas de monitoração do Monitor Embedded.

Solução: Implementação de remoção nas tabelas de monitoramento do Monitor Embedded dos serviços que forem finalizados pelo 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.

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

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

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

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

Solicitação: conversões de imagens 24BPP

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

Referente ao chamado: DTAPPSRV-7136

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