Árvore de páginas

Correções


Incidente: na inicialização do Broker HTTP estava sendo erroneamente gravada no log uma mensagem de erro "erro, falta nome do arquivo de certificado do server"

Solução: corrigido para não mais gravar essa mensagem 

Referente ao chamado: DTAPPSRV-8123

Incidente: Caso especifico de Logix com Multithread ativo no logixprofile. Onde ao fechar um programa que foi aberto pelo FGLRUN, encerra em cascata todos os programas. 

Solução: Corrigido a lista de programas ativos e ao encerrar um programa, verifica se existe outros ativos e volta para o anterior. 

Referente ao chamado: DTAPPSRV-6202

Incidente: Possível picos de CPU no serviço do Broker desktop em ambiente linux.

Solução: Melhorias na camada de comunicação para otimizar a aceitação  aceitação de conexões. Inclusão de logs para monitoramento das threads no broker.

Referente ao chamado: DTAPPSRV-7806

Incidente: Lentidão na comunicação do Logix, entre Appserver e banco de dados SQL Server, ambos em Linux.

Solução: Ajustado dbsrv.so para uma comunicação mais eficiente. 

Referente ao chamado: DTAPPSRV-8019

Incidente: A função GetUserInfoArray não retornava dados na posição 4 quando da utilização do broker.

Solução: Correção na GetUserInfoArray para preenchimento dos dados corretamente para retorno na função.

Referente ao chamado: DTAPPSRV-8053

Incidente: Durante a geração de relatorios no Logix, com Appserver em Linux e banco Informix, apresentava quedas esporadicamente. 

Solução: Adicionado proteções no Appserver para evitar possíveis invasões de memoria.

Referente ao chamado: DTAPPSRV-8067

Incidente: falha na tradução SQL impactando na execução de trigger em banco Oracle.

Solução: ajustes na engine de translate para correta tradução do comando SQL.

Referente ao chamado: DTAPPSRV-8103

Incidente:Comportamento inesperado de cursor em algumas ocasiões envolvendo banco MSSQL.

Solução:Alinhado recursos de MARS desligados com o build 32 bits.

Referente ao chamado: DTAPPSRV-8104

Incidente:Serviço fica indisponivel ao compilar fonte com instruções RECORD ao adicionar membros novos 

Solução:realizado proteção no tramento das chamadas

Referente ao chamado: DTAPPSRV-8108

Incidente: Ao realizar conversão do tipo datetime o Appserver pode sair do ar

Solução: Realizado proteção no tramento das chamadas

Referente ao chamado: DTAPPSRV-8109

Incidente: FindFunction com argumento contendo namespace poderia retornar um falso positivo quando partindo de um fonte prw.

Solução: Quando o argumento de pesquisa contiver namespace, FindFunction agora sabe fazer a busca considerando nome longo, mesmo que a partida seja de um fonte prw.

Referente ao chamado: DTAPPSRV-8111

Incidente: Insert não apresenta falha, mas SQLERRD[3] é 0 (nao registro foi inserido), e nenhum erro é apresentado

Solução: Resgatado erro corretamente, no caso do mssql, quando erro é HY000 ele não pega corretamente o código, sendo agora representado por "161".

Referente ao chamado: DTAPPSRV-8114

Incidente: Ajustes em dois colaterais em ambiente 4GL, nos bancos Informix e SQL Server, durante a tradução de query com "%", PERCENT_MARK. 

Solução: Ajustado a tradução correta para cada banco Informix ou SQL Server.

Referente ao chamado: DTAPPSRV-8124

Incidente: No SQL BLOCK Logix, o paraser não reconhecia nomes com o símbolo "$" no meio (gv$session, por exemplo) como nome de tabela, que existem no Oracle; e o parser não reconhece uma variável com nome de tabela caso tivesse o terminador ";" .

Solução: Corrigido o parser do SQL BLOCK Logix para a correta identificação dos casos citados.

Referente ao chamado: DTAPPSRV-8127

Incidente: ocorrência de cursor não encontrado em banco SQL Server.

Solução: ajustes e melhorias na engine de controle de cursores.

Referente ao chamado: DTAPPSRV-8130

Incidente: A função FErase está conseguindo apagar um arquivo que foi criado pela FCreate, mas que não foi fechado. Esse problema acontece em ambiente virtualizado com VMWare.

Solução: Corrigido a forma de criar arquivos na função FCreate para que não seja possível a exclusão de arquivos não fechados.

Referente ao chamado: DTAPPSRV-8182

Incidente: ocorrência de "Access violation" na função isCursorDeclared.

Solução: ajustes nos tratamentos de parâmetros da função.

Referente ao chamado: DTAPPSRV-8183

Ocorrência: durante compilação, ocorria Access Violation no Application Server.

Solução: foram realizados ajustes na camada de debug ADVPL.

Referente ao chamado: DTAPPSRV-8184

Incidente:  Memory leak em windows durante checagem de assinatura de fontes prw ou tlpp.

Solução: Limpeza de recursos SSL que prendiam a memória.

Referente ao chamado: DTAPPSRV-8194

Incidente: comando DECLARE adiciona cursor em lista de controle mesmo quando ocorre falha. Essa ocorrência afeta apenas os bancos Oracle e SQL Server.

Solução: ajuste no tratamento de erro para os bancos Oracle e SQL Server que em decorrência do comportamento dos bancos, afetava o tratamento de erro na plataforma.

Referente ao chamado: DTAPPSRV-8218

Incidente: Ao ocorrer uma excessão, o console.log mostra linhas negativas

Solução: Correção no tramento das linhas do fonte para correta exibição

