Hi,

I'd like to discuss the recent introduced functionality of line
precise error reporting - this time specifically in it's own thread.

It is a new facility that records the stack trace when a component is
created and when it is added to a container. A relevant representation
of the stack trace (a couple of lines) is saved as meta data on the
component.

It is used when you created and added a component, but fail to
reference it in the right place in your markup. For example, if I
remove the reference in HelloWorld.html from wicket-examples, I get an
exception like:

WicketMessage: The component(s) below failed to render. A common
problem is that you have added a component in code but forgot to
reference it in the markup (thus the component will never be
rendered).

1. [Component id = message, page =
org.apache.wicket.examples.helloworld.HelloWorld, path =
0:message.Label, isVisible = true, isVersioned = false]
The label with id 'message' that failed to render was constructed
at org.apache.wicket.examples.helloworld.HelloWorld.<init>(HelloWorld.java:35)

The label with id 'message' that failed to render was added
at org.apache.wicket.examples.helloworld.HelloWorld.<init>(HelloWorld.java:35)

This is all nice, but comes at a price: slower execution and more
memory consumption. If this was just a little bit, I wouldn't be too
worried. However, in the project I'm working on, the slowdown is
definitively noticable, and the memory consumption is too. For
example, some of our heavier pages:

deployment -> development
25.1K            -> 680.1K
82.7K            -> 1.7M
47.3K            -> 814.6K
37.2K            -> 644.8K

This is not a small difference, and I'm really wondering whether it is
a good idea to do this by default. I find it personally anoying that
the inspector pages (which I use regularly) don't give me the right
information anymore. And for Wicket in general, I fear that people
won't be aware of this difference (no matter how loud we shout out,
most people will just miss this unless they experience a problem) and
think Wicket is slow and consumes a lot of memory. I would prefer to
keep this alive as a separate setting (note that it is now folded in
with the IDebugSettings#componentUseCheck setting) and not have it on
by default.

WDYT?

Eelco

Reply via email to