New Relic Bug Email Transicional

Submitted by Eric on sex, 08/24/2018 - 19:48

Recentemente tive um problema com o email transicional em um Magento EE 1.13.0 rodando Debian no container e o agente PHP da New Relic instalado.
Quando na página para criar um novo template, se você tentar carregar um template em HTML, ele fica girando e depois não carrega o template. Mas funciona com template em texto.

Durante nossos testes identificamos que o agente da New Relic estava adicionando um JavaScript à requisição, que quebrava o carregamento. Por motivos de segurança irei colocar somente parte do JavaScript que era inserido:

s=NREUM;"undefined"==typeof window.newrelic&&(newrelic=s)

Existe explicação do agente aqui: https://docs.newrelic.com/docs/browser/new-relic-browser/getting-started/introduction-new-relic-browser
A New Relic explica como desativar o agente para uma função específica: https://docs.newrelic.com/docs/agents/php-agent/php-agent-api/newrelic_disable_autorum

A função responsável em carregar o template é: public function defaultTemplateAction()
Que está no arquivo: app/code/core/Mage/Adminhtml/controllers/System/Email/TemplateController.php

Basta adicionar o código fornecido pela New Relic logo no começo desta função para não ter mais problemas:

    public function defaultTemplateAction()
    {
        if (extension_loaded('newrelic')) {
            newrelic_disable_autorum();
        }
        $template = $this->_initTemplate('id');
        $templateCode = $this->getRequest()->getParam('code');
        $template->loadDefault($templateCode, $this->getRequest()->getParam('locale'));
        $template->setData('orig_template_code', $templateCode);
        $template->setData('template_variables', Zend_Json::encode($template->getVariablesOptionArray(true)));
        $templateBlock = $this->getLayout()->createBlock('adminhtml/system_email_template_edit');
        $template->setData('orig_template_used_default_for', $templateBlock->getUsedDefaultForPaths(false));
        $this->getResponse()->setBody(Mage::helper('core')->jsonEncode($template->getData()));
    }

Como não é recomendado atualizar o arquivo core do Magento, copie o arquivo para a pasta local: app/code/local/Mage/Adminhtml/controllers/System/Email/TemplateController.php
Agora você pode fazer a alteração diretamente neste arquivo. Caso o seu Magento tenha bastante modificações, é capaz de não funcionar desta maneira.

É por isso que criei um módulo bem simples para ficar fácil a implementação. Você pode baixar ele aqui: https://github.com/CajuCLC/MageBR_Newrelicfix/releases/latest
Caso queira ajudar no projeto: https://github.com/CajuCLC/MageBR_Newrelicfix

Eu não consegui replicar o problema em servidores utilizando CentOS 6 e Amazon Linux.

Espero que este tutorial tenha servidor e ajudado vocês. Não se esqueção de adicionar nosso site aos favoritos.
Até a próxima!


FacebookTwitterGoogle+Share