Что вызывает сбой скорости Template.merge()?Как этого избежать?

StackOverflow https://stackoverflow.com/questions/74818

  •  09-06-2019
  •  | 
  •  

Вопрос

Наша команда постоянно сталкивается с проблемой с шаблонами скорости.При рендеринге некоторые выдают исключение RuntimeException с сообщением «Ошибка шаблона.merge() — невозможно отобразить шаблон скорости, '/template.vm'».Нам не удалось воспроизвести проблему, а документации в Интернете недостаточно.Проблема не всегда воспроизводима — одни и те же шаблоны, рендеринг которых иногда вызывает ошибку, в другое время удается без проблем отображать.Класс шаблона исходный код тоже мало поможет.Заранее спасибо.


Редактировать:Основываясь на ответе Натана Бубны, мне нужно уточнить, что мы используем Velocity версии 1.4.


Редактировать:Поскольку было указано, что трассировка стека будет полезна, вот она:

2008-09-15 11:07:57,336 ОШИБКА скорости - ошибка Template.merge().Документ имеет значение null, скорее всего, из-за ошибки синтаксического анализа.2008-09-15 11: 07: 57,336 Ошибка VelocityResult-Невозможно отобразить шаблон скорости, '/search/template-redactedY.vm' java.lang.exception:Ошибка Template.merge().Документ имеет значение null, скорее всего, из-за ошибки синтаксического анализа.at org.apache.velocity.template.merge (template.java:277) на com.opensymphony.webwork.dispatcher.velocityresult.doexecute (velocityresult.java:91) по адресу com.opensymphony.webwork.dispatcher.webworlesultsuleplest. .java: 109) на com.opensymphony.xwork.defaultactionInvocation.execuTeresult (defaultActionInvocation.java:258) на com.opensymphony.xwork.defaultactionInvocation.invoke (defaultActionInvocation.java:182) at.opensymphony. Intercept (geat interceptor.java:35) на com.opensymphony.xwork.defaultactionInvocation.invoke (defaultActionInvocation.java:164) на com.opensymphony.xwork.interceptor.aroundinterceptor.intercept (aearnterceptor.java:35) at.opensymphony.xword.xpork.xork.xork.xork.x .DefaultActionInvocation.invoke (defaultActionInvocation.java:164) на com.opensymphony.xwork.interceptor.aroundinterceptor.intercept (aearnterceptor.java:35) на com.opensymphony.xwork.defaultactionInvocation.inVoke (DefeSactActionInvocation.java:164) at. opensymphony.xwork.interceptor.aroundinterceptor.intercept (aearnterceptor.java:35) на com.opensymphony.xwork.defaultactionInvocation.invoke (defaultActionInvocation.java:164) на com.opensymphony.xwork.interceptor.aroundinter.Intercept (astreentertor 35) на com.opensymphony.xwork.defaultactionInvocation.invoke (defaultActionInvocation.java:164) на com.opensymphony.xwork.interceptor.aroundinterceptor.intercept (aearnterceptor.java:35) at com.opensymphony.xwork.defaultactioninvocation.invoke.Invoke. .java: 164) на com.opensymphony.xwork.defaultactionproxy.execute (defaultactionproxy.java:116) на com.opensymphony.webwork.dispatcher.servletdispatcher.serviceaction (servletdispatcher.java:272) atopensymphony.warpathr ServletDispatcher.service (ServletDispatcher.java:237) на javax.servlet.http.httpservlet.service (httpservlet.java:802) at org.apache.catalina.core.applicationfilterchain.InternaldOfilter (ApplicationFilterChain.javaAvaaN. .catalina.core.applicationfilterchain.dofilter (ApplicationFilterChain.java:173) на com.opensymphony.module.sitemesh.filter.pagefilter.dofilter (pagefilter.java:39) at org.apache.catalina.core.applicationFilTer .java: 202) at org.apache.catalina.core.applicationfilterchain.dofilter (ApplicationFilterChain.Java:173) at org.nanocontainer.nanowar.webwork2.picoobjectfactoryfilter.dofilter (picoobjectfactoryfilter.java.46). core.applicationFilterChain.InternaldOfilter (ApplicationFilterChain.java:202) на org.apache.catalina.core.applicationfilterchain.dofilter (ApplicationFilterChain.Java:173) aterg.nanocontainer.nanowar Ava: 44) в орг .apache.catalina.core.applicationFilterChain.InternaldOfilter (ApplicationFilterChain.Java:202) At org.apache.catalina.core.applicationfilterChain.Dofilter (ApplicationFilterChain.Java:173) at Com.bostonCApital.StuySembererMembererMembererMembererMembererMembererMempler Ява : 30) at org.apache.catalina.core.applicationfilterchain.internaldofilter (ApplicationFilterChain.Java:202) на org.apache.catalina.core.applicationfilterchain.dofilter (ApplicationFilterChain.java:173) At Org.apache.catalina.core. StandardWrapperValve.invoke (StandardWrapperValve.java:214) на org.apache.catalina.core.standardcontextvalve.invoke (StandardContextValve.java:178) на org.apache.catalina.authenticator.authenticatorbase.invoke (autenticatorbase.gauthatorbase.gatatoraator. .apache.catalina.valves.accesslogvalve.invoke (accesslogvalve.java:526) at org.apache.catalina.core.standardhostvalve.invoke (standardhostvalve.java:126) at org.apache.catalian .java: 105) на org.apache.catalina.core.standardenginevalve.invoke (StandarengineValve.java:107) на org.apache.catalina.connector.coyoteadapter.service (coyoteadapter.java:148) в Org.apache.coyte. http11.http11processor.process (http11processor.java:825) на org.apache.coyote.http11.http11protocol $ http11connectionHandler.processConnection (http11protocol.java:738) org.appaine. ProcessSocket (PooltcpendPoint. Java: 526) на org.apache.tomcat.util.net.leaderfollowerworkerthread.runit (LeaderFollowerworkerThread.java:80) на org.apache.tomcat.util.threads.threadpool $ controlrunnable.run (treampool.java:684) atjava .lang.thread.run (неизвестный источник)

