Сбой Spring Insight с «Несбалансированным стеком кадров» - PullRequest
8 голосов
/ 11 октября 2011

Я хочу использовать Spring Insight для отслеживания моего spring mvc веб-приложения.При запуске версии для tc server 2.5 для разработчиков мое приложение появляется, но в консоли появляется следующее сообщение:

20.10.2011 09:24:24 com.springsource.insight.intercept.trace.SimpleFrameBuilder enter
FATAL: Frame stack exceeded MAX_FRAMES_PER_TRACE limit or has been aborted limit: 3000 frameCount: 3000 aborted: false
20.10.2011 09:24:24 com.springsource.insight.collection.errorhandling.AdviceErrorHandlingAspect ajc$around$com_springsource_insight_collection_errorhandling_AdviceErrorHandlingAspect$1$e76a6b03
FATAL: Error swallowed in advice adviceexecution(void com.springsource.insight.collection.AbstractOperationCollectionAspect.afterReturning(Object, JoinPoint.StaticPart))

-

java.lang.IllegalStateException: Imbalanced frame stack!  (exit() called too many times)
com.springsource.insight.intercept.trace.ThreadLocalFrameBuilder.exit(ThreadLocalFrameBuilder.java:61)
com.springsource.insight.collection.DefaultOperationCollector.exit(DefaultOperationCollector.java:111)
com.springsource.insight.collection.DefaultOperationCollector.exitNormal(DefaultOperationCollector.java:67)
com.springsource.insight.plugin.springtx.TransactionOperationCollectionAspect.ajc$afterReturning$com_springsource_insight_plugin_springtx_TransactionOperationCollectionAspect$2$e13fb3a0(TransactionOperationCollectionAspect.aj:61)
org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:724)
org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:393)
org.springframework.transaction.aspectj.AbstractTransactionAspect.ajc$afterReturning$org_springframework_transaction_aspectj_AbstractTransactionAspect$3$2a73e96c(AbstractTransactionAspect.aj:78)
...

Я могу вызвать некоторые действия контроллера после того, какэто сообщение, но в какой-то момент сервер просто отказывается обрабатывать мои запросы и отправляет ту же трассировку стека в браузер.

Кто-нибудь имел опыт работы с этой проблемой?Даже отключение плагинов для инсайта annotation, hibernate, jdbc или spring-tx не решает проблему.

Ответы [ 2 ]

8 голосов
/ 05 января 2012

Джон Трэвис почти точно прав, но системное свойство

-Dinsight-max-frames

Значение по умолчанию 3000, как видно из insight-intercept-1.5.1.SR2.jar: com.springsource.insight.intercept.trace.FrameBuilder

Изменение значения на -Dinsight-max-frames=6000 устранило проблему для меня.

8 голосов
/ 11 октября 2011

Часть этого кода была улучшена в последних версиях.

Вы можете попробовать Spring Insight 1.5.1 - он поставляется с tc Server 2.6.1 и доступен через springsource.org / insight

РЕДАКТИРОВАТЬ: проблема, которую вы видите, заключается в том, что одна трассировка попыталась накопить слишком много кадров (по умолчанию он перестает считать на 1000). Это связано с тем, что ваше приложение может выполнять много SQL-вызовов при запуске или множество других инструментальных вызовов. Как только это будет обнаружено, он прекратит сбор кадров и (в настоящее время) получит несбалансированный стек кадров. Ошибка доброкачественная для вашего случая.

Вы можете увеличить максимальное количество кадров, установив sysproperty Java (insight.max.frames).

В bin / setenv.sh просто добавьте в JVM_OPTS:

-Dinsight.max.frames=2000
...