Unfound markup information is not entirely cached even in deployment mode
-------------------------------------------------------------------------
Key: WICKET-1857
URL: https://issues.apache.org/jira/browse/WICKET-1857
Project: Wicket
Issue Type: Bug
Components: wicket
Affects Versions: 1.4-M3, 1.3.4
Reporter: Timo Rantalaiho
Assignee: Timo Rantalaiho
Fix For: 1.3.5, 1.4-M4
Unfound markup information is not entirely cached even in deployment mode,
which causes performance problems. The problem has a very broad effect, because
checking for non-existent localised versions of markup causes a lot of cases of
unfound markup. This showed up first in our load tests, and was later confirmed
by profiling.
If you don't have the localised version of your markup to your current locale,
this markup is looked for but never found. This bug causes the lookup to repeat
on every request when the component is repainted, which becomes a major problem
in a case with a lot of ajax repaints.
You can reproduce the problem with Wicket 1.3.3 easily, for example by putting
the log4j.logger.org.apache.wicket.markup.MarkupCache=DEBUG setting in
log4j.properties and running Wicket examples in deployment mode. I added
several items to the Ajax todo list and this appeared in console repeatedly
DEBUG - MarkupCache - Load markup:
cacheKey=org.apache.wicket.examples.ajax.builtin.TodoList$AddItemsContaineren_UShtml
DEBUG - MarkupCache - Markup not found:
org.apache.wicket.examples.ajax.builtin.TodoList$AddItemsContaineren_UShtml
This is caused by the bug that in MarkupCache, the unfound markup information
is stored only in markupCache and not in markupKeyCache. I fixed this in the
naïve way but we should really refactor the cache handling so that it does not
rely on the same calls being duplicated to markupCache and markupKeyCache .
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.