Это было полезно?

Решение

Какую версию Velocity вы используете?В старых версиях были некоторые условия гонки, которые вызывали это.Большинство из них было уничтожено в версии Velocity 1.5.Хотя лично я бы рекомендовал использовать Velocity 1.6-beta1.В нем значительно улучшена производительность (память и скорость) и множество мелких исправлений ошибок, которые не вошли в версию 1.5.

Редактировать:Поскольку вы говорите, что используете версию 1.4, то да, я уверен, что это состояние гонки, которое мы исправили.Пожалуйста, рассмотрите возможность обновления.Версия 1.6 определенно является лучшим выбором, так как в ней исправлена ​​ваша ошибка и улучшена производительность.Финал 1.6 должен выйти очень скоро.

Другие советы

Я сейчас работаю над той же ошибкой на нашем сайте.

Похоже, это состояние гонки:Я могу воспроизвести его последовательно, используя несколько процессов, получающих одну и ту же страницу, но никогда не воспроизведу его, если сериализую запросы.

Я использую скорость-1,5;Я попытался перейти на 1.6-beta1, но увидел другие ошибки.

РЕШЕНО:см. комментарии ниже

Поскольку в комментариях к источнику уже указано, что этого не должно происходить, я думаю, что это ошибка в программном обеспечении шаблона.Отправьте отчет об ошибке тому, кто его написал.

Вам необходимо получить полную трассировку стека RuntimeException и его причин.

Пожалуйста, отредактируйте свой ответ, чтобы добавить эту информацию.

Я отправил электронное письмо авторам кода, чтобы узнать, могут ли они дать некоторую информацию.Я обязательно поделюсь всем, что узнал.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top