On Fri, Apr 10, 2020 at 4:01 PM Thomas Heigl <tho...@umschalt.com> wrote:
> FYI: I deployed Wicket 9.0.0-M5 to production an hour ago. 100k requests > served and no issues so far. > Awesome! Thank you for testing it! > > Great work! > > Thomas > > On Wed, Apr 8, 2020 at 3:13 PM Sven Meier <s...@meiers.net> wrote: > > > Many thanks Maxim! > > > > Sven > > > > On 08.04.20 14:29, Maxim Solodovnik wrote: > > > Released :) > > > > > > On Wed, 8 Apr 2020 at 15:41, Maxim Solodovnik <solomax...@gmail.com> > > wrote: > > >> OK > > >> > > >> Will start new release process in couple of hours > > >> Please stop me if you will find any blocker :) > > >> > > >> On Wed, 8 Apr 2020 at 14:36, Thomas Heigl <tho...@umschalt.com> > wrote: > > >>> Hi Maxim, > > >>> > > >>> It works for me now! > > >>> > > >>> Thomas > > >>> > > >>> On Wed, Apr 8, 2020 at 9:17 AM Maxim Solodovnik < > solomax...@gmail.com> > > >>> wrote: > > >>> > > >>>> Thanks a million! > > >>>> > > >>>> On Wed, 8 Apr 2020 at 14:10, Thomas Heigl <tho...@umschalt.com> > > wrote: > > >>>>> Hi Maxim, > > >>>>> > > >>>>> I'm testing against the snapshot now. Will get back to you shortly. > > >>>>> > > >>>>> Thomas > > >>>>> > > >>>>> On Wed, Apr 8, 2020 at 2:53 AM Maxim Solodovnik < > > solomax...@gmail.com> > > >>>>> wrote: > > >>>>> > > >>>>>> Hello All, > > >>>>>> > > >>>>>> M5 seems to be broken (deploy has failed more than 10 times during > > my > > >>>>>> build attempts) > > >>>>>> I have to start another release > > >>>>>> Could you please tell when can I start? > > >>>>>> > > >>>>>> On Wed, 8 Apr 2020 at 07:01, Maxim Solodovnik < > solomax...@gmail.com > > > > > >>>>>> wrote: > > >>>>>>> Hello Thomas, > > >>>>>>> > > >>>>>>> Please test M6-SNAPSHOT (so I don't have to release M5.2 :)))) > > >>>>>>> > > >>>>>>> On Wed, 8 Apr 2020 at 02:39, Thomas Heigl <tho...@umschalt.com> > > >>>> wrote: > > >>>>>>>> Hi Maxim, > > >>>>>>>> > > >>>>>>>> That would be great. I want to do some more extensive testing > and > > >>>> then > > >>>>>>>> deploy M5 into production. ;) > > >>>>>>>> > > >>>>>>>> Thomas > > >>>>>>>> > > >>>>>>>> On Tue, Apr 7, 2020 at 7:50 PM Maxim Solodovnik < > > >>>> solomax...@gmail.com> > > >>>>>>>> wrote: > > >>>>>>>> > > >>>>>>>>> I can pack another release > > >>>>>>>>> later this week ... > > >>>>>>>>> > > >>>>>>>>> On Wed, 8 Apr 2020 at 00:48, Thomas Heigl <tho...@umschalt.com > > > > >>>>>> wrote: > > >>>>>>>>>> Thanks Sven! > > >>>>>>>>>> > > >>>>>>>>>> Did your changes make it into the release? Or did they just > > >>>> miss > > >>>>>> it? > > >>>>>>>>>> Thomas > > >>>>>>>>>> > > >>>>>>>>>> On Tue, Apr 7, 2020 at 7:43 PM Sven Meier <s...@meiers.net> > > >>>> wrote: > > >>>>>>>>>>> Hi Thomas, > > >>>>>>>>>>> > > >>>>>>>>>>> yes, you're right: > > >>>>>>>>>>> > > >>>>>>>>>>> wicketstuff data stores missed some adjustments to the latest > > >>>>>> updates > > >>>>>>>>> in > > >>>>>>>>>>> wicket-core. > > >>>>>>>>>>> > > >>>>>>>>>>> And SessionQuotaManagingDataStore$DelegatedPage must be > > >>>>>> serializable of > > >>>>>>>>>>> course. > > >>>>>>>>>>> > > >>>>>>>>>>> I've pushed changes to wicketstuff master. > > >>>>>>>>>>> > > >>>>>>>>>>> Thanks > > >>>>>>>>>>> Sven > > >>>>>>>>>>> > > >>>>>>>>>>> > > >>>>>>>>>>> On 07.04.20 14:14, Thomas Heigl wrote: > > >>>>>>>>>>>> And one more thing. There is now a warning logged just > > >>>> before > > >>>>>>>>>>> serialization: > > >>>>>>>>>>>> WARN o.a.w.pageStore.AsynchronousPageStore : Delegated > > >>>> page > > >>>>>> store > > >>>>>>>>>>>>> 'org.apache.wicket.pageStore.SerializingPageStore' can > > >>>> not be > > >>>>>>>>>>> asynchronous > > >>>>>>>>>>>> > > >>>>>>>>>>>> On Tue, Apr 7, 2020 at 2:09 PM Thomas Heigl < > > >>>>>> tho...@umschalt.com> > > >>>>>>>>> wrote: > > >>>>>>>>>>>>> The cause is the following MetaData entry in the session: > > >>>>>>>>>>>>> > > >>>>>>>>>>>>> class > > >>>> > > > org.wicketstuff.datastores.common.SessionQuotaManagingDataStore$1=org.wicketstuff.datastores.common.SessionQuotaManagingDataStore$SizeLimitedData@4090594a > > >>>>>>>>>>>>> On Tue, Apr 7, 2020 at 1:59 PM Thomas Heigl < > > >>>>>> tho...@umschalt.com> > > >>>>>>>>>>> wrote: > > >>>>>>>>>>>>>> Hi Sven, > > >>>>>>>>>>>>>> > > >>>>>>>>>>>>>> I just found time to give this a try with Wicket > > >>>> 9.0.0-M5. > > >>>>>> There > > >>>>>>>>> seem > > >>>>>>>>>>> to > > >>>>>>>>>>>>>> be issues with serialization now. > > >>>>>>>>>>>>>> > > >>>>>>>>>>>>>> My new config: > > >>>>>>>>>>>>>> > > >>>>>>>>>>>>>> protected IPageStore newCachingStore(IPageStore > > >>>> pageStore) { > > >>>>>>>>>>>>>>> return new CachingPageStore(pageStore, new > > >>>>>>>>>>> InMemoryPageStore(getName(), > > >>>>>>>>>>>>>>> MAX_PAGES_CACHED_PER_SESSION)); > > >>>>>>>>>>>>>>> } > > >>>>>>>>>>>>>>> protected IPageStore newPersistentStore() { > > >>>>>>>>>>>>>>> final RedissonRedisCache redisCache = new > > >>>>>>>>>>>>>>> RedissonRedisCache(redissonClient); > > >>>>>>>>>>>>>>> final RedisDataStore redisDataStore = new > > >>>>>>>>> RedisDataStore(getName(), > > >>>>>>>>>>>>>>> redisCache, new RedisSettings()); > > >>>>>>>>>>>>>>> return new SessionQuotaManagingDataStore(redisDataStore, > > >>>>>>>>>>>>>>> DATA_STORE_MAX_BYTES_PER_SESSION); > > >>>>>>>>>>>>>>> } > > >>>>>>>>>>>>>> This exception is logged after requests: > > >>>>>>>>>>>>>> > > >>>>>>>>>>>>>> > > >>>>>> org.springframework.data.redis.serializer.SerializationException: > > >>>>>>>>>>> Cannot > > >>>>>>>>>>>>>>> serialize; nested exception is > > >>>>>>>>>>>>>>> > > >>>> > > org.springframework.core.serializer.support.SerializationFailedException: > > >>>>>>>>>>>>>>> Failed to serialize object using DefaultSerializer; > > >>>> nested > > >>>>>>>>> exception > > >>>>>>>>>>> is > > >>>>>>>>>>>>>>> java.io.NotSerializableException: > > >>>>>>>>>>>>>>> > > >>>> > > > org.wicketstuff.datastores.common.SessionQuotaManagingDataStore$DelegatedPage > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.springframework.data.redis.serializer.JdkSerializationRedisSerializer.serialize(JdkSerializationRedisSerializer.java:96) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.springframework.data.redis.core.AbstractOperations.rawHashValue(AbstractOperations.java:185) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.springframework.data.redis.core.DefaultHashOperations.putAll(DefaultHashOperations.java:147) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.springframework.data.redis.core.DefaultBoundHashOperations.putAll(DefaultBoundHashOperations.java:147) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.springframework.session.data.redis.RedisIndexedSessionRepository$RedisSession.saveDelta(RedisIndexedSessionRepository.java:795) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.springframework.session.data.redis.RedisIndexedSessionRepository$RedisSession.save(RedisIndexedSessionRepository.java:783) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.springframework.session.data.redis.RedisIndexedSessionRepository$RedisSession.access$000(RedisIndexedSessionRepository.java:670) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.springframework.session.data.redis.RedisIndexedSessionRepository.save(RedisIndexedSessionRepository.java:398) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.springframework.session.data.redis.RedisIndexedSessionRepository.save(RedisIndexedSessionRepository.java:249) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > com.myproject.session.InstrumentedFindByIndexNameSessionRepository.save(InstrumentedFindByIndexNameSessionRepository.java:29) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>>>> > > java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native > > >>>>>>>>>>>>>>> Method) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > > >>>>>>>>>>>>>>> at > > >>>>>> java.base/java.lang.reflect.Method.invoke(Method.java:566) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:88) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > io.micrometer.core.aop.TimedAspect.processWithTimer(TimedAspect.java:105) > > >>>>>>>>>>>>>>> at > > >>>> io.micrometer.core.aop.TimedAspect.timedMethod(TimedAspect.java:94) > > >>>>>>>>>>>>>>> at > > >>>>>> jdk.internal.reflect.GeneratedMethodAccessor146.invoke(Unknown > > >>>>>>>>>>> Source) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > > >>>>>>>>>>>>>>> at > > >>>>>> java.base/java.lang.reflect.Method.invoke(Method.java:566) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:644) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:633) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:95) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212) > > >>>>>>>>>>>>>>> at com.sun.proxy.$Proxy296.save(Unknown Source) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.springframework.session.web.http.SessionRepositoryFilter$SessionRepositoryRequestWrapper.commitSession(SessionRepositoryFilter.java:225) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.springframework.session.web.http.SessionRepositoryFilter$SessionRepositoryRequestWrapper.access$100(SessionRepositoryFilter.java:192) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.springframework.session.web.http.SessionRepositoryFilter.doFilterInternal(SessionRepositoryFilter.java:144) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.springframework.session.web.http.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:82) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:666) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> org.apache.tomcat.util.net > > >>>>>>>>>>> .NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1594) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> org.apache.tomcat.util.net > > >>>>>>>>>>> .SocketProcessorBase.run(SocketProcessorBase.java:49) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) > > >>>>>>>>>>>>>>> at java.base/java.lang.Thread.run(Thread.java:834) > > >>>>>>>>>>>>>>> Caused by: > > >>>>>>>>>>>>>>> > > >>>> > > org.springframework.core.serializer.support.SerializationFailedException: > > >>>>>>>>>>>>>>> Failed to serialize object using DefaultSerializer; > > >>>> nested > > >>>>>>>>> exception > > >>>>>>>>>>> is > > >>>>>>>>>>>>>>> java.io.NotSerializableException: > > >>>>>>>>>>>>>>> > > >>>> > > > org.wicketstuff.datastores.common.SessionQuotaManagingDataStore$DelegatedPage > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.springframework.core.serializer.support.SerializingConverter.convert(SerializingConverter.java:68) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.springframework.core.serializer.support.SerializingConverter.convert(SerializingConverter.java:35) > > >>>>>>>>>>>>>>> at > > >>>>>>>>>>>>>>> > > >>>> > > > org.springframework.data.redis.serializer.JdkSerializationRedisSerializer.serialize(JdkSerializationRedisSerializer.java:94) > > >>>>>>>>>>>>>>> ... 52 common frames omitted > > >>>>>>>>>>>>>>> Caused by: java.io.NotSerializableException: > > >>>>>>>>>>>>>>> > > >>>> > > > org.wicketstuff.datastores.common.SessionQuotaManagingDataStore$DelegatedPage > > >>>>>>>>>>>>>> Why does Wicket 9 try to serialize the > > >>>>>>>>> SessionQuotaManagingDataStore in > > >>>>>>>>>>>>>> the session? Is this intended and does DelegatePage > > >>>> simply > > >>>>>> need to > > >>>>>>>>>>>>>> implement Serializable or shouldn't this be serialized at > > >>>>>> all? In > > >>>>>>>>>>> Wicket 8, > > >>>>>>>>>>>>>> the corresponding PageData wasn't serializable either so > > >>>> my > > >>>>>> guess > > >>>>>>>>>>> would be > > >>>>>>>>>>>>>> that this behavior is not intended. > > >>>>>>>>>>>>>> > > >>>>>>>>>>>>>> I'm using the following config for Wicket 8 and there > > >>>> are no > > >>>>>> such > > >>>>>>>>>>> issues: > > >>>>>>>>>>>>>> protected IPageStore newPageStore(IDataStore dataStore) { > > >>>>>>>>>>>>>>> final ISerializer pageSerializer = > > >>>>>>>>>>>>>>> getFrameworkSettings().getSerializer(); > > >>>>>>>>>>>>>>> return new PerSessionPageStore(pageSerializer, > > >>>> dataStore, > > >>>>>>>>>>>>>>> MAX_PAGES_CACHED_PER_SESSION); > > >>>>>>>>>>>>>>> } > > >>>>>>>>>>>>>>> protected IDataStore newDataStore() { > > >>>>>>>>>>>>>>> final RedissonRedisCache redisCache = new > > >>>>>>>>>>>>>>> RedissonRedisCache(redissonClient.get()); > > >>>>>>>>>>>>>>> final RedisDataStore redisDataStore = new > > >>>>>>>>> RedisDataStore(redisCache, > > >>>>>>>>>>> new > > >>>>>>>>>>>>>>> RedisSettings()); > > >>>>>>>>>>>>>>> return new SessionQuotaManagingDataStore(redisDataStore, > > >>>>>>>>>>>>>>> DATA_STORE_MAX_BYTES_PER_SESSION); > > >>>>>>>>>>>>>>> } > > >>>>>>>>>>>>>> Best regards, > > >>>>>>>>>>>>>> > > >>>>>>>>>>>>>> Thomas > > >>>>>>>>>>>>>> > > >>>>>>>>>>>>>> On Sat, Mar 28, 2020 at 10:23 AM Thomas Heigl < > > >>>>>> tho...@umschalt.com > > >>>>>>>>>>>>>> wrote: > > >>>>>>>>>>>>>> > > >>>>>>>>>>>>>>> Thanks Sven! > > >>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>> That looks much better. I'll give it a try as soon as I > > >>>> can. > > >>>>>>>>>>>>>>> Best regards, > > >>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>> Thomas > > >>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>> On Fri, Mar 27, 2020 at 2:23 PM Sven Meier < > > >>>> s...@meiers.net > > >>>>>>>>> wrote: > > >>>>>>>>>>>>>>>> Hi Thomas, > > >>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>> your question comes at the right time. > > >>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>> I was able to improve the implementation with a new > > >>>>>>>>> CachingPageStore: > > >>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>> > > >>>> > > > https://github.com/apache/wicket/blob/8df3528dc44a08b7d375c20e764a3664cd6a5f30/wicket-core/src/main/java/org/apache/wicket/DefaultPageManagerProvider.java#L145 > > >>>>>>>>>>>>>>>> You can now use InMemoryPageStore as a cache too. > > >>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>> Have fun > > >>>>>>>>>>>>>>>> Sven > > >>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>> On 27.03.20 09:34, Sven Meier wrote: > > >>>>>>>>>>>>>>>>> Hi Thomas, > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>> I thought I covered that usecase, but I will have to > > >>>> take > > >>>>>> a > > >>>>>>>>> look. > > >>>>>>>>>>>>>>>>> Thanks for testing Wicket 9 > > >>>>>>>>>>>>>>>>> Sven > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>> On 25.03.20 20:10, Thomas Heigl wrote: > > >>>>>>>>>>>>>>>>>> Maybe the same approach could be used as for > > >>>>>> InSessionPageStore > > >>>>>>>>>>> that > > >>>>>>>>>>>>>>>>>> can be > > >>>>>>>>>>>>>>>>>> used as cache and a store: > > >>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>> > > >>>> > > > https://github.com/apache/wicket/commit/894799e01227781be76886b2d1cdb2a424c812e0 > > >>>>>>>>>>>>>>>>>> On Wed, Mar 25, 2020 at 6:35 PM Thomas Heigl < > > >>>>>>>>> tho...@umschalt.com> > > >>>>>>>>>>>>>>>>>> wrote: > > >>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>> Hi all, > > >>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>> I just merged our master in our Wicket 9 branch and > > >>>> I > > >>>>>> ran > > >>>>>>>>> into an > > >>>>>>>>>>>>>>>>>>> issue: > > >>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>> Our current configuration with Wicket 8 looks like > > >>>> this: > > >>>>>>>>>>>>>>>>>>> PageStore = PerSessionPageStore > > >>>>>>>>>>>>>>>>>>> DataStore = RedisDataStore > > >>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>> So the page store keeps the last couple of pages of > > >>>> a > > >>>>>> session > > >>>>>>>>> in > > >>>>>>>>>>>>>>>> memory > > >>>>>>>>>>>>>>>>>>> and Redis is used as a persistent store. > > >>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>> I tried to recreate this behavior with Wicket 9: > > >>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>> SessionStore = InMemoryPageStore > > >>>>>>>>>>>>>>>>>>> PersistentStore = RedisDataStore > > >>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>> This looks correct, but it *does not work* because > > >>>>>>>>> InMemoryPage > > >>>>>>>>>>>>>>>> store > > >>>>>>>>>>>>>>>>>>> implements AbstractPersistentPageStore and does > > >>>> *not* > > >>>>>>>>> delegate to > > >>>>>>>>>>>>>>>> the > > >>>>>>>>>>>>>>>>>>> next store in the chain. > > >>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>> So we basically lost the option to use a memory page > > >>>>>> store in > > >>>>>>>>>>> front > > >>>>>>>>>>>>>>>>>>> of a > > >>>>>>>>>>>>>>>>>>> persistent store. > > >>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>> We need this functionality because we are using > > >>>> Spring > > >>>>>>>>> Session and > > >>>>>>>>>>>>>>>>>>> cannot > > >>>>>>>>>>>>>>>>>>> use the session as a page store. > > >>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>> Would it be possible to add an InMemory store that > > >>>>>> delegates > > >>>>>>>>> to > > >>>>>>>>>>> the > > >>>>>>>>>>>>>>>>>>> next > > >>>>>>>>>>>>>>>>>>> store in the chain? Or do I have to implement it > > >>>> myself? > > >>>>>>>>>>>>>>>>>>> Best regards, > > >>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>> Thomas > > >>>>>>>>>>>>>>>>>>> > > >>>>>> > > --------------------------------------------------------------------- > > >>>>>>>>>>>>>>>>> To unsubscribe, e-mail: > > >>>>>> users-unsubscr...@wicket.apache.org > > >>>>>>>>>>>>>>>>> For additional commands, e-mail: > > >>>>>> users-h...@wicket.apache.org > > >>>> > --------------------------------------------------------------------- > > >>>>>>>>>>>>>>>> To unsubscribe, e-mail: > > >>>>>> users-unsubscr...@wicket.apache.org > > >>>>>>>>>>>>>>>> For additional commands, e-mail: > > >>>>>> users-h...@wicket.apache.org > > >>>>>>>>>>>>>>>> > > >>>>>>>>>>> > > >>>>>> > > --------------------------------------------------------------------- > > >>>>>>>>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > > >>>>>>>>>>> For additional commands, e-mail: > > >>>> users-h...@wicket.apache.org > > >>>>>>>>>>> > > >>>>>>>>> > > >>>>>>>>> > > >>>>>>>>> -- > > >>>>>>>>> Best regards, > > >>>>>>>>> Maxim > > >>>>>>>>> > > >>>>>>>>> > > >>>> > --------------------------------------------------------------------- > > >>>>>>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > > >>>>>>>>> For additional commands, e-mail: users-h...@wicket.apache.org > > >>>>>>>>> > > >>>>>>>>> > > >>>>>>> > > >>>>>>> > > >>>>>>> -- > > >>>>>>> Best regards, > > >>>>>>> Maxim > > >>>>>> > > >>>>>> > > >>>>>> -- > > >>>>>> Best regards, > > >>>>>> Maxim > > >>>>>> > > >>>>>> > > --------------------------------------------------------------------- > > >>>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > > >>>>>> For additional commands, e-mail: users-h...@wicket.apache.org > > >>>>>> > > >>>>>> > > >>>> > > >>>> > > >>>> -- > > >>>> Best regards, > > >>>> Maxim > > >>>> > > >>>> > --------------------------------------------------------------------- > > >>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > > >>>> For additional commands, e-mail: users-h...@wicket.apache.org > > >>>> > > >>>> > > >> > > >> > > >> -- > > >> Best regards, > > >> Maxim > > > > > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > > For additional commands, e-mail: users-h...@wicket.apache.org > > > > >