DZone internals unleashed

Рубрика: Development, Java | 11 January 2008, 11:05 | juriy

DZone Fail

Okay, there’s no perfect projects. Except HelloWorlds of course. DZone is good but not perfect. At least we’ve found one minor issue about it: it shows stack traces to end users. There’s nothing particularly bad in it considering the fact that this happens not quite often. Still we got a really-really nice stack trace from dzone and we can take a glance on it’s internals.

Here’s the reason of what has happened:

java.sql.BatchUpdateException: Lock wait timeout exceeded;
try restarting transaction

This type of exception occurs when process tries to write some data into the MyISAM table, locked by another process. The query is queued and then removed after timeout.

Let’s go down a bit:
at com.mysql.jdbc.PreparedStatement

it seems that DZone uses MySQL.

at com.ibatis.sqlmap.engine.execution

And Apache iBATIS

Then comes Spring Framework
at org.springframework.web.servlet.mvc
at org.springframework.aop.framework

with MVC and AOP

Seems that DZone runs on Caucho Resin
at com.caucho.server.dispatch

Uses Tuckey URL Rewrite Filter

And Acegi Security as a security solution
at org.acegisecurity.intercept.web

Here’s whole stack trace.

That’s it! Hide your traces from users ;-)

Комментариев: 5

5 Responses to “DZone internals unleashed”


  1. Andrey Yasinetskiy

    Спасибо за разбор ;)
    Интересно, с чем связан выбор Resin?

  2. Chabster

    Вы удивитесь узнав, что Google выдает свой стек трейс при использовании веб сервиса поисковика.

  3. Vadim Voituk

    Chabster: Когда я “игрался” с Google Search SOAP API – при ошибке получал просто SOAPFault без стек-трейса.
    Да и стектрейса там наверное всего-ничего – какой-нить AXIS или XFire и не более.

    А у тебя ещё API key сохранился? :)

  4. Chabster

    Это так, шоб удивить: Invalid authorization key: foo
    at sun.reflect.GeneratedMethodAccessor13.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.soap.server.RPCRouter.invoke(
    at org.apache.soap.providers.RPCJavaProvider.invoke(
    at org.apache.soap.server.http.RPCRouterServlet.doPost(
    at javax.servlet.http.HttpServlet.service(
    at javax.servlet.http.HttpServlet.service(
    Caused by: Key was of wrong size.
    … 14 more

Leave a Reply