Referente ao chamado: DTAPPSRV-8222

Ocorrência: Quando da geração de patch por diferença arquivos com o texto .MAP não eram inseridos no patch.

Solução: Melhoria no tratamento do filtro de extensões na geração de patches.

Referente ao chamado: DTAPPSRV-8235

Incidente: Instabilidade no serviço de REST devido ao consumo de handles

Solução:  Foram incluídas novas chaves para o Broker de WebService, estas chaves tem como intuito de monitorar a saúde do serviço e permitir uma tentativa de reinicio em caso de detecção de falha, também foram incluídas chaves para fazer um tratamento de limpeza de conexões que não estão em uso por um tempo.

Ex: (appserver.ini)
[BALANCE_WEB_SERVICES]
; Periodicidade que irá rodar o monitor de saúde da porta
INTERVAL_FOR_HEALTH_CHECK=30
; Indica se deve ou não fazer o restart da porta em caso de detecção de falha
HEALTH_CHECK_RESTART=0
; Periodicidade que irá rodar o garbage/limpeza
INTERVAL_FOR_GARBAGE=900
; Tempo que é considerado para handle estar em falta de uso
; Obs. Esta configuração pode ser alterada durante a operação
GARBAGE_TIMEOUT_HANDLE=300
; se estiver habilitado faz o fechamento de handles não usados (GARBAGE_TIMEOUT_HANDLE),
; se desabilitado faz somente a impressão handles não usados (GARBAGE_TIMEOUT_HANDLE).
; Obs. Esta configuração pode ser alterada durante a operação
GARBAGE_CLOSE=0 

- Foi incluído um tratamento para evitar que dois ou mais servidores de aplicação (AppServer) tentem abrir o mesmo arquivo de console, pois como o arquivo é aberto para escrita, os logs pode ser corrompidos e ficarão embaralhados entre os serviços dificultando a leitura.
Obs. Caso haja mais de um serviço apontando para o mesmo log (Ex: console.log), terá que ser alterado o caminho do deste arquivo de log na configuração
Ex: (appserver.ini)
[General]
ConsoleFile=/novo_caminho_para_o_log/console.log

ou, um destes serviços terá que ser inicializado com o parâmetro -ConsoleFile, para alterar o caminho do deste arquivo de log na ativação do serviço
-Ex:
appserver.exe -console -ConsoleFile=/novo_caminho_para_o_log/console.log
appserver.exe -install -ConsoleFile=/novo_caminho_para_o_log/console.log
./appsrvlinux -console -ConsoleFile=/novo_caminho_para_o_log/console.log

Referente ao chamado: DTAPPSRV-8244

Incidente: Durante a execução de algumas queries em 4GL usando o banco Oracle, apresentava problema na tradução, resultado na mensagem "A NON-NUMERIC CHARACTER WAS FOUND WHERE A NUMERIC WAS EXPECTED". 

Solução: Corrigido a tradução enviada ao banco Oracle. 

Referente ao chamado: DTAPPSRV-8252

Incidente: função TCGetInfo(5) retornando informações de memória incompletas, trazendo apenas parte das informações.

Solução: o buffer size que estávamos utilizando tinha o tamanho de apenas 1024, o que era insuficiente. A capacidade do buffer foi aumentada.

Referente ao chamado: DTAPPSRV-8261

Incidente: Quando utilizado o tlppREST ou REST 2.0 e utilizar uma API com retorno com chunk com necessidade de conversão de Encode CP1252 para UTF-8 estava ocorrendo um duplo encode caso na camada do produto já tivesse sido feito ocasionando erro na codificação.

Solução: Foi realizado um ajuste no AppServer para evitar que ocorra um duplo encode em caso de Chunk, portanto quando a camada do produto já tiver realizado o processo de Encode a camada da aplicação (AppServer) não o efetuará em todas as instâncias do Chunk, e caso contrário o Apperver efetuará a conversão igualmente em todos os pacotes de Chunk.
Importante saber que para indicar ao AppServer que em seu produto a conversão já foi realizada é preciso adicionar no Header do HTTP a informação para qual CharSet foi feito o Encode.

Referente ao chamado: DTAPPSRV-8269

Incidente: Queda do servidor ao configurar chave privada da seção SSLConfigure.

Solução: Foi inserida uma proteção no código responsável pela configuração da chave privada para evitar esta queda.

Referente ao chamado: DTAPPSRV-8272

Incidente: Gerar um XLSX com encoding em Russo (windows-1251) não funciona se executado pelo appserver linux

Solução: Problema estava na file2printer que em appserver linux não estava adicionando o parâmetro -L=4 para gerar o resultado em Windows-1251

Referente ao chamado: DTAPPSRV-8332

Agora é possivel realizar a geração de patchs que alem de incluirem, também excluem completamente objetos ou programas do RPO destino. 

Para realizar a utilização do recurso, veja maiiores detalhes em https://tdn.totvs.com/pages/viewpage.action?pageId=528461210

Referente ao chamado: DTAPPSRV-7107

Incidente: Eventualmente threads do Application Server entravam em loop aguardando a desconexão com oLicense Server, aguardando pela mensagem de retorno do protocolo. 

Correção: Inserir tratamento de flush para envio da mensagem de retorno. 

Referente ao chamado: DTAPPSRV-8137

Incidente: A limpeza de tabelas com o comando DROP TABLE no database sqlite nao limpava uma tabela auliliar interna de controle de estrutura, aumentando o tamanho e numero de objetos no system.db

Correção: O DROP TABLE de uma tabela passa a limpar corretamente a tabela auxiliar <TABELA>_FIELD_INFO.

Referente ao chamado: DTAPPSRV-8191