Árvore de páginas

Melhoria - Proteção na execução de classes AdvPL

Esta build contém uma proteção para interromper a execução de uma aplicação AdvPL caso a mesma utilize uma classe AdvPL, onde erroneamente a declaração da classe e sua herança incorra em referência circular. 

Abrangência ERP 10 e 11
Situação Utilização de classes AdvPL com herança.
Ocorrência

Caso uma classe erroneamente possua uma herança em referência circular (por exemplo a classe herde a si mesma ou herde uma outra classe que por sua vez  herde a classe inicial), a execução de qualquer método desta classe coloca o programa em um loop interno no Kernel do AdvPL, consumindo 100% de uma CPU do equipamento indefinidamente, mantendo o processo e todos os seus recursos alocados (conexão com DBAccess, licença, tabelas abertas, etc.).  

(Por exemplo, classe C herda classe B, classe B herda classe A e classe A herda classe C.)

Proteção A partir da build atual, foi adicionada uma proteção para identificar esta situação em tempo de execução, para abortar a aplicação AdvPL com a ocorrência abaixo: "Invalid Class interface circular inheritance on <class-sequence>"
Informações adicionais
  • Proteção referente ao chamado SCHW95.
  • Na ocorrência de erro apresentada, a informação class-sequence contém o nome da(s) classe(s) que incorreram em uma situação de herança circular. 
  • Uma vez que o serviço do Application Server está com um processo em loop causado por esta situação, a finalização normal do processo/serviço não é possível de ser executada, ficando o serviço congelado em processo de finalização, sendo necessário finalizar o processo diretamente pelo gerenciador de processos do sistema operacional (Task Manager - Windows) ou executar um  kill -9 PID (em plataformas Linux).

  • Sem rótulos