Hi, On Mon, Mar 28, 2016 at 4:02 PM, Thomas Heigl <[email protected]> wrote:
> Hi Martin, > > A quick follow-up: > > 2. Performance degradation of Wicket tests > > I just profiled my Wicket tests with Yourkit against 6.21.0 and against > 7.2.0. The biggest difference seems to be in > MarkupContainer.add(Component[]). It takes 10 times longer on 7.20 than on > 6.21.0 > > It might be related to the issue you mentioned as most of my tests are > tests of individual components and panels that are relatively small. Is > there something we can do about this? Maybe use a strategy for component > adding so that we can switch to the old behavior for tests? > > Two other methods take up considerable time compared to 6.21.0: > > - MarkupContainer.getAssociatedMarkup() (5x more) > - MarkupContainer.newDequeueContext() (Does not exist in 6.21. and eats up > nearly as much time as MarkupContainer.add) > I think this is the main reason for the slowness in 7.x - the component queueing. The good thing is that with WICKET-5983 the speed has been considerably improved for the real world cases (pages with more than 10 components). > > I can PM you my profiling results if you are interested. > Yes, please upload them somewhere so we can take a look. > > 3. serializer-fast2 throws NullPointerExceptions > > You were right about the FST version. I only had it pinned in my > <dependencyManagement> but no in my <dependencies>. The version used until > 6.21.0 (FST 2.10) seems to be the only version that does not throw NPEs in > my case. I'll use 2.10 for now and raise the issue with FST. > Good! > > Best regards, > > Thomas > > On Mon, Mar 28, 2016 at 2:26 PM, Martin Grigorov <[email protected]> > wrote: > > > Hi, > > > > On Mon, Mar 28, 2016 at 2:17 PM, Thomas Heigl <[email protected]> > wrote: > > > > > Hi all, > > > > > > I just finished upgrading a larger application from Wicket 6.21.0 to > > Wicket > > > 7.2.0. I encountered 3 issues that more or less prevent me from pushing > > it > > > into production: > > > > > > 1. There seems to be an issue with <wicket:enclosures/> whose children > > are > > > added during onConfigure and stateless checking. > > > > > > Stateless checking triggers visibility checks on the enclosure too > early, > > > i.e. before the enclosure's children have been added to the page, > > resulting > > > in exceptions like this: > > > > > > org.apache.wicket.WicketRuntimeException: Could not find child with id: > > > > emptyInfoPanel in the wicket:enclosure > > > > > > > I believe this is fixed in 7.3.0-SNAPSHOT. > > Please try it! > > > > > > > > at > > > > > > > > > > org.apache.wicket.markup.html.internal.Enclosure.checkChildComponent(Enclosure.java:297) > > > > at > > > > > > > > > > org.apache.wicket.markup.html.internal.Enclosure.getChildComponent(Enclosure.java:275) > > > > at > > > > > > > > > > org.apache.wicket.markup.html.internal.Enclosure.getChild(Enclosure.java:138) > > > > at > > > > > > > > > > org.apache.wicket.markup.html.internal.Enclosure.isVisible(Enclosure.java:173) > > > > at > org.apache.wicket.Component.determineVisibility(Component.java:4400) > > > > at > > org.apache.wicket.Component.isVisibleInHierarchy(Component.java:2152) > > > > at org.apache.wicket.Component.isStateless(Component.java:2069) > > > > at > > > > > > > > > > org.apache.wicket.devutils.stateless.StatelessChecker$1.component(StatelessChecker.java:83) > > > > at > > > > > > > > > > org.apache.wicket.devutils.stateless.StatelessChecker$1.component(StatelessChecker.java:66) > > > > at org.apache.wicket.util.visit.Visits.visitChildren(Visits.java:144) > > > > at org.apache.wicket.util.visit.Visits.visitChildren(Visits.java:162) > > > > at org.apache.wicket.util.visit.Visits.visitChildren(Visits.java:123) > > > > at org.apache.wicket.util.visit.Visits.visitChildren(Visits.java:192) > > > > at > > > > > > org.apache.wicket.MarkupContainer.visitChildren(MarkupContainer.java:981) > > > > at > > > > > > > > > > org.apache.wicket.devutils.stateless.StatelessChecker.onBeforeRender(StatelessChecker.java:120) > > > > > > > > > For now, I adjusted my code to add the enclosed components during > > > onInitialize. > > > > > > 2. Performance degradation of Wicket tests > > > > > > All other things left equal, my 1500 Wicket tests take nearly a minute > > > longer to run compared to Wicket 6.21.0. I have not yet had time to > > profile > > > this. Have there been any configuration changes in WicketTester that > > might > > > have caused this? > > > > > > > I am not aware of such. > > There were some changes in the way Wicket traverses the children of a > > container (https://issues.apache.org/jira/browse/WICKET-5983) but it is > > slower only for very small pages (less than 10 components in the tree) > and > > the diff is very small. I am not sure whether this is related. > > Wicket 7.x added support for component queueing and this might be the > > reason for this case. > > > > > > > > > > 3. serializer-fast2 throws NullPointerExceptions > > > > > > I first encountered this issue when upgrading to Wicket 7.2.0 but later > > > discovered that I have the same issue when moving from Wicketstuff > 6.21.0 > > > to 6.22.0, so I guess this issue was introduced somehow between those > > minor > > > versions. It has nothing to do with the dependency version of > > > de.ruedigermoeller.fst, as I have fixed that to the latest version in > my > > > POM. > > > > > > > I think we bumped the version of FST recently in wicketstuff-fast2. Could > > that be the reason ? > > The NPE is in FST code so I'd try to upgrade to latest version and if it > > still fails then report it to FST maintainer. > > > > > > > > > > > > > > Caused by: java.lang.NullPointerException: null > > > > at > > > > > > > > > > org.nustaq.serialization.FSTObjectOutput.writeObjectWithContext(FSTObjectOutput.java:375) > > > > at > > > > > > > > > > org.nustaq.serialization.FSTObjectOutput.writeObjectWithContext(FSTObjectOutput.java:361) > > > > at > > > > > > > > > > org.nustaq.serialization.FSTObjectOutput.writeObjectFields(FSTObjectOutput.java:639) > > > > > > > > > I tried to check the history between those two versions on Github but > > > couldn't find any differences. For now, I solved this issue by pinning > my > > > version of wicketstuff-serializer-fast2 to 6.21.0. > > > > > > I can try to provide quickstarts for #1 and #3 if needed, altough it > > might > > > be difficult to extract the behavior from my application. My most > > pressing > > > issue is #2 as it is the only one I cannot work around and I'm very > > > sensitive to build and test feedback time. > > > > > > Any help would be greatly appreciated. > > > > > > Best regards, > > > > > > Thomas > > > > > >
