added a log warning to property models when they reference session. -igor
On Tue, Nov 16, 2010 at 9:46 AM, Douglas Ferguson <[email protected]> wrote: > We found it.. Finally!!! > > There was a property model that was using the session as the model object. > > It would be cool if PropertyModel, etc would check for this and blow up on > construction. > i.e. not allow Page, Session, Application as the model object... > > D/ > On Nov 16, 2010, at 11:20 AM, Douglas Ferguson wrote: > >> Just tested on 1.4.13 and it still happens >> >> On Nov 16, 2010, at 9:43 AM, Douglas Ferguson wrote: >> >>> 1.4.12, but the problem has been around since a few versions back. >>> >>> D/ >>> >>> On Nov 16, 2010, at 12:43 AM, Martijn Dashorst wrote: >>> >>>> Are you using 1.4.13? >>>> >>>> Martijn >>>> >>>> On Tue, Nov 16, 2010 at 5:54 AM, Douglas Ferguson >>>> <[email protected]> wrote: >>>>> Some time ago I posted to the list regarding a stack overflow error that >>>>> I was receiving and the advice was to make sure that I didn't have a page >>>>> storing a reference to another page. >>>>> We did track this down and have just had to ignore it in the production >>>>> logs. Now we've made it a priority to track this down. >>>>> >>>>> Anyway, we've recently tracked this down to "AutomaticMultiWindowSupport" >>>>> feature. We are able to recreate the bug by pasting a url into a new >>>>> browser window and thus generating a new pagemap. On a certain page the >>>>> memory consumption doubles as you generate new pagemaps (see the chart >>>>> below). The profile is indicating that the memory is being taken up by a >>>>> hashmap, but that's as far as we've been able to trace it so far. >>>>> >>>>>> PageMap # Size Growth >>>>>> 13 389523448 1.93 >>>>>> 12 202059096 1.93 >>>>>> 11 104804096 1.93 >>>>>> 10 54352280 1.93 >>>>>> 9 28182760 1.93 >>>>>> 8 14594976 1.93 >>>>>> 7 7549336 1.94 >>>>>> 6 3900704 1.94 >>>>>> 5 2013480 2 >>>>>> 4 1006960 2 >>>>>> 3 503696 2 >>>>>> 2 252072 1.86 >>>>>> 1 135704 >>>>> >>>>> >>>>> Any thoughts or tips on trying to get to the bottom of this one? >>>>> >>>>> Here's the stack trace >>>>> >>>>>> at sun.reflect.GeneratedMethodAccessor42.invoke(Unknown Source) >>>>>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) >>>>>> at java.lang.reflect.Method.invoke(Unknown Source) >>>>>> at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeSerialData(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeObject0(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeObject(Unknown Source) >>>>>> at java.util.LinkedList.writeObject(Unknown Source) >>>>>> at sun.reflect.GeneratedMethodAccessor40.invoke(Unknown Source) >>>>>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) >>>>>> at java.lang.reflect.Method.invoke(Unknown Source) >>>>>> at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeSerialData(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeObject0(Unknown Source) >>>>>> at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeSerialData(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeObject0(Unknown Source) >>>>>> at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeSerialData(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeObject0(Unknown Source) >>>>>> at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source) >>>>>> at java.io.ObjectOutputStream.defaultWriteObject(Unknown Source) >>>>>> at org.apache.wicket.Component.writeObject(Component.java:4660) >>>>>> at sun.reflect.GeneratedMethodAccessor38.invoke(Unknown Source) >>>>>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) >>>>>> at java.lang.reflect.Method.invoke(Unknown Source) >>>>>> at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeSerialData(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeObject0(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeArray(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeObject0(Unknown Source) >>>>>> at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeSerialData(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeObject0(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeArray(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeObject0(Unknown Source) >>>>>> at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeSerialData(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeObject0(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeArray(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeObject0(Unknown Source) >>>>>> at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeSerialData(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeObject0(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeArray(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeObject0(Unknown Source) >>>>>> at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeSerialData(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeObject0(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeArray(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeObject0(Unknown Source) >>>>>> at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeSerialData(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeObject0(Unknown Source) >>>>>> at java.io.ObjectOutputStream.writeObject(Unknown Source) >>>>>> at >>>>>> org.apache.wicket.util.io.IObjectStreamFactory$DefaultObjectStreamFactory$2.writeObjectOverride(IObjectStreamFactory.java:121) >>>>>> at java.io.ObjectOutputStream.writeObject(Unknown Source) >>>>>> at >>>>>> org.apache.wicket.util.lang.Objects.objectToByteArray(Objects.java:1124) >>>>>> at >>>>>> org.apache.wicket.protocol.http.pagestore.AbstractPageStore.serializePage(AbstractPageStore.java:203) >>>>>> at >>>>>> org.apache.wicket.protocol.http.pagestore.DiskPageStore.prepareForSerialization(DiskPageStore.java:1190) >>>>>> at >>>>>> org.apache.wicket.protocol.http.SecondLevelCacheSessionStore$SecondLevelCachePageMap.writeObject(SecondLevelCacheSessionStore.java:389) >>>>> >>>>> >>>>> >>>>> >>>> >>>> >>>> >>>> -- >>>> Become a Wicket expert, learn from the best: http://wicketinaction.com >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: [email protected] >>>> For additional commands, e-mail: [email protected] >>>> >>> >> > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
