You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Erik Strid <st...@gmail.com> on 2016/09/06 08:39:08 UTC

Issue using Wicket Bootstap Less

Hi.

We are using Wicket Bootstap Less in our project and have an issue with the
Less compilation.
From time to time the compilation fails for some of the Less files in our
project, usually we see this in our Selenium Grid but it have happened
locally as well.

When the compilation fails we get this stacktrace:

java.lang.NullPointerException: null
at
de.agilecoders.wicket.less.LessCacheManager.findLastModified(LessCacheManager.java:159)
~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
at
de.agilecoders.wicket.less.LessCacheManager.findLastModified(LessCacheManager.java:165)
~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
at
de.agilecoders.wicket.less.LessCacheManager.getLastModifiedTime(LessCacheManager.java:145)
~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
at
de.agilecoders.wicket.less.LessResourceStream.lastModifiedTime(LessResourceStream.java:65)
~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
at
org.apache.wicket.request.resource.PackageResource.newResourceResponse(PackageResource.java:295)
~[wicket-core-6.22.0.jar:6.22.0]
at
org.apache.wicket.request.resource.AbstractResource.respond(AbstractResource.java:498)
~[wicket-core-6.22.0.jar:6.22.0]
at
org.apache.wicket.request.handler.resource.ResourceRequestHandler.respond(ResourceRequestHandler.java:75)
~[wicket-core-6.22.0.jar:6.22.0]
at
org.apache.wicket.request.handler.resource.ResourceReferenceRequestHandler.respond(ResourceReferenceRequestHandler.java:108)
~[wicket-core-6.22.0.jar:6.22.0]
at
org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:890)
~[wicket-core-6.22.0.jar:6.22.0]
at
org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
~[wicket-request-6.22.0.jar:6.22.0]
at
org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:261)
[wicket-core-6.22.0.jar:6.22.0]
at
org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:218)
[wicket-core-6.22.0.jar:6.22.0]
at
org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:289)
[wicket-core-6.22.0.jar:6.22.0]
at
org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:259)
[wicket-core-6.22.0.jar:6.22.0]
at
org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:201)
[wicket-core-6.22.0.jar:6.22.0]
at
org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:282)
[wicket-core-6.22.0.jar:6.22.0]
at
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
[jetty-servlet-9.2.15.v20160210.jar:9.2.15.v20160210]
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:369)
[spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
at
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
[spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
at
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
[spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
[spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
at
org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
[spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
[spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
at
org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)
[spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
[spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
at
org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)
[spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]

I have been able do see what is happening when we get the problem locally,
it is the importedSources for the file currently compiled that contains
null.
And from what I have seen (if I'm remembering correctly) it has been the
first element in the list that is null and the other items in the list
contains the correct imports. We are using "classpath!" imports for usually
one or two imports.

I cannot see any point where it is possible to add null to the list of
imported sources from reviewing the code that adds the imports in the Less
files.

Furthermore we are adding Less a variable using
LessCompilerConfigurationFactory and clear the LessCacheManager upon
changes to this variable, however during the tests in our Selenium Grid
this shouldn't happen.

My problem is that I'm not able to reproduce the issue.
Have someone encountered this problem before? Or does someone have hints on
how to proceed with the troubleshooting?

Regards
Erik Strid

Re: Issue using Wicket Bootstap Less

Posted by Erik Strid <st...@gmail.com>.
Hi Martin,

Thank you for your fast responses and the release!

Kind regards
Erik Strid

On Sat, Oct 8, 2016 at 11:38 PM, Martin Grigorov <mg...@apache.org>
wrote:

> Done!
> 0.9.20 and 0.10.10 will be soon at Maven Central.
>
> Martin Grigorov
> Wicket Training and Consulting
> https://twitter.com/mtgrigorov
>
> On Thu, Oct 6, 2016 at 9:34 AM, Martin Grigorov <mg...@apache.org>
> wrote:
>
> > I want to do some more changes before the next release.
> > Ping me again if you need it sooner.
> >
> > Martin Grigorov
> > Wicket Training and Consulting
> > https://twitter.com/mtgrigorov
> >
> > On Thu, Oct 6, 2016 at 8:06 AM, Erik Strid <st...@gmail.com> wrote:
> >
> >> Hi,
> >>
> >> We have tested the new 0.9.20-SNAPSHOT and it seems to be working as
> >> expected.
> >> Can we make new release request?
> >>
> >> Regards
> >> Erik Strid
> >>
> >> On Wed, Oct 5, 2016 at 8:18 AM, Tobias Soloschenko <
> >> tobiassoloschenko@googlemail.com> wrote:
> >>
> >> > Hi,
> >> >
> >> > just wanted to thank you for your contributions! :-)
> >> >
> >> > kind regards
> >> >
> >> > Tobias
> >> >
> >> > > Am 05.10.2016 um 07:17 schrieb Erik Strid <st...@gmail.com>:
> >> > >
> >> > > Hi Martin,
> >> > >
> >> > > Thank you for the fast release!
> >> > >
> >> > > Unfortunately did we find another issue in the LessCacheManager
> >> before we
> >> > > closed this issue on our side, that is related to this issue width
> the
> >> > > importedSources.
> >> > > I have created another pull request, see
> >> > > https://github.com/l0rdn1kk0n/wicket-bootstrap/pull/638.
> >> > >
> >> > > Regards
> >> > > Erik Strid
> >> > >
> >> > > On Wed, Sep 28, 2016 at 10:06 AM, Martin Grigorov <
> >> mgrigorov@apache.org>
> >> > > wrote:
> >> > >
> >> > >> Done!
> >> > >> 0.9.19 and 0.10.9 are on their way to Maven Central!
> >> > >> Enjoy!
> >> > >>
> >> > >> Martin Grigorov
> >> > >> Wicket Training and Consulting
> >> > >> https://twitter.com/mtgrigorov
> >> > >>
> >> > >> On Wed, Sep 28, 2016 at 9:46 AM, Martin Grigorov <
> >> mgrigorov@apache.org>
> >> > >> wrote:
> >> > >>
> >> > >>> Releases are cheap!
> >> > >>> I'll do it today!
> >> > >>>
> >> > >>> Martin Grigorov
> >> > >>> Wicket Training and Consulting
> >> > >>> https://twitter.com/mtgrigorov
> >> > >>>
> >> > >>> On Wed, Sep 28, 2016 at 9:40 AM, Erik Strid <strid.erik@gmail.com
> >
> >> > >> wrote:
> >> > >>>
> >> > >>>> Hi Martin,
> >> > >>>>
> >> > >>>> Thank you for your fast response to the pull request!
> >> > >>>>
> >> > >>>> How often is the wicket-boostrap project released?
> >> > >>>>
> >> > >>>> We have tested the snapshot in our test environment and we think
> >> the
> >> > >>>> solution works as intended. We would like to have a correct
> release
> >> > >> before
> >> > >>>> releasing the whole solution to the real world. This will happen
> >> > within
> >> > >>>> 3-4
> >> > >>>> weeks. Is it possible to get a release in that time frame?
> >> > >>>>
> >> > >>>> Regards
> >> > >>>> Erik
> >> > >>>>
> >> > >>>> On Thu, Sep 22, 2016 at 9:26 PM, Martin Grigorov <
> >> > mgrigorov@apache.org>
> >> > >>>> wrote:
> >> > >>>>
> >> > >>>>> Merged!
> >> > >>>>> Thanks a lot!
> >> > >>>>>
> >> > >>>>> Martin Grigorov
> >> > >>>>> Wicket Training and Consulting
> >> > >>>>> https://twitter.com/mtgrigorov
> >> > >>>>>
> >> > >>>>> On Thu, Sep 22, 2016 at 1:11 PM, Erik Strid <
> strid.erik@gmail.com
> >> >
> >> > >>>> wrote:
> >> > >>>>>
> >> > >>>>>> Hi Martin,
> >> > >>>>>>
> >> > >>>>>> I have created a pull request, see
> >> > >>>>>> https://github.com/l0rdn1kk0n/wicket-bootstrap/pull/636
> >> > >>>>>>
> >> > >>>>>> Regards
> >> > >>>>>> Erik
> >> > >>>>>>
> >> > >>>>>> On Tue, Sep 20, 2016 at 9:08 PM, Martin Grigorov <
> >> > >>>> mgrigorov@apache.org>
> >> > >>>>>> wrote:
> >> > >>>>>>
> >> > >>>>>>> Hi Erik,
> >> > >>>>>>>
> >> > >>>>>>> Many thanks for investigating this!
> >> > >>>>>>>
> >> > >>>>>>> Please create a Pull Request!
> >> > >>>>>>> It seems you already know how to fix it!
> >> > >>>>>>> Thank you!
> >> > >>>>>>>
> >> > >>>>>>> Martin Grigorov
> >> > >>>>>>> Wicket Training and Consulting
> >> > >>>>>>> https://twitter.com/mtgrigorov
> >> > >>>>>>>
> >> > >>>>>>> On Tue, Sep 20, 2016 at 2:16 PM, Erik Strid <
> >> strid.erik@gmail.com
> >> > >>>
> >> > >>>>>> wrote:
> >> > >>>>>>>
> >> > >>>>>>>> Hi Martin,
> >> > >>>>>>>>
> >> > >>>>>>>> I have finally found some time to investigate this issue
> >> > >> further.
> >> > >>>>>>>>
> >> > >>>>>>>> It seems that clearing the cache only will clear the variable
> >> > >>>>>>> contentCache
> >> > >>>>>>>> and not both the contentCache and urlSourceCache variables in
> >> > >>>>>>>> LessCacheManager. A cleared cache will trigger a recompile in
> >> > >>>>>>>> LessCacheManager.getCss(URLSource) on a cached URLSource, in
> >> > >> this
> >> > >>>>> case
> >> > >>>>>>>> will
> >> > >>>>>>>> the compiler add the imported files to the importedSources
> >> list,
> >> > >>>>>> returned
> >> > >>>>>>>> by AbstractHierarchicalSource.getImportedSources(), once
> more.
> >> > >>>> And
> >> > >>>>> the
> >> > >>>>>>>> importedSources list will grow with imported files after each
> >> > >>>> call to
> >> > >>>>>>>> clearCache.
> >> > >>>>>>>> The NPE that we get is a result of the shared URLSource and a
> >> > >> race
> >> > >>>>>>>> condition in AbstractHierarchicalSource.
> >> > >>>>> addImportedSource(LessSource)
> >> > >>>>>>>> (importedSources isn't thread safe).
> >> > >>>>>>>>
> >> > >>>>>>>> Furthermore I think there is an issue with the
> >> > >>>>>>>> LessCacheManager.getCss(URLSource). For the first file that
> is
> >> > >>>>>> compiled
> >> > >>>>>>>> will the list of imported sources for lessSource be empty.
> The
> >> > >>>>>>>> lastModifiedTime will then only contain the timestamp for the
> >> > >> file
> >> > >>>>> and
> >> > >>>>>>> not
> >> > >>>>>>>> the last modified time of the file itself or its imports, so
> >> the
> >> > >>>>>>>> lastModifiedTime will be incorrect when adding the compiled
> >> > >>>> source to
> >> > >>>>>> the
> >> > >>>>>>>> timeToContentMap the first time.
> >> > >>>>>>>>
> >> > >>>>>>>> You should be able to see these two issues in this commit
> >> > >>>>>>>> https://github.com/strido/wicket-bootstrap/commit/
> >> > >>>>>>>> 2be0d8d4294162bd103e63c74198d90457e6069e
> >> > >>>>>>>>
> >> > >>>>>>>> Should I report this to your issue tracker (
> >> > >>>>>>>> https://github.com/l0rdn1kk0n/wicket-bootstrap/issues)?
> >> > >>>>>>>>
> >> > >>>>>>>> Regards
> >> > >>>>>>>> Erik Strid
> >> > >>>>>>>>
> >> > >>>>>>>> On Tue, Sep 6, 2016 at 10:49 AM, Martin Grigorov <
> >> > >>>>> mgrigorov@apache.org
> >> > >>>>>>>
> >> > >>>>>>>> wrote:
> >> > >>>>>>>>
> >> > >>>>>>>>> Hi,
> >> > >>>>>>>>>
> >> > >>>>>>>>> If the list of imported sources contains "null" then you
> >> > >> should
> >> > >>>> ask
> >> > >>>>>> at
> >> > >>>>>>>>> https://github.com/SomMeri/less4j/issues.
> >> > >>>>>>>>>
> >> > >>>>>>>>> What I can do in Wicket-Bootstrap-Less is to add protection
> >> > >>>> against
> >> > >>>>>>> this
> >> > >>>>>>>>> NullPointerException by ignoring all "null"s. But this may
> >> > >> lead
> >> > >>>> to
> >> > >>>>>>> broken
> >> > >>>>>>>>> UI!
> >> > >>>>>>>>> Please file an issue at
> >> > >>>>>>>>> https://github.com/l0rdn1kk0n/wicket-bootstrap/issues if
> you
> >> > >>>> think
> >> > >>>>>>> this
> >> > >>>>>>>>> could help.
> >> > >>>>>>>>>
> >> > >>>>>>>>> Martin Grigorov
> >> > >>>>>>>>> Wicket Training and Consulting
> >> > >>>>>>>>> https://twitter.com/mtgrigorov
> >> > >>>>>>>>>
> >> > >>>>>>>>> On Tue, Sep 6, 2016 at 10:39 AM, Erik Strid <
> >> > >>>> strid.erik@gmail.com>
> >> > >>>>>>>> wrote:
> >> > >>>>>>>>>
> >> > >>>>>>>>>> Hi.
> >> > >>>>>>>>>>
> >> > >>>>>>>>>> We are using Wicket Bootstap Less in our project and have
> an
> >> > >>>>> issue
> >> > >>>>>>> with
> >> > >>>>>>>>> the
> >> > >>>>>>>>>> Less compilation.
> >> > >>>>>>>>>> From time to time the compilation fails for some of the
> Less
> >> > >>>>> files
> >> > >>>>>> in
> >> > >>>>>>>> our
> >> > >>>>>>>>>> project, usually we see this in our Selenium Grid but it
> >> > >> have
> >> > >>>>>>> happened
> >> > >>>>>>>>>> locally as well.
> >> > >>>>>>>>>>
> >> > >>>>>>>>>> When the compilation fails we get this stacktrace:
> >> > >>>>>>>>>>
> >> > >>>>>>>>>> java.lang.NullPointerException: null
> >> > >>>>>>>>>> at
> >> > >>>>>>>>>> de.agilecoders.wicket.less.LessCacheManager.
> >> > >> findLastModified(
> >> > >>>>>>>>>> LessCacheManager.java:159)
> >> > >>>>>>>>>> ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> >> > >>>>>>>>>> at
> >> > >>>>>>>>>> de.agilecoders.wicket.less.LessCacheManager.
> >> > >> findLastModified(
> >> > >>>>>>>>>> LessCacheManager.java:165)
> >> > >>>>>>>>>> ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> >> > >>>>>>>>>> at
> >> > >>>>>>>>>> de.agilecoders.wicket.less.LessCacheManager.
> >> > >> getLastModifiedT
> >> > >>>> ime(
> >> > >>>>>>>>>> LessCacheManager.java:145)
> >> > >>>>>>>>>> ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> >> > >>>>>>>>>> at
> >> > >>>>>>>>>> de.agilecoders.wicket.less.LessResourceStream.
> >> > >> lastModifiedTi
> >> > >>>> me(
> >> > >>>>>>>>>> LessResourceStream.java:65)
> >> > >>>>>>>>>> ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> >> > >>>>>>>>>> at
> >> > >>>>>>>>>> org.apache.wicket.request.resource.PackageResource.
> >> > >>>>>>>> newResourceResponse(
> >> > >>>>>>>>>> PackageResource.java:295)
> >> > >>>>>>>>>> ~[wicket-core-6.22.0.jar:6.22.0]
> >> > >>>>>>>>>> at
> >> > >>>>>>>>>> org.apache.wicket.request.resource.AbstractResource.
> >> > >>>>>>>>>> respond(AbstractResource.java:498)
> >> > >>>>>>>>>> ~[wicket-core-6.22.0.jar:6.22.0]
> >> > >>>>>>>>>> at
> >> > >>>>>>>>>> org.apache.wicket.request.handler.resource.
> >> > >>>>> ResourceRequestHandler.
> >> > >>>>>>>>> respond(
> >> > >>>>>>>>>> ResourceRequestHandler.java:75)
> >> > >>>>>>>>>> ~[wicket-core-6.22.0.jar:6.22.0]
> >> > >>>>>>>>>> at
> >> > >>>>>>>>>> org.apache.wicket.request.handler.resource.
> >> > >>>>>>>>> ResourceReferenceRequestHandle
> >> > >>>>>>>>>> r.respond(ResourceReferenceRequestHandler.java:108)
> >> > >>>>>>>>>> ~[wicket-core-6.22.0.jar:6.22.0]
> >> > >>>>>>>>>> at
> >> > >>>>>>>>>> org.apache.wicket.request.cycle.RequestCycle$
> >> > >>>>>>> HandlerExecutor.respond(
> >> > >>>>>>>>>> RequestCycle.java:890)
> >> > >>>>>>>>>> ~[wicket-core-6.22.0.jar:6.22.0]
> >> > >>>>>>>>>> at
> >> > >>>>>>>>>> org.apache.wicket.request.RequestHandlerStack.execute(
> >> > >>>>>>>>>> RequestHandlerStack.java:64)
> >> > >>>>>>>>>> ~[wicket-request-6.22.0.jar:6.22.0]
> >> > >>>>>>>>>> at
> >> > >>>>>>>>>> org.apache.wicket.request.cycle.RequestCycle.execute(
> >> > >>>>>>>>>> RequestCycle.java:261)
> >> > >>>>>>>>>> [wicket-core-6.22.0.jar:6.22.0]
> >> > >>>>>>>>>> at
> >> > >>>>>>>>>> org.apache.wicket.request.cycle.RequestCycle.
> >> > >>>>>>>>> processRequest(RequestCycle.
> >> > >>>>>>>>>> java:218)
> >> > >>>>>>>>>> [wicket-core-6.22.0.jar:6.22.0]
> >> > >>>>>>>>>> at
> >> > >>>>>>>>>> org.apache.wicket.request.cycle.RequestCycle.
> >> > >>>>>>> processRequestAndDetach(
> >> > >>>>>>>>>> RequestCycle.java:289)
> >> > >>>>>>>>>> [wicket-core-6.22.0.jar:6.22.0]
> >> > >>>>>>>>>> at
> >> > >>>>>>>>>> org.apache.wicket.protocol.http.WicketFilter.
> >> > >>>>> processRequestCycle(
> >> > >>>>>>>>>> WicketFilter.java:259)
> >> > >>>>>>>>>> [wicket-core-6.22.0.jar:6.22.0]
> >> > >>>>>>>>>> at
> >> > >>>>>>>>>> org.apache.wicket.protocol.http.WicketFilter.
> >> > >>>>>>>>> processRequest(WicketFilter.
> >> > >>>>>>>>>> java:201)
> >> > >>>>>>>>>> [wicket-core-6.22.0.jar:6.22.0]
> >> > >>>>>>>>>> at
> >> > >>>>>>>>>> org.apache.wicket.protocol.http.WicketFilter.doFilter(
> >> > >>>>>>>>>> WicketFilter.java:282)
> >> > >>>>>>>>>> [wicket-core-6.22.0.jar:6.22.0]
> >> > >>>>>>>>>> at
> >> > >>>>>>>>>> org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> >> > >>>>>>>>>> doFilter(ServletHandler.java:1652)
> >> > >>>>>>>>>> [jetty-servlet-9.2.15.v20160210.jar:9.2.15.v20160210]
> >> > >>>>>>>>>> at
> >> > >>>>>>>>>> org.springframework.security.web.FilterChainProxy$
> >> > >>>>>>>>>> VirtualFilterChain.doFilter(FilterChainProxy.java:369)
> >> > >>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> >> > >>>>>>>>>> at
> >> > >>>>>>>>>> org.springframework.security.web.access.intercept.
> >> > >>>>>>>>>> FilterSecurityInterceptor.invoke(
> FilterSecurityInterceptor.
> >> > >>>>>> java:109)
> >> > >>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> >> > >>>>>>>>>> at
> >> > >>>>>>>>>> org.springframework.security.web.access.intercept.
> >> > >>>>>>>>>> FilterSecurityInterceptor.doFilter(
> >> > >> FilterSecurityInterceptor.
> >> > >>>>>>> java:83)
> >> > >>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> >> > >>>>>>>>>> at
> >> > >>>>>>>>>> org.springframework.security.web.FilterChainProxy$
> >> > >>>>>>>>>> VirtualFilterChain.doFilter(FilterChainProxy.java:381)
> >> > >>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> >> > >>>>>>>>>> at
> >> > >>>>>>>>>> org.springframework.security.web.access.
> >> > >>>>>> ExceptionTranslationFilter.
> >> > >>>>>>>>>> doFilter(ExceptionTranslationFilter.java:97)
> >> > >>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> >> > >>>>>>>>>> at
> >> > >>>>>>>>>> org.springframework.security.web.FilterChainProxy$
> >> > >>>>>>>>>> VirtualFilterChain.doFilter(FilterChainProxy.java:381)
> >> > >>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> >> > >>>>>>>>>> at
> >> > >>>>>>>>>> org.springframework.security.web.session.
> >> > >>>>> SessionManagementFilter.
> >> > >>>>>>>>> doFilter(
> >> > >>>>>>>>>> SessionManagementFilter.java:100)
> >> > >>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> >> > >>>>>>>>>> at
> >> > >>>>>>>>>> org.springframework.security.web.FilterChainProxy$
> >> > >>>>>>>>>> VirtualFilterChain.doFilter(FilterChainProxy.java:381)
> >> > >>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> >> > >>>>>>>>>> at
> >> > >>>>>>>>>> org.springframework.security.web.authentication.
> >> > >>>>>>>>>> AnonymousAuthenticationFilter.doFilter(
> >> > >>>>>>> AnonymousAuthenticationFilter.
> >> > >>>>>>>>>> java:78)
> >> > >>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> >> > >>>>>>>>>>
> >> > >>>>>>>>>> I have been able do see what is happening when we get the
> >> > >>>> problem
> >> > >>>>>>>>> locally,
> >> > >>>>>>>>>> it is the importedSources for the file currently compiled
> >> > >> that
> >> > >>>>>>> contains
> >> > >>>>>>>>>> null.
> >> > >>>>>>>>>> And from what I have seen (if I'm remembering correctly) it
> >> > >>>> has
> >> > >>>>>> been
> >> > >>>>>>>> the
> >> > >>>>>>>>>> first element in the list that is null and the other items
> >> > >> in
> >> > >>>> the
> >> > >>>>>>> list
> >> > >>>>>>>>>> contains the correct imports. We are using "classpath!"
> >> > >>>> imports
> >> > >>>>> for
> >> > >>>>>>>>> usually
> >> > >>>>>>>>>> one or two imports.
> >> > >>>>>>>>>>
> >> > >>>>>>>>>> I cannot see any point where it is possible to add null to
> >> > >> the
> >> > >>>>> list
> >> > >>>>>>> of
> >> > >>>>>>>>>> imported sources from reviewing the code that adds the
> >> > >>>> imports in
> >> > >>>>>> the
> >> > >>>>>>>>> Less
> >> > >>>>>>>>>> files.
> >> > >>>>>>>>>>
> >> > >>>>>>>>>> Furthermore we are adding Less a variable using
> >> > >>>>>>>>>> LessCompilerConfigurationFactory and clear the
> >> > >>>> LessCacheManager
> >> > >>>>>> upon
> >> > >>>>>>>>>> changes to this variable, however during the tests in our
> >> > >>>>> Selenium
> >> > >>>>>>> Grid
> >> > >>>>>>>>>> this shouldn't happen.
> >> > >>>>>>>>>>
> >> > >>>>>>>>>> My problem is that I'm not able to reproduce the issue.
> >> > >>>>>>>>>> Have someone encountered this problem before? Or does
> >> > >> someone
> >> > >>>>> have
> >> > >>>>>>>> hints
> >> > >>>>>>>>> on
> >> > >>>>>>>>>> how to proceed with the troubleshooting?
> >> > >>>>>>>>>>
> >> > >>>>>>>>>> Regards
> >> > >>>>>>>>>> Erik Strid
> >> > >>>>>>>>>>
> >> > >>>>>>>>>
> >> > >>>>>>>>
> >> > >>>>>>>
> >> > >>>>>>
> >> > >>>>>
> >> > >>>>
> >> > >>>
> >> > >>>
> >> > >>
> >> >
> >> > ---------------------------------------------------------------------
> >> > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> >> > For additional commands, e-mail: users-help@wicket.apache.org
> >> >
> >> >
> >>
> >
> >
>

Re: Issue using Wicket Bootstap Less

Posted by Martin Grigorov <mg...@apache.org>.
Done!
0.9.20 and 0.10.10 will be soon at Maven Central.

Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov

On Thu, Oct 6, 2016 at 9:34 AM, Martin Grigorov <mg...@apache.org>
wrote:

> I want to do some more changes before the next release.
> Ping me again if you need it sooner.
>
> Martin Grigorov
> Wicket Training and Consulting
> https://twitter.com/mtgrigorov
>
> On Thu, Oct 6, 2016 at 8:06 AM, Erik Strid <st...@gmail.com> wrote:
>
>> Hi,
>>
>> We have tested the new 0.9.20-SNAPSHOT and it seems to be working as
>> expected.
>> Can we make new release request?
>>
>> Regards
>> Erik Strid
>>
>> On Wed, Oct 5, 2016 at 8:18 AM, Tobias Soloschenko <
>> tobiassoloschenko@googlemail.com> wrote:
>>
>> > Hi,
>> >
>> > just wanted to thank you for your contributions! :-)
>> >
>> > kind regards
>> >
>> > Tobias
>> >
>> > > Am 05.10.2016 um 07:17 schrieb Erik Strid <st...@gmail.com>:
>> > >
>> > > Hi Martin,
>> > >
>> > > Thank you for the fast release!
>> > >
>> > > Unfortunately did we find another issue in the LessCacheManager
>> before we
>> > > closed this issue on our side, that is related to this issue width the
>> > > importedSources.
>> > > I have created another pull request, see
>> > > https://github.com/l0rdn1kk0n/wicket-bootstrap/pull/638.
>> > >
>> > > Regards
>> > > Erik Strid
>> > >
>> > > On Wed, Sep 28, 2016 at 10:06 AM, Martin Grigorov <
>> mgrigorov@apache.org>
>> > > wrote:
>> > >
>> > >> Done!
>> > >> 0.9.19 and 0.10.9 are on their way to Maven Central!
>> > >> Enjoy!
>> > >>
>> > >> Martin Grigorov
>> > >> Wicket Training and Consulting
>> > >> https://twitter.com/mtgrigorov
>> > >>
>> > >> On Wed, Sep 28, 2016 at 9:46 AM, Martin Grigorov <
>> mgrigorov@apache.org>
>> > >> wrote:
>> > >>
>> > >>> Releases are cheap!
>> > >>> I'll do it today!
>> > >>>
>> > >>> Martin Grigorov
>> > >>> Wicket Training and Consulting
>> > >>> https://twitter.com/mtgrigorov
>> > >>>
>> > >>> On Wed, Sep 28, 2016 at 9:40 AM, Erik Strid <st...@gmail.com>
>> > >> wrote:
>> > >>>
>> > >>>> Hi Martin,
>> > >>>>
>> > >>>> Thank you for your fast response to the pull request!
>> > >>>>
>> > >>>> How often is the wicket-boostrap project released?
>> > >>>>
>> > >>>> We have tested the snapshot in our test environment and we think
>> the
>> > >>>> solution works as intended. We would like to have a correct release
>> > >> before
>> > >>>> releasing the whole solution to the real world. This will happen
>> > within
>> > >>>> 3-4
>> > >>>> weeks. Is it possible to get a release in that time frame?
>> > >>>>
>> > >>>> Regards
>> > >>>> Erik
>> > >>>>
>> > >>>> On Thu, Sep 22, 2016 at 9:26 PM, Martin Grigorov <
>> > mgrigorov@apache.org>
>> > >>>> wrote:
>> > >>>>
>> > >>>>> Merged!
>> > >>>>> Thanks a lot!
>> > >>>>>
>> > >>>>> Martin Grigorov
>> > >>>>> Wicket Training and Consulting
>> > >>>>> https://twitter.com/mtgrigorov
>> > >>>>>
>> > >>>>> On Thu, Sep 22, 2016 at 1:11 PM, Erik Strid <strid.erik@gmail.com
>> >
>> > >>>> wrote:
>> > >>>>>
>> > >>>>>> Hi Martin,
>> > >>>>>>
>> > >>>>>> I have created a pull request, see
>> > >>>>>> https://github.com/l0rdn1kk0n/wicket-bootstrap/pull/636
>> > >>>>>>
>> > >>>>>> Regards
>> > >>>>>> Erik
>> > >>>>>>
>> > >>>>>> On Tue, Sep 20, 2016 at 9:08 PM, Martin Grigorov <
>> > >>>> mgrigorov@apache.org>
>> > >>>>>> wrote:
>> > >>>>>>
>> > >>>>>>> Hi Erik,
>> > >>>>>>>
>> > >>>>>>> Many thanks for investigating this!
>> > >>>>>>>
>> > >>>>>>> Please create a Pull Request!
>> > >>>>>>> It seems you already know how to fix it!
>> > >>>>>>> Thank you!
>> > >>>>>>>
>> > >>>>>>> Martin Grigorov
>> > >>>>>>> Wicket Training and Consulting
>> > >>>>>>> https://twitter.com/mtgrigorov
>> > >>>>>>>
>> > >>>>>>> On Tue, Sep 20, 2016 at 2:16 PM, Erik Strid <
>> strid.erik@gmail.com
>> > >>>
>> > >>>>>> wrote:
>> > >>>>>>>
>> > >>>>>>>> Hi Martin,
>> > >>>>>>>>
>> > >>>>>>>> I have finally found some time to investigate this issue
>> > >> further.
>> > >>>>>>>>
>> > >>>>>>>> It seems that clearing the cache only will clear the variable
>> > >>>>>>> contentCache
>> > >>>>>>>> and not both the contentCache and urlSourceCache variables in
>> > >>>>>>>> LessCacheManager. A cleared cache will trigger a recompile in
>> > >>>>>>>> LessCacheManager.getCss(URLSource) on a cached URLSource, in
>> > >> this
>> > >>>>> case
>> > >>>>>>>> will
>> > >>>>>>>> the compiler add the imported files to the importedSources
>> list,
>> > >>>>>> returned
>> > >>>>>>>> by AbstractHierarchicalSource.getImportedSources(), once more.
>> > >>>> And
>> > >>>>> the
>> > >>>>>>>> importedSources list will grow with imported files after each
>> > >>>> call to
>> > >>>>>>>> clearCache.
>> > >>>>>>>> The NPE that we get is a result of the shared URLSource and a
>> > >> race
>> > >>>>>>>> condition in AbstractHierarchicalSource.
>> > >>>>> addImportedSource(LessSource)
>> > >>>>>>>> (importedSources isn't thread safe).
>> > >>>>>>>>
>> > >>>>>>>> Furthermore I think there is an issue with the
>> > >>>>>>>> LessCacheManager.getCss(URLSource). For the first file that is
>> > >>>>>> compiled
>> > >>>>>>>> will the list of imported sources for lessSource be empty. The
>> > >>>>>>>> lastModifiedTime will then only contain the timestamp for the
>> > >> file
>> > >>>>> and
>> > >>>>>>> not
>> > >>>>>>>> the last modified time of the file itself or its imports, so
>> the
>> > >>>>>>>> lastModifiedTime will be incorrect when adding the compiled
>> > >>>> source to
>> > >>>>>> the
>> > >>>>>>>> timeToContentMap the first time.
>> > >>>>>>>>
>> > >>>>>>>> You should be able to see these two issues in this commit
>> > >>>>>>>> https://github.com/strido/wicket-bootstrap/commit/
>> > >>>>>>>> 2be0d8d4294162bd103e63c74198d90457e6069e
>> > >>>>>>>>
>> > >>>>>>>> Should I report this to your issue tracker (
>> > >>>>>>>> https://github.com/l0rdn1kk0n/wicket-bootstrap/issues)?
>> > >>>>>>>>
>> > >>>>>>>> Regards
>> > >>>>>>>> Erik Strid
>> > >>>>>>>>
>> > >>>>>>>> On Tue, Sep 6, 2016 at 10:49 AM, Martin Grigorov <
>> > >>>>> mgrigorov@apache.org
>> > >>>>>>>
>> > >>>>>>>> wrote:
>> > >>>>>>>>
>> > >>>>>>>>> Hi,
>> > >>>>>>>>>
>> > >>>>>>>>> If the list of imported sources contains "null" then you
>> > >> should
>> > >>>> ask
>> > >>>>>> at
>> > >>>>>>>>> https://github.com/SomMeri/less4j/issues.
>> > >>>>>>>>>
>> > >>>>>>>>> What I can do in Wicket-Bootstrap-Less is to add protection
>> > >>>> against
>> > >>>>>>> this
>> > >>>>>>>>> NullPointerException by ignoring all "null"s. But this may
>> > >> lead
>> > >>>> to
>> > >>>>>>> broken
>> > >>>>>>>>> UI!
>> > >>>>>>>>> Please file an issue at
>> > >>>>>>>>> https://github.com/l0rdn1kk0n/wicket-bootstrap/issues if you
>> > >>>> think
>> > >>>>>>> this
>> > >>>>>>>>> could help.
>> > >>>>>>>>>
>> > >>>>>>>>> Martin Grigorov
>> > >>>>>>>>> Wicket Training and Consulting
>> > >>>>>>>>> https://twitter.com/mtgrigorov
>> > >>>>>>>>>
>> > >>>>>>>>> On Tue, Sep 6, 2016 at 10:39 AM, Erik Strid <
>> > >>>> strid.erik@gmail.com>
>> > >>>>>>>> wrote:
>> > >>>>>>>>>
>> > >>>>>>>>>> Hi.
>> > >>>>>>>>>>
>> > >>>>>>>>>> We are using Wicket Bootstap Less in our project and have an
>> > >>>>> issue
>> > >>>>>>> with
>> > >>>>>>>>> the
>> > >>>>>>>>>> Less compilation.
>> > >>>>>>>>>> From time to time the compilation fails for some of the Less
>> > >>>>> files
>> > >>>>>> in
>> > >>>>>>>> our
>> > >>>>>>>>>> project, usually we see this in our Selenium Grid but it
>> > >> have
>> > >>>>>>> happened
>> > >>>>>>>>>> locally as well.
>> > >>>>>>>>>>
>> > >>>>>>>>>> When the compilation fails we get this stacktrace:
>> > >>>>>>>>>>
>> > >>>>>>>>>> java.lang.NullPointerException: null
>> > >>>>>>>>>> at
>> > >>>>>>>>>> de.agilecoders.wicket.less.LessCacheManager.
>> > >> findLastModified(
>> > >>>>>>>>>> LessCacheManager.java:159)
>> > >>>>>>>>>> ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
>> > >>>>>>>>>> at
>> > >>>>>>>>>> de.agilecoders.wicket.less.LessCacheManager.
>> > >> findLastModified(
>> > >>>>>>>>>> LessCacheManager.java:165)
>> > >>>>>>>>>> ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
>> > >>>>>>>>>> at
>> > >>>>>>>>>> de.agilecoders.wicket.less.LessCacheManager.
>> > >> getLastModifiedT
>> > >>>> ime(
>> > >>>>>>>>>> LessCacheManager.java:145)
>> > >>>>>>>>>> ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
>> > >>>>>>>>>> at
>> > >>>>>>>>>> de.agilecoders.wicket.less.LessResourceStream.
>> > >> lastModifiedTi
>> > >>>> me(
>> > >>>>>>>>>> LessResourceStream.java:65)
>> > >>>>>>>>>> ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
>> > >>>>>>>>>> at
>> > >>>>>>>>>> org.apache.wicket.request.resource.PackageResource.
>> > >>>>>>>> newResourceResponse(
>> > >>>>>>>>>> PackageResource.java:295)
>> > >>>>>>>>>> ~[wicket-core-6.22.0.jar:6.22.0]
>> > >>>>>>>>>> at
>> > >>>>>>>>>> org.apache.wicket.request.resource.AbstractResource.
>> > >>>>>>>>>> respond(AbstractResource.java:498)
>> > >>>>>>>>>> ~[wicket-core-6.22.0.jar:6.22.0]
>> > >>>>>>>>>> at
>> > >>>>>>>>>> org.apache.wicket.request.handler.resource.
>> > >>>>> ResourceRequestHandler.
>> > >>>>>>>>> respond(
>> > >>>>>>>>>> ResourceRequestHandler.java:75)
>> > >>>>>>>>>> ~[wicket-core-6.22.0.jar:6.22.0]
>> > >>>>>>>>>> at
>> > >>>>>>>>>> org.apache.wicket.request.handler.resource.
>> > >>>>>>>>> ResourceReferenceRequestHandle
>> > >>>>>>>>>> r.respond(ResourceReferenceRequestHandler.java:108)
>> > >>>>>>>>>> ~[wicket-core-6.22.0.jar:6.22.0]
>> > >>>>>>>>>> at
>> > >>>>>>>>>> org.apache.wicket.request.cycle.RequestCycle$
>> > >>>>>>> HandlerExecutor.respond(
>> > >>>>>>>>>> RequestCycle.java:890)
>> > >>>>>>>>>> ~[wicket-core-6.22.0.jar:6.22.0]
>> > >>>>>>>>>> at
>> > >>>>>>>>>> org.apache.wicket.request.RequestHandlerStack.execute(
>> > >>>>>>>>>> RequestHandlerStack.java:64)
>> > >>>>>>>>>> ~[wicket-request-6.22.0.jar:6.22.0]
>> > >>>>>>>>>> at
>> > >>>>>>>>>> org.apache.wicket.request.cycle.RequestCycle.execute(
>> > >>>>>>>>>> RequestCycle.java:261)
>> > >>>>>>>>>> [wicket-core-6.22.0.jar:6.22.0]
>> > >>>>>>>>>> at
>> > >>>>>>>>>> org.apache.wicket.request.cycle.RequestCycle.
>> > >>>>>>>>> processRequest(RequestCycle.
>> > >>>>>>>>>> java:218)
>> > >>>>>>>>>> [wicket-core-6.22.0.jar:6.22.0]
>> > >>>>>>>>>> at
>> > >>>>>>>>>> org.apache.wicket.request.cycle.RequestCycle.
>> > >>>>>>> processRequestAndDetach(
>> > >>>>>>>>>> RequestCycle.java:289)
>> > >>>>>>>>>> [wicket-core-6.22.0.jar:6.22.0]
>> > >>>>>>>>>> at
>> > >>>>>>>>>> org.apache.wicket.protocol.http.WicketFilter.
>> > >>>>> processRequestCycle(
>> > >>>>>>>>>> WicketFilter.java:259)
>> > >>>>>>>>>> [wicket-core-6.22.0.jar:6.22.0]
>> > >>>>>>>>>> at
>> > >>>>>>>>>> org.apache.wicket.protocol.http.WicketFilter.
>> > >>>>>>>>> processRequest(WicketFilter.
>> > >>>>>>>>>> java:201)
>> > >>>>>>>>>> [wicket-core-6.22.0.jar:6.22.0]
>> > >>>>>>>>>> at
>> > >>>>>>>>>> org.apache.wicket.protocol.http.WicketFilter.doFilter(
>> > >>>>>>>>>> WicketFilter.java:282)
>> > >>>>>>>>>> [wicket-core-6.22.0.jar:6.22.0]
>> > >>>>>>>>>> at
>> > >>>>>>>>>> org.eclipse.jetty.servlet.ServletHandler$CachedChain.
>> > >>>>>>>>>> doFilter(ServletHandler.java:1652)
>> > >>>>>>>>>> [jetty-servlet-9.2.15.v20160210.jar:9.2.15.v20160210]
>> > >>>>>>>>>> at
>> > >>>>>>>>>> org.springframework.security.web.FilterChainProxy$
>> > >>>>>>>>>> VirtualFilterChain.doFilter(FilterChainProxy.java:369)
>> > >>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
>> > >>>>>>>>>> at
>> > >>>>>>>>>> org.springframework.security.web.access.intercept.
>> > >>>>>>>>>> FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.
>> > >>>>>> java:109)
>> > >>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
>> > >>>>>>>>>> at
>> > >>>>>>>>>> org.springframework.security.web.access.intercept.
>> > >>>>>>>>>> FilterSecurityInterceptor.doFilter(
>> > >> FilterSecurityInterceptor.
>> > >>>>>>> java:83)
>> > >>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
>> > >>>>>>>>>> at
>> > >>>>>>>>>> org.springframework.security.web.FilterChainProxy$
>> > >>>>>>>>>> VirtualFilterChain.doFilter(FilterChainProxy.java:381)
>> > >>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
>> > >>>>>>>>>> at
>> > >>>>>>>>>> org.springframework.security.web.access.
>> > >>>>>> ExceptionTranslationFilter.
>> > >>>>>>>>>> doFilter(ExceptionTranslationFilter.java:97)
>> > >>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
>> > >>>>>>>>>> at
>> > >>>>>>>>>> org.springframework.security.web.FilterChainProxy$
>> > >>>>>>>>>> VirtualFilterChain.doFilter(FilterChainProxy.java:381)
>> > >>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
>> > >>>>>>>>>> at
>> > >>>>>>>>>> org.springframework.security.web.session.
>> > >>>>> SessionManagementFilter.
>> > >>>>>>>>> doFilter(
>> > >>>>>>>>>> SessionManagementFilter.java:100)
>> > >>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
>> > >>>>>>>>>> at
>> > >>>>>>>>>> org.springframework.security.web.FilterChainProxy$
>> > >>>>>>>>>> VirtualFilterChain.doFilter(FilterChainProxy.java:381)
>> > >>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
>> > >>>>>>>>>> at
>> > >>>>>>>>>> org.springframework.security.web.authentication.
>> > >>>>>>>>>> AnonymousAuthenticationFilter.doFilter(
>> > >>>>>>> AnonymousAuthenticationFilter.
>> > >>>>>>>>>> java:78)
>> > >>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
>> > >>>>>>>>>>
>> > >>>>>>>>>> I have been able do see what is happening when we get the
>> > >>>> problem
>> > >>>>>>>>> locally,
>> > >>>>>>>>>> it is the importedSources for the file currently compiled
>> > >> that
>> > >>>>>>> contains
>> > >>>>>>>>>> null.
>> > >>>>>>>>>> And from what I have seen (if I'm remembering correctly) it
>> > >>>> has
>> > >>>>>> been
>> > >>>>>>>> the
>> > >>>>>>>>>> first element in the list that is null and the other items
>> > >> in
>> > >>>> the
>> > >>>>>>> list
>> > >>>>>>>>>> contains the correct imports. We are using "classpath!"
>> > >>>> imports
>> > >>>>> for
>> > >>>>>>>>> usually
>> > >>>>>>>>>> one or two imports.
>> > >>>>>>>>>>
>> > >>>>>>>>>> I cannot see any point where it is possible to add null to
>> > >> the
>> > >>>>> list
>> > >>>>>>> of
>> > >>>>>>>>>> imported sources from reviewing the code that adds the
>> > >>>> imports in
>> > >>>>>> the
>> > >>>>>>>>> Less
>> > >>>>>>>>>> files.
>> > >>>>>>>>>>
>> > >>>>>>>>>> Furthermore we are adding Less a variable using
>> > >>>>>>>>>> LessCompilerConfigurationFactory and clear the
>> > >>>> LessCacheManager
>> > >>>>>> upon
>> > >>>>>>>>>> changes to this variable, however during the tests in our
>> > >>>>> Selenium
>> > >>>>>>> Grid
>> > >>>>>>>>>> this shouldn't happen.
>> > >>>>>>>>>>
>> > >>>>>>>>>> My problem is that I'm not able to reproduce the issue.
>> > >>>>>>>>>> Have someone encountered this problem before? Or does
>> > >> someone
>> > >>>>> have
>> > >>>>>>>> hints
>> > >>>>>>>>> on
>> > >>>>>>>>>> how to proceed with the troubleshooting?
>> > >>>>>>>>>>
>> > >>>>>>>>>> Regards
>> > >>>>>>>>>> Erik Strid
>> > >>>>>>>>>>
>> > >>>>>>>>>
>> > >>>>>>>>
>> > >>>>>>>
>> > >>>>>>
>> > >>>>>
>> > >>>>
>> > >>>
>> > >>>
>> > >>
>> >
>> > ---------------------------------------------------------------------
>> > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>> > For additional commands, e-mail: users-help@wicket.apache.org
>> >
>> >
>>
>
>

Re: Issue using Wicket Bootstap Less

Posted by Martin Grigorov <mg...@apache.org>.
I want to do some more changes before the next release.
Ping me again if you need it sooner.

Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov

On Thu, Oct 6, 2016 at 8:06 AM, Erik Strid <st...@gmail.com> wrote:

> Hi,
>
> We have tested the new 0.9.20-SNAPSHOT and it seems to be working as
> expected.
> Can we make new release request?
>
> Regards
> Erik Strid
>
> On Wed, Oct 5, 2016 at 8:18 AM, Tobias Soloschenko <
> tobiassoloschenko@googlemail.com> wrote:
>
> > Hi,
> >
> > just wanted to thank you for your contributions! :-)
> >
> > kind regards
> >
> > Tobias
> >
> > > Am 05.10.2016 um 07:17 schrieb Erik Strid <st...@gmail.com>:
> > >
> > > Hi Martin,
> > >
> > > Thank you for the fast release!
> > >
> > > Unfortunately did we find another issue in the LessCacheManager before
> we
> > > closed this issue on our side, that is related to this issue width the
> > > importedSources.
> > > I have created another pull request, see
> > > https://github.com/l0rdn1kk0n/wicket-bootstrap/pull/638.
> > >
> > > Regards
> > > Erik Strid
> > >
> > > On Wed, Sep 28, 2016 at 10:06 AM, Martin Grigorov <
> mgrigorov@apache.org>
> > > wrote:
> > >
> > >> Done!
> > >> 0.9.19 and 0.10.9 are on their way to Maven Central!
> > >> Enjoy!
> > >>
> > >> Martin Grigorov
> > >> Wicket Training and Consulting
> > >> https://twitter.com/mtgrigorov
> > >>
> > >> On Wed, Sep 28, 2016 at 9:46 AM, Martin Grigorov <
> mgrigorov@apache.org>
> > >> wrote:
> > >>
> > >>> Releases are cheap!
> > >>> I'll do it today!
> > >>>
> > >>> Martin Grigorov
> > >>> Wicket Training and Consulting
> > >>> https://twitter.com/mtgrigorov
> > >>>
> > >>> On Wed, Sep 28, 2016 at 9:40 AM, Erik Strid <st...@gmail.com>
> > >> wrote:
> > >>>
> > >>>> Hi Martin,
> > >>>>
> > >>>> Thank you for your fast response to the pull request!
> > >>>>
> > >>>> How often is the wicket-boostrap project released?
> > >>>>
> > >>>> We have tested the snapshot in our test environment and we think the
> > >>>> solution works as intended. We would like to have a correct release
> > >> before
> > >>>> releasing the whole solution to the real world. This will happen
> > within
> > >>>> 3-4
> > >>>> weeks. Is it possible to get a release in that time frame?
> > >>>>
> > >>>> Regards
> > >>>> Erik
> > >>>>
> > >>>> On Thu, Sep 22, 2016 at 9:26 PM, Martin Grigorov <
> > mgrigorov@apache.org>
> > >>>> wrote:
> > >>>>
> > >>>>> Merged!
> > >>>>> Thanks a lot!
> > >>>>>
> > >>>>> Martin Grigorov
> > >>>>> Wicket Training and Consulting
> > >>>>> https://twitter.com/mtgrigorov
> > >>>>>
> > >>>>> On Thu, Sep 22, 2016 at 1:11 PM, Erik Strid <st...@gmail.com>
> > >>>> wrote:
> > >>>>>
> > >>>>>> Hi Martin,
> > >>>>>>
> > >>>>>> I have created a pull request, see
> > >>>>>> https://github.com/l0rdn1kk0n/wicket-bootstrap/pull/636
> > >>>>>>
> > >>>>>> Regards
> > >>>>>> Erik
> > >>>>>>
> > >>>>>> On Tue, Sep 20, 2016 at 9:08 PM, Martin Grigorov <
> > >>>> mgrigorov@apache.org>
> > >>>>>> wrote:
> > >>>>>>
> > >>>>>>> Hi Erik,
> > >>>>>>>
> > >>>>>>> Many thanks for investigating this!
> > >>>>>>>
> > >>>>>>> Please create a Pull Request!
> > >>>>>>> It seems you already know how to fix it!
> > >>>>>>> Thank you!
> > >>>>>>>
> > >>>>>>> Martin Grigorov
> > >>>>>>> Wicket Training and Consulting
> > >>>>>>> https://twitter.com/mtgrigorov
> > >>>>>>>
> > >>>>>>> On Tue, Sep 20, 2016 at 2:16 PM, Erik Strid <
> strid.erik@gmail.com
> > >>>
> > >>>>>> wrote:
> > >>>>>>>
> > >>>>>>>> Hi Martin,
> > >>>>>>>>
> > >>>>>>>> I have finally found some time to investigate this issue
> > >> further.
> > >>>>>>>>
> > >>>>>>>> It seems that clearing the cache only will clear the variable
> > >>>>>>> contentCache
> > >>>>>>>> and not both the contentCache and urlSourceCache variables in
> > >>>>>>>> LessCacheManager. A cleared cache will trigger a recompile in
> > >>>>>>>> LessCacheManager.getCss(URLSource) on a cached URLSource, in
> > >> this
> > >>>>> case
> > >>>>>>>> will
> > >>>>>>>> the compiler add the imported files to the importedSources list,
> > >>>>>> returned
> > >>>>>>>> by AbstractHierarchicalSource.getImportedSources(), once more.
> > >>>> And
> > >>>>> the
> > >>>>>>>> importedSources list will grow with imported files after each
> > >>>> call to
> > >>>>>>>> clearCache.
> > >>>>>>>> The NPE that we get is a result of the shared URLSource and a
> > >> race
> > >>>>>>>> condition in AbstractHierarchicalSource.
> > >>>>> addImportedSource(LessSource)
> > >>>>>>>> (importedSources isn't thread safe).
> > >>>>>>>>
> > >>>>>>>> Furthermore I think there is an issue with the
> > >>>>>>>> LessCacheManager.getCss(URLSource). For the first file that is
> > >>>>>> compiled
> > >>>>>>>> will the list of imported sources for lessSource be empty. The
> > >>>>>>>> lastModifiedTime will then only contain the timestamp for the
> > >> file
> > >>>>> and
> > >>>>>>> not
> > >>>>>>>> the last modified time of the file itself or its imports, so the
> > >>>>>>>> lastModifiedTime will be incorrect when adding the compiled
> > >>>> source to
> > >>>>>> the
> > >>>>>>>> timeToContentMap the first time.
> > >>>>>>>>
> > >>>>>>>> You should be able to see these two issues in this commit
> > >>>>>>>> https://github.com/strido/wicket-bootstrap/commit/
> > >>>>>>>> 2be0d8d4294162bd103e63c74198d90457e6069e
> > >>>>>>>>
> > >>>>>>>> Should I report this to your issue tracker (
> > >>>>>>>> https://github.com/l0rdn1kk0n/wicket-bootstrap/issues)?
> > >>>>>>>>
> > >>>>>>>> Regards
> > >>>>>>>> Erik Strid
> > >>>>>>>>
> > >>>>>>>> On Tue, Sep 6, 2016 at 10:49 AM, Martin Grigorov <
> > >>>>> mgrigorov@apache.org
> > >>>>>>>
> > >>>>>>>> wrote:
> > >>>>>>>>
> > >>>>>>>>> Hi,
> > >>>>>>>>>
> > >>>>>>>>> If the list of imported sources contains "null" then you
> > >> should
> > >>>> ask
> > >>>>>> at
> > >>>>>>>>> https://github.com/SomMeri/less4j/issues.
> > >>>>>>>>>
> > >>>>>>>>> What I can do in Wicket-Bootstrap-Less is to add protection
> > >>>> against
> > >>>>>>> this
> > >>>>>>>>> NullPointerException by ignoring all "null"s. But this may
> > >> lead
> > >>>> to
> > >>>>>>> broken
> > >>>>>>>>> UI!
> > >>>>>>>>> Please file an issue at
> > >>>>>>>>> https://github.com/l0rdn1kk0n/wicket-bootstrap/issues if you
> > >>>> think
> > >>>>>>> this
> > >>>>>>>>> could help.
> > >>>>>>>>>
> > >>>>>>>>> Martin Grigorov
> > >>>>>>>>> Wicket Training and Consulting
> > >>>>>>>>> https://twitter.com/mtgrigorov
> > >>>>>>>>>
> > >>>>>>>>> On Tue, Sep 6, 2016 at 10:39 AM, Erik Strid <
> > >>>> strid.erik@gmail.com>
> > >>>>>>>> wrote:
> > >>>>>>>>>
> > >>>>>>>>>> Hi.
> > >>>>>>>>>>
> > >>>>>>>>>> We are using Wicket Bootstap Less in our project and have an
> > >>>>> issue
> > >>>>>>> with
> > >>>>>>>>> the
> > >>>>>>>>>> Less compilation.
> > >>>>>>>>>> From time to time the compilation fails for some of the Less
> > >>>>> files
> > >>>>>> in
> > >>>>>>>> our
> > >>>>>>>>>> project, usually we see this in our Selenium Grid but it
> > >> have
> > >>>>>>> happened
> > >>>>>>>>>> locally as well.
> > >>>>>>>>>>
> > >>>>>>>>>> When the compilation fails we get this stacktrace:
> > >>>>>>>>>>
> > >>>>>>>>>> java.lang.NullPointerException: null
> > >>>>>>>>>> at
> > >>>>>>>>>> de.agilecoders.wicket.less.LessCacheManager.
> > >> findLastModified(
> > >>>>>>>>>> LessCacheManager.java:159)
> > >>>>>>>>>> ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> > >>>>>>>>>> at
> > >>>>>>>>>> de.agilecoders.wicket.less.LessCacheManager.
> > >> findLastModified(
> > >>>>>>>>>> LessCacheManager.java:165)
> > >>>>>>>>>> ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> > >>>>>>>>>> at
> > >>>>>>>>>> de.agilecoders.wicket.less.LessCacheManager.
> > >> getLastModifiedT
> > >>>> ime(
> > >>>>>>>>>> LessCacheManager.java:145)
> > >>>>>>>>>> ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> > >>>>>>>>>> at
> > >>>>>>>>>> de.agilecoders.wicket.less.LessResourceStream.
> > >> lastModifiedTi
> > >>>> me(
> > >>>>>>>>>> LessResourceStream.java:65)
> > >>>>>>>>>> ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> > >>>>>>>>>> at
> > >>>>>>>>>> org.apache.wicket.request.resource.PackageResource.
> > >>>>>>>> newResourceResponse(
> > >>>>>>>>>> PackageResource.java:295)
> > >>>>>>>>>> ~[wicket-core-6.22.0.jar:6.22.0]
> > >>>>>>>>>> at
> > >>>>>>>>>> org.apache.wicket.request.resource.AbstractResource.
> > >>>>>>>>>> respond(AbstractResource.java:498)
> > >>>>>>>>>> ~[wicket-core-6.22.0.jar:6.22.0]
> > >>>>>>>>>> at
> > >>>>>>>>>> org.apache.wicket.request.handler.resource.
> > >>>>> ResourceRequestHandler.
> > >>>>>>>>> respond(
> > >>>>>>>>>> ResourceRequestHandler.java:75)
> > >>>>>>>>>> ~[wicket-core-6.22.0.jar:6.22.0]
> > >>>>>>>>>> at
> > >>>>>>>>>> org.apache.wicket.request.handler.resource.
> > >>>>>>>>> ResourceReferenceRequestHandle
> > >>>>>>>>>> r.respond(ResourceReferenceRequestHandler.java:108)
> > >>>>>>>>>> ~[wicket-core-6.22.0.jar:6.22.0]
> > >>>>>>>>>> at
> > >>>>>>>>>> org.apache.wicket.request.cycle.RequestCycle$
> > >>>>>>> HandlerExecutor.respond(
> > >>>>>>>>>> RequestCycle.java:890)
> > >>>>>>>>>> ~[wicket-core-6.22.0.jar:6.22.0]
> > >>>>>>>>>> at
> > >>>>>>>>>> org.apache.wicket.request.RequestHandlerStack.execute(
> > >>>>>>>>>> RequestHandlerStack.java:64)
> > >>>>>>>>>> ~[wicket-request-6.22.0.jar:6.22.0]
> > >>>>>>>>>> at
> > >>>>>>>>>> org.apache.wicket.request.cycle.RequestCycle.execute(
> > >>>>>>>>>> RequestCycle.java:261)
> > >>>>>>>>>> [wicket-core-6.22.0.jar:6.22.0]
> > >>>>>>>>>> at
> > >>>>>>>>>> org.apache.wicket.request.cycle.RequestCycle.
> > >>>>>>>>> processRequest(RequestCycle.
> > >>>>>>>>>> java:218)
> > >>>>>>>>>> [wicket-core-6.22.0.jar:6.22.0]
> > >>>>>>>>>> at
> > >>>>>>>>>> org.apache.wicket.request.cycle.RequestCycle.
> > >>>>>>> processRequestAndDetach(
> > >>>>>>>>>> RequestCycle.java:289)
> > >>>>>>>>>> [wicket-core-6.22.0.jar:6.22.0]
> > >>>>>>>>>> at
> > >>>>>>>>>> org.apache.wicket.protocol.http.WicketFilter.
> > >>>>> processRequestCycle(
> > >>>>>>>>>> WicketFilter.java:259)
> > >>>>>>>>>> [wicket-core-6.22.0.jar:6.22.0]
> > >>>>>>>>>> at
> > >>>>>>>>>> org.apache.wicket.protocol.http.WicketFilter.
> > >>>>>>>>> processRequest(WicketFilter.
> > >>>>>>>>>> java:201)
> > >>>>>>>>>> [wicket-core-6.22.0.jar:6.22.0]
> > >>>>>>>>>> at
> > >>>>>>>>>> org.apache.wicket.protocol.http.WicketFilter.doFilter(
> > >>>>>>>>>> WicketFilter.java:282)
> > >>>>>>>>>> [wicket-core-6.22.0.jar:6.22.0]
> > >>>>>>>>>> at
> > >>>>>>>>>> org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> > >>>>>>>>>> doFilter(ServletHandler.java:1652)
> > >>>>>>>>>> [jetty-servlet-9.2.15.v20160210.jar:9.2.15.v20160210]
> > >>>>>>>>>> at
> > >>>>>>>>>> org.springframework.security.web.FilterChainProxy$
> > >>>>>>>>>> VirtualFilterChain.doFilter(FilterChainProxy.java:369)
> > >>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > >>>>>>>>>> at
> > >>>>>>>>>> org.springframework.security.web.access.intercept.
> > >>>>>>>>>> FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.
> > >>>>>> java:109)
> > >>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > >>>>>>>>>> at
> > >>>>>>>>>> org.springframework.security.web.access.intercept.
> > >>>>>>>>>> FilterSecurityInterceptor.doFilter(
> > >> FilterSecurityInterceptor.
> > >>>>>>> java:83)
> > >>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > >>>>>>>>>> at
> > >>>>>>>>>> org.springframework.security.web.FilterChainProxy$
> > >>>>>>>>>> VirtualFilterChain.doFilter(FilterChainProxy.java:381)
> > >>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > >>>>>>>>>> at
> > >>>>>>>>>> org.springframework.security.web.access.
> > >>>>>> ExceptionTranslationFilter.
> > >>>>>>>>>> doFilter(ExceptionTranslationFilter.java:97)
> > >>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > >>>>>>>>>> at
> > >>>>>>>>>> org.springframework.security.web.FilterChainProxy$
> > >>>>>>>>>> VirtualFilterChain.doFilter(FilterChainProxy.java:381)
> > >>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > >>>>>>>>>> at
> > >>>>>>>>>> org.springframework.security.web.session.
> > >>>>> SessionManagementFilter.
> > >>>>>>>>> doFilter(
> > >>>>>>>>>> SessionManagementFilter.java:100)
> > >>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > >>>>>>>>>> at
> > >>>>>>>>>> org.springframework.security.web.FilterChainProxy$
> > >>>>>>>>>> VirtualFilterChain.doFilter(FilterChainProxy.java:381)
> > >>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > >>>>>>>>>> at
> > >>>>>>>>>> org.springframework.security.web.authentication.
> > >>>>>>>>>> AnonymousAuthenticationFilter.doFilter(
> > >>>>>>> AnonymousAuthenticationFilter.
> > >>>>>>>>>> java:78)
> > >>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > >>>>>>>>>>
> > >>>>>>>>>> I have been able do see what is happening when we get the
> > >>>> problem
> > >>>>>>>>> locally,
> > >>>>>>>>>> it is the importedSources for the file currently compiled
> > >> that
> > >>>>>>> contains
> > >>>>>>>>>> null.
> > >>>>>>>>>> And from what I have seen (if I'm remembering correctly) it
> > >>>> has
> > >>>>>> been
> > >>>>>>>> the
> > >>>>>>>>>> first element in the list that is null and the other items
> > >> in
> > >>>> the
> > >>>>>>> list
> > >>>>>>>>>> contains the correct imports. We are using "classpath!"
> > >>>> imports
> > >>>>> for
> > >>>>>>>>> usually
> > >>>>>>>>>> one or two imports.
> > >>>>>>>>>>
> > >>>>>>>>>> I cannot see any point where it is possible to add null to
> > >> the
> > >>>>> list
> > >>>>>>> of
> > >>>>>>>>>> imported sources from reviewing the code that adds the
> > >>>> imports in
> > >>>>>> the
> > >>>>>>>>> Less
> > >>>>>>>>>> files.
> > >>>>>>>>>>
> > >>>>>>>>>> Furthermore we are adding Less a variable using
> > >>>>>>>>>> LessCompilerConfigurationFactory and clear the
> > >>>> LessCacheManager
> > >>>>>> upon
> > >>>>>>>>>> changes to this variable, however during the tests in our
> > >>>>> Selenium
> > >>>>>>> Grid
> > >>>>>>>>>> this shouldn't happen.
> > >>>>>>>>>>
> > >>>>>>>>>> My problem is that I'm not able to reproduce the issue.
> > >>>>>>>>>> Have someone encountered this problem before? Or does
> > >> someone
> > >>>>> have
> > >>>>>>>> hints
> > >>>>>>>>> on
> > >>>>>>>>>> how to proceed with the troubleshooting?
> > >>>>>>>>>>
> > >>>>>>>>>> Regards
> > >>>>>>>>>> Erik Strid
> > >>>>>>>>>>
> > >>>>>>>>>
> > >>>>>>>>
> > >>>>>>>
> > >>>>>>
> > >>>>>
> > >>>>
> > >>>
> > >>>
> > >>
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> > For additional commands, e-mail: users-help@wicket.apache.org
> >
> >
>

Re: Issue using Wicket Bootstap Less

Posted by Erik Strid <st...@gmail.com>.
Hi,

We have tested the new 0.9.20-SNAPSHOT and it seems to be working as
expected.
Can we make new release request?

Regards
Erik Strid

On Wed, Oct 5, 2016 at 8:18 AM, Tobias Soloschenko <
tobiassoloschenko@googlemail.com> wrote:

> Hi,
>
> just wanted to thank you for your contributions! :-)
>
> kind regards
>
> Tobias
>
> > Am 05.10.2016 um 07:17 schrieb Erik Strid <st...@gmail.com>:
> >
> > Hi Martin,
> >
> > Thank you for the fast release!
> >
> > Unfortunately did we find another issue in the LessCacheManager before we
> > closed this issue on our side, that is related to this issue width the
> > importedSources.
> > I have created another pull request, see
> > https://github.com/l0rdn1kk0n/wicket-bootstrap/pull/638.
> >
> > Regards
> > Erik Strid
> >
> > On Wed, Sep 28, 2016 at 10:06 AM, Martin Grigorov <mg...@apache.org>
> > wrote:
> >
> >> Done!
> >> 0.9.19 and 0.10.9 are on their way to Maven Central!
> >> Enjoy!
> >>
> >> Martin Grigorov
> >> Wicket Training and Consulting
> >> https://twitter.com/mtgrigorov
> >>
> >> On Wed, Sep 28, 2016 at 9:46 AM, Martin Grigorov <mg...@apache.org>
> >> wrote:
> >>
> >>> Releases are cheap!
> >>> I'll do it today!
> >>>
> >>> Martin Grigorov
> >>> Wicket Training and Consulting
> >>> https://twitter.com/mtgrigorov
> >>>
> >>> On Wed, Sep 28, 2016 at 9:40 AM, Erik Strid <st...@gmail.com>
> >> wrote:
> >>>
> >>>> Hi Martin,
> >>>>
> >>>> Thank you for your fast response to the pull request!
> >>>>
> >>>> How often is the wicket-boostrap project released?
> >>>>
> >>>> We have tested the snapshot in our test environment and we think the
> >>>> solution works as intended. We would like to have a correct release
> >> before
> >>>> releasing the whole solution to the real world. This will happen
> within
> >>>> 3-4
> >>>> weeks. Is it possible to get a release in that time frame?
> >>>>
> >>>> Regards
> >>>> Erik
> >>>>
> >>>> On Thu, Sep 22, 2016 at 9:26 PM, Martin Grigorov <
> mgrigorov@apache.org>
> >>>> wrote:
> >>>>
> >>>>> Merged!
> >>>>> Thanks a lot!
> >>>>>
> >>>>> Martin Grigorov
> >>>>> Wicket Training and Consulting
> >>>>> https://twitter.com/mtgrigorov
> >>>>>
> >>>>> On Thu, Sep 22, 2016 at 1:11 PM, Erik Strid <st...@gmail.com>
> >>>> wrote:
> >>>>>
> >>>>>> Hi Martin,
> >>>>>>
> >>>>>> I have created a pull request, see
> >>>>>> https://github.com/l0rdn1kk0n/wicket-bootstrap/pull/636
> >>>>>>
> >>>>>> Regards
> >>>>>> Erik
> >>>>>>
> >>>>>> On Tue, Sep 20, 2016 at 9:08 PM, Martin Grigorov <
> >>>> mgrigorov@apache.org>
> >>>>>> wrote:
> >>>>>>
> >>>>>>> Hi Erik,
> >>>>>>>
> >>>>>>> Many thanks for investigating this!
> >>>>>>>
> >>>>>>> Please create a Pull Request!
> >>>>>>> It seems you already know how to fix it!
> >>>>>>> Thank you!
> >>>>>>>
> >>>>>>> Martin Grigorov
> >>>>>>> Wicket Training and Consulting
> >>>>>>> https://twitter.com/mtgrigorov
> >>>>>>>
> >>>>>>> On Tue, Sep 20, 2016 at 2:16 PM, Erik Strid <strid.erik@gmail.com
> >>>
> >>>>>> wrote:
> >>>>>>>
> >>>>>>>> Hi Martin,
> >>>>>>>>
> >>>>>>>> I have finally found some time to investigate this issue
> >> further.
> >>>>>>>>
> >>>>>>>> It seems that clearing the cache only will clear the variable
> >>>>>>> contentCache
> >>>>>>>> and not both the contentCache and urlSourceCache variables in
> >>>>>>>> LessCacheManager. A cleared cache will trigger a recompile in
> >>>>>>>> LessCacheManager.getCss(URLSource) on a cached URLSource, in
> >> this
> >>>>> case
> >>>>>>>> will
> >>>>>>>> the compiler add the imported files to the importedSources list,
> >>>>>> returned
> >>>>>>>> by AbstractHierarchicalSource.getImportedSources(), once more.
> >>>> And
> >>>>> the
> >>>>>>>> importedSources list will grow with imported files after each
> >>>> call to
> >>>>>>>> clearCache.
> >>>>>>>> The NPE that we get is a result of the shared URLSource and a
> >> race
> >>>>>>>> condition in AbstractHierarchicalSource.
> >>>>> addImportedSource(LessSource)
> >>>>>>>> (importedSources isn't thread safe).
> >>>>>>>>
> >>>>>>>> Furthermore I think there is an issue with the
> >>>>>>>> LessCacheManager.getCss(URLSource). For the first file that is
> >>>>>> compiled
> >>>>>>>> will the list of imported sources for lessSource be empty. The
> >>>>>>>> lastModifiedTime will then only contain the timestamp for the
> >> file
> >>>>> and
> >>>>>>> not
> >>>>>>>> the last modified time of the file itself or its imports, so the
> >>>>>>>> lastModifiedTime will be incorrect when adding the compiled
> >>>> source to
> >>>>>> the
> >>>>>>>> timeToContentMap the first time.
> >>>>>>>>
> >>>>>>>> You should be able to see these two issues in this commit
> >>>>>>>> https://github.com/strido/wicket-bootstrap/commit/
> >>>>>>>> 2be0d8d4294162bd103e63c74198d90457e6069e
> >>>>>>>>
> >>>>>>>> Should I report this to your issue tracker (
> >>>>>>>> https://github.com/l0rdn1kk0n/wicket-bootstrap/issues)?
> >>>>>>>>
> >>>>>>>> Regards
> >>>>>>>> Erik Strid
> >>>>>>>>
> >>>>>>>> On Tue, Sep 6, 2016 at 10:49 AM, Martin Grigorov <
> >>>>> mgrigorov@apache.org
> >>>>>>>
> >>>>>>>> wrote:
> >>>>>>>>
> >>>>>>>>> Hi,
> >>>>>>>>>
> >>>>>>>>> If the list of imported sources contains "null" then you
> >> should
> >>>> ask
> >>>>>> at
> >>>>>>>>> https://github.com/SomMeri/less4j/issues.
> >>>>>>>>>
> >>>>>>>>> What I can do in Wicket-Bootstrap-Less is to add protection
> >>>> against
> >>>>>>> this
> >>>>>>>>> NullPointerException by ignoring all "null"s. But this may
> >> lead
> >>>> to
> >>>>>>> broken
> >>>>>>>>> UI!
> >>>>>>>>> Please file an issue at
> >>>>>>>>> https://github.com/l0rdn1kk0n/wicket-bootstrap/issues if you
> >>>> think
> >>>>>>> this
> >>>>>>>>> could help.
> >>>>>>>>>
> >>>>>>>>> Martin Grigorov
> >>>>>>>>> Wicket Training and Consulting
> >>>>>>>>> https://twitter.com/mtgrigorov
> >>>>>>>>>
> >>>>>>>>> On Tue, Sep 6, 2016 at 10:39 AM, Erik Strid <
> >>>> strid.erik@gmail.com>
> >>>>>>>> wrote:
> >>>>>>>>>
> >>>>>>>>>> Hi.
> >>>>>>>>>>
> >>>>>>>>>> We are using Wicket Bootstap Less in our project and have an
> >>>>> issue
> >>>>>>> with
> >>>>>>>>> the
> >>>>>>>>>> Less compilation.
> >>>>>>>>>> From time to time the compilation fails for some of the Less
> >>>>> files
> >>>>>> in
> >>>>>>>> our
> >>>>>>>>>> project, usually we see this in our Selenium Grid but it
> >> have
> >>>>>>> happened
> >>>>>>>>>> locally as well.
> >>>>>>>>>>
> >>>>>>>>>> When the compilation fails we get this stacktrace:
> >>>>>>>>>>
> >>>>>>>>>> java.lang.NullPointerException: null
> >>>>>>>>>> at
> >>>>>>>>>> de.agilecoders.wicket.less.LessCacheManager.
> >> findLastModified(
> >>>>>>>>>> LessCacheManager.java:159)
> >>>>>>>>>> ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> >>>>>>>>>> at
> >>>>>>>>>> de.agilecoders.wicket.less.LessCacheManager.
> >> findLastModified(
> >>>>>>>>>> LessCacheManager.java:165)
> >>>>>>>>>> ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> >>>>>>>>>> at
> >>>>>>>>>> de.agilecoders.wicket.less.LessCacheManager.
> >> getLastModifiedT
> >>>> ime(
> >>>>>>>>>> LessCacheManager.java:145)
> >>>>>>>>>> ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> >>>>>>>>>> at
> >>>>>>>>>> de.agilecoders.wicket.less.LessResourceStream.
> >> lastModifiedTi
> >>>> me(
> >>>>>>>>>> LessResourceStream.java:65)
> >>>>>>>>>> ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> >>>>>>>>>> at
> >>>>>>>>>> org.apache.wicket.request.resource.PackageResource.
> >>>>>>>> newResourceResponse(
> >>>>>>>>>> PackageResource.java:295)
> >>>>>>>>>> ~[wicket-core-6.22.0.jar:6.22.0]
> >>>>>>>>>> at
> >>>>>>>>>> org.apache.wicket.request.resource.AbstractResource.
> >>>>>>>>>> respond(AbstractResource.java:498)
> >>>>>>>>>> ~[wicket-core-6.22.0.jar:6.22.0]
> >>>>>>>>>> at
> >>>>>>>>>> org.apache.wicket.request.handler.resource.
> >>>>> ResourceRequestHandler.
> >>>>>>>>> respond(
> >>>>>>>>>> ResourceRequestHandler.java:75)
> >>>>>>>>>> ~[wicket-core-6.22.0.jar:6.22.0]
> >>>>>>>>>> at
> >>>>>>>>>> org.apache.wicket.request.handler.resource.
> >>>>>>>>> ResourceReferenceRequestHandle
> >>>>>>>>>> r.respond(ResourceReferenceRequestHandler.java:108)
> >>>>>>>>>> ~[wicket-core-6.22.0.jar:6.22.0]
> >>>>>>>>>> at
> >>>>>>>>>> org.apache.wicket.request.cycle.RequestCycle$
> >>>>>>> HandlerExecutor.respond(
> >>>>>>>>>> RequestCycle.java:890)
> >>>>>>>>>> ~[wicket-core-6.22.0.jar:6.22.0]
> >>>>>>>>>> at
> >>>>>>>>>> org.apache.wicket.request.RequestHandlerStack.execute(
> >>>>>>>>>> RequestHandlerStack.java:64)
> >>>>>>>>>> ~[wicket-request-6.22.0.jar:6.22.0]
> >>>>>>>>>> at
> >>>>>>>>>> org.apache.wicket.request.cycle.RequestCycle.execute(
> >>>>>>>>>> RequestCycle.java:261)
> >>>>>>>>>> [wicket-core-6.22.0.jar:6.22.0]
> >>>>>>>>>> at
> >>>>>>>>>> org.apache.wicket.request.cycle.RequestCycle.
> >>>>>>>>> processRequest(RequestCycle.
> >>>>>>>>>> java:218)
> >>>>>>>>>> [wicket-core-6.22.0.jar:6.22.0]
> >>>>>>>>>> at
> >>>>>>>>>> org.apache.wicket.request.cycle.RequestCycle.
> >>>>>>> processRequestAndDetach(
> >>>>>>>>>> RequestCycle.java:289)
> >>>>>>>>>> [wicket-core-6.22.0.jar:6.22.0]
> >>>>>>>>>> at
> >>>>>>>>>> org.apache.wicket.protocol.http.WicketFilter.
> >>>>> processRequestCycle(
> >>>>>>>>>> WicketFilter.java:259)
> >>>>>>>>>> [wicket-core-6.22.0.jar:6.22.0]
> >>>>>>>>>> at
> >>>>>>>>>> org.apache.wicket.protocol.http.WicketFilter.
> >>>>>>>>> processRequest(WicketFilter.
> >>>>>>>>>> java:201)
> >>>>>>>>>> [wicket-core-6.22.0.jar:6.22.0]
> >>>>>>>>>> at
> >>>>>>>>>> org.apache.wicket.protocol.http.WicketFilter.doFilter(
> >>>>>>>>>> WicketFilter.java:282)
> >>>>>>>>>> [wicket-core-6.22.0.jar:6.22.0]
> >>>>>>>>>> at
> >>>>>>>>>> org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> >>>>>>>>>> doFilter(ServletHandler.java:1652)
> >>>>>>>>>> [jetty-servlet-9.2.15.v20160210.jar:9.2.15.v20160210]
> >>>>>>>>>> at
> >>>>>>>>>> org.springframework.security.web.FilterChainProxy$
> >>>>>>>>>> VirtualFilterChain.doFilter(FilterChainProxy.java:369)
> >>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> >>>>>>>>>> at
> >>>>>>>>>> org.springframework.security.web.access.intercept.
> >>>>>>>>>> FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.
> >>>>>> java:109)
> >>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> >>>>>>>>>> at
> >>>>>>>>>> org.springframework.security.web.access.intercept.
> >>>>>>>>>> FilterSecurityInterceptor.doFilter(
> >> FilterSecurityInterceptor.
> >>>>>>> java:83)
> >>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> >>>>>>>>>> at
> >>>>>>>>>> org.springframework.security.web.FilterChainProxy$
> >>>>>>>>>> VirtualFilterChain.doFilter(FilterChainProxy.java:381)
> >>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> >>>>>>>>>> at
> >>>>>>>>>> org.springframework.security.web.access.
> >>>>>> ExceptionTranslationFilter.
> >>>>>>>>>> doFilter(ExceptionTranslationFilter.java:97)
> >>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> >>>>>>>>>> at
> >>>>>>>>>> org.springframework.security.web.FilterChainProxy$
> >>>>>>>>>> VirtualFilterChain.doFilter(FilterChainProxy.java:381)
> >>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> >>>>>>>>>> at
> >>>>>>>>>> org.springframework.security.web.session.
> >>>>> SessionManagementFilter.
> >>>>>>>>> doFilter(
> >>>>>>>>>> SessionManagementFilter.java:100)
> >>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> >>>>>>>>>> at
> >>>>>>>>>> org.springframework.security.web.FilterChainProxy$
> >>>>>>>>>> VirtualFilterChain.doFilter(FilterChainProxy.java:381)
> >>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> >>>>>>>>>> at
> >>>>>>>>>> org.springframework.security.web.authentication.
> >>>>>>>>>> AnonymousAuthenticationFilter.doFilter(
> >>>>>>> AnonymousAuthenticationFilter.
> >>>>>>>>>> java:78)
> >>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> >>>>>>>>>>
> >>>>>>>>>> I have been able do see what is happening when we get the
> >>>> problem
> >>>>>>>>> locally,
> >>>>>>>>>> it is the importedSources for the file currently compiled
> >> that
> >>>>>>> contains
> >>>>>>>>>> null.
> >>>>>>>>>> And from what I have seen (if I'm remembering correctly) it
> >>>> has
> >>>>>> been
> >>>>>>>> the
> >>>>>>>>>> first element in the list that is null and the other items
> >> in
> >>>> the
> >>>>>>> list
> >>>>>>>>>> contains the correct imports. We are using "classpath!"
> >>>> imports
> >>>>> for
> >>>>>>>>> usually
> >>>>>>>>>> one or two imports.
> >>>>>>>>>>
> >>>>>>>>>> I cannot see any point where it is possible to add null to
> >> the
> >>>>> list
> >>>>>>> of
> >>>>>>>>>> imported sources from reviewing the code that adds the
> >>>> imports in
> >>>>>> the
> >>>>>>>>> Less
> >>>>>>>>>> files.
> >>>>>>>>>>
> >>>>>>>>>> Furthermore we are adding Less a variable using
> >>>>>>>>>> LessCompilerConfigurationFactory and clear the
> >>>> LessCacheManager
> >>>>>> upon
> >>>>>>>>>> changes to this variable, however during the tests in our
> >>>>> Selenium
> >>>>>>> Grid
> >>>>>>>>>> this shouldn't happen.
> >>>>>>>>>>
> >>>>>>>>>> My problem is that I'm not able to reproduce the issue.
> >>>>>>>>>> Have someone encountered this problem before? Or does
> >> someone
> >>>>> have
> >>>>>>>> hints
> >>>>>>>>> on
> >>>>>>>>>> how to proceed with the troubleshooting?
> >>>>>>>>>>
> >>>>>>>>>> Regards
> >>>>>>>>>> Erik Strid
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>>
> >>>>>
> >>>>
> >>>
> >>>
> >>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>

Re: Issue using Wicket Bootstap Less

Posted by Tobias Soloschenko <to...@googlemail.com>.
Hi,

just wanted to thank you for your contributions! :-)

kind regards

Tobias

> Am 05.10.2016 um 07:17 schrieb Erik Strid <st...@gmail.com>:
> 
> Hi Martin,
> 
> Thank you for the fast release!
> 
> Unfortunately did we find another issue in the LessCacheManager before we
> closed this issue on our side, that is related to this issue width the
> importedSources.
> I have created another pull request, see
> https://github.com/l0rdn1kk0n/wicket-bootstrap/pull/638.
> 
> Regards
> Erik Strid
> 
> On Wed, Sep 28, 2016 at 10:06 AM, Martin Grigorov <mg...@apache.org>
> wrote:
> 
>> Done!
>> 0.9.19 and 0.10.9 are on their way to Maven Central!
>> Enjoy!
>> 
>> Martin Grigorov
>> Wicket Training and Consulting
>> https://twitter.com/mtgrigorov
>> 
>> On Wed, Sep 28, 2016 at 9:46 AM, Martin Grigorov <mg...@apache.org>
>> wrote:
>> 
>>> Releases are cheap!
>>> I'll do it today!
>>> 
>>> Martin Grigorov
>>> Wicket Training and Consulting
>>> https://twitter.com/mtgrigorov
>>> 
>>> On Wed, Sep 28, 2016 at 9:40 AM, Erik Strid <st...@gmail.com>
>> wrote:
>>> 
>>>> Hi Martin,
>>>> 
>>>> Thank you for your fast response to the pull request!
>>>> 
>>>> How often is the wicket-boostrap project released?
>>>> 
>>>> We have tested the snapshot in our test environment and we think the
>>>> solution works as intended. We would like to have a correct release
>> before
>>>> releasing the whole solution to the real world. This will happen within
>>>> 3-4
>>>> weeks. Is it possible to get a release in that time frame?
>>>> 
>>>> Regards
>>>> Erik
>>>> 
>>>> On Thu, Sep 22, 2016 at 9:26 PM, Martin Grigorov <mg...@apache.org>
>>>> wrote:
>>>> 
>>>>> Merged!
>>>>> Thanks a lot!
>>>>> 
>>>>> Martin Grigorov
>>>>> Wicket Training and Consulting
>>>>> https://twitter.com/mtgrigorov
>>>>> 
>>>>> On Thu, Sep 22, 2016 at 1:11 PM, Erik Strid <st...@gmail.com>
>>>> wrote:
>>>>> 
>>>>>> Hi Martin,
>>>>>> 
>>>>>> I have created a pull request, see
>>>>>> https://github.com/l0rdn1kk0n/wicket-bootstrap/pull/636
>>>>>> 
>>>>>> Regards
>>>>>> Erik
>>>>>> 
>>>>>> On Tue, Sep 20, 2016 at 9:08 PM, Martin Grigorov <
>>>> mgrigorov@apache.org>
>>>>>> wrote:
>>>>>> 
>>>>>>> Hi Erik,
>>>>>>> 
>>>>>>> Many thanks for investigating this!
>>>>>>> 
>>>>>>> Please create a Pull Request!
>>>>>>> It seems you already know how to fix it!
>>>>>>> Thank you!
>>>>>>> 
>>>>>>> Martin Grigorov
>>>>>>> Wicket Training and Consulting
>>>>>>> https://twitter.com/mtgrigorov
>>>>>>> 
>>>>>>> On Tue, Sep 20, 2016 at 2:16 PM, Erik Strid <strid.erik@gmail.com
>>> 
>>>>>> wrote:
>>>>>>> 
>>>>>>>> Hi Martin,
>>>>>>>> 
>>>>>>>> I have finally found some time to investigate this issue
>> further.
>>>>>>>> 
>>>>>>>> It seems that clearing the cache only will clear the variable
>>>>>>> contentCache
>>>>>>>> and not both the contentCache and urlSourceCache variables in
>>>>>>>> LessCacheManager. A cleared cache will trigger a recompile in
>>>>>>>> LessCacheManager.getCss(URLSource) on a cached URLSource, in
>> this
>>>>> case
>>>>>>>> will
>>>>>>>> the compiler add the imported files to the importedSources list,
>>>>>> returned
>>>>>>>> by AbstractHierarchicalSource.getImportedSources(), once more.
>>>> And
>>>>> the
>>>>>>>> importedSources list will grow with imported files after each
>>>> call to
>>>>>>>> clearCache.
>>>>>>>> The NPE that we get is a result of the shared URLSource and a
>> race
>>>>>>>> condition in AbstractHierarchicalSource.
>>>>> addImportedSource(LessSource)
>>>>>>>> (importedSources isn't thread safe).
>>>>>>>> 
>>>>>>>> Furthermore I think there is an issue with the
>>>>>>>> LessCacheManager.getCss(URLSource). For the first file that is
>>>>>> compiled
>>>>>>>> will the list of imported sources for lessSource be empty. The
>>>>>>>> lastModifiedTime will then only contain the timestamp for the
>> file
>>>>> and
>>>>>>> not
>>>>>>>> the last modified time of the file itself or its imports, so the
>>>>>>>> lastModifiedTime will be incorrect when adding the compiled
>>>> source to
>>>>>> the
>>>>>>>> timeToContentMap the first time.
>>>>>>>> 
>>>>>>>> You should be able to see these two issues in this commit
>>>>>>>> https://github.com/strido/wicket-bootstrap/commit/
>>>>>>>> 2be0d8d4294162bd103e63c74198d90457e6069e
>>>>>>>> 
>>>>>>>> Should I report this to your issue tracker (
>>>>>>>> https://github.com/l0rdn1kk0n/wicket-bootstrap/issues)?
>>>>>>>> 
>>>>>>>> Regards
>>>>>>>> Erik Strid
>>>>>>>> 
>>>>>>>> On Tue, Sep 6, 2016 at 10:49 AM, Martin Grigorov <
>>>>> mgrigorov@apache.org
>>>>>>> 
>>>>>>>> wrote:
>>>>>>>> 
>>>>>>>>> Hi,
>>>>>>>>> 
>>>>>>>>> If the list of imported sources contains "null" then you
>> should
>>>> ask
>>>>>> at
>>>>>>>>> https://github.com/SomMeri/less4j/issues.
>>>>>>>>> 
>>>>>>>>> What I can do in Wicket-Bootstrap-Less is to add protection
>>>> against
>>>>>>> this
>>>>>>>>> NullPointerException by ignoring all "null"s. But this may
>> lead
>>>> to
>>>>>>> broken
>>>>>>>>> UI!
>>>>>>>>> Please file an issue at
>>>>>>>>> https://github.com/l0rdn1kk0n/wicket-bootstrap/issues if you
>>>> think
>>>>>>> this
>>>>>>>>> could help.
>>>>>>>>> 
>>>>>>>>> Martin Grigorov
>>>>>>>>> Wicket Training and Consulting
>>>>>>>>> https://twitter.com/mtgrigorov
>>>>>>>>> 
>>>>>>>>> On Tue, Sep 6, 2016 at 10:39 AM, Erik Strid <
>>>> strid.erik@gmail.com>
>>>>>>>> wrote:
>>>>>>>>> 
>>>>>>>>>> Hi.
>>>>>>>>>> 
>>>>>>>>>> We are using Wicket Bootstap Less in our project and have an
>>>>> issue
>>>>>>> with
>>>>>>>>> the
>>>>>>>>>> Less compilation.
>>>>>>>>>> From time to time the compilation fails for some of the Less
>>>>> files
>>>>>> in
>>>>>>>> our
>>>>>>>>>> project, usually we see this in our Selenium Grid but it
>> have
>>>>>>> happened
>>>>>>>>>> locally as well.
>>>>>>>>>> 
>>>>>>>>>> When the compilation fails we get this stacktrace:
>>>>>>>>>> 
>>>>>>>>>> java.lang.NullPointerException: null
>>>>>>>>>> at
>>>>>>>>>> de.agilecoders.wicket.less.LessCacheManager.
>> findLastModified(
>>>>>>>>>> LessCacheManager.java:159)
>>>>>>>>>> ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
>>>>>>>>>> at
>>>>>>>>>> de.agilecoders.wicket.less.LessCacheManager.
>> findLastModified(
>>>>>>>>>> LessCacheManager.java:165)
>>>>>>>>>> ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
>>>>>>>>>> at
>>>>>>>>>> de.agilecoders.wicket.less.LessCacheManager.
>> getLastModifiedT
>>>> ime(
>>>>>>>>>> LessCacheManager.java:145)
>>>>>>>>>> ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
>>>>>>>>>> at
>>>>>>>>>> de.agilecoders.wicket.less.LessResourceStream.
>> lastModifiedTi
>>>> me(
>>>>>>>>>> LessResourceStream.java:65)
>>>>>>>>>> ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
>>>>>>>>>> at
>>>>>>>>>> org.apache.wicket.request.resource.PackageResource.
>>>>>>>> newResourceResponse(
>>>>>>>>>> PackageResource.java:295)
>>>>>>>>>> ~[wicket-core-6.22.0.jar:6.22.0]
>>>>>>>>>> at
>>>>>>>>>> org.apache.wicket.request.resource.AbstractResource.
>>>>>>>>>> respond(AbstractResource.java:498)
>>>>>>>>>> ~[wicket-core-6.22.0.jar:6.22.0]
>>>>>>>>>> at
>>>>>>>>>> org.apache.wicket.request.handler.resource.
>>>>> ResourceRequestHandler.
>>>>>>>>> respond(
>>>>>>>>>> ResourceRequestHandler.java:75)
>>>>>>>>>> ~[wicket-core-6.22.0.jar:6.22.0]
>>>>>>>>>> at
>>>>>>>>>> org.apache.wicket.request.handler.resource.
>>>>>>>>> ResourceReferenceRequestHandle
>>>>>>>>>> r.respond(ResourceReferenceRequestHandler.java:108)
>>>>>>>>>> ~[wicket-core-6.22.0.jar:6.22.0]
>>>>>>>>>> at
>>>>>>>>>> org.apache.wicket.request.cycle.RequestCycle$
>>>>>>> HandlerExecutor.respond(
>>>>>>>>>> RequestCycle.java:890)
>>>>>>>>>> ~[wicket-core-6.22.0.jar:6.22.0]
>>>>>>>>>> at
>>>>>>>>>> org.apache.wicket.request.RequestHandlerStack.execute(
>>>>>>>>>> RequestHandlerStack.java:64)
>>>>>>>>>> ~[wicket-request-6.22.0.jar:6.22.0]
>>>>>>>>>> at
>>>>>>>>>> org.apache.wicket.request.cycle.RequestCycle.execute(
>>>>>>>>>> RequestCycle.java:261)
>>>>>>>>>> [wicket-core-6.22.0.jar:6.22.0]
>>>>>>>>>> at
>>>>>>>>>> org.apache.wicket.request.cycle.RequestCycle.
>>>>>>>>> processRequest(RequestCycle.
>>>>>>>>>> java:218)
>>>>>>>>>> [wicket-core-6.22.0.jar:6.22.0]
>>>>>>>>>> at
>>>>>>>>>> org.apache.wicket.request.cycle.RequestCycle.
>>>>>>> processRequestAndDetach(
>>>>>>>>>> RequestCycle.java:289)
>>>>>>>>>> [wicket-core-6.22.0.jar:6.22.0]
>>>>>>>>>> at
>>>>>>>>>> org.apache.wicket.protocol.http.WicketFilter.
>>>>> processRequestCycle(
>>>>>>>>>> WicketFilter.java:259)
>>>>>>>>>> [wicket-core-6.22.0.jar:6.22.0]
>>>>>>>>>> at
>>>>>>>>>> org.apache.wicket.protocol.http.WicketFilter.
>>>>>>>>> processRequest(WicketFilter.
>>>>>>>>>> java:201)
>>>>>>>>>> [wicket-core-6.22.0.jar:6.22.0]
>>>>>>>>>> at
>>>>>>>>>> org.apache.wicket.protocol.http.WicketFilter.doFilter(
>>>>>>>>>> WicketFilter.java:282)
>>>>>>>>>> [wicket-core-6.22.0.jar:6.22.0]
>>>>>>>>>> at
>>>>>>>>>> org.eclipse.jetty.servlet.ServletHandler$CachedChain.
>>>>>>>>>> doFilter(ServletHandler.java:1652)
>>>>>>>>>> [jetty-servlet-9.2.15.v20160210.jar:9.2.15.v20160210]
>>>>>>>>>> at
>>>>>>>>>> org.springframework.security.web.FilterChainProxy$
>>>>>>>>>> VirtualFilterChain.doFilter(FilterChainProxy.java:369)
>>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
>>>>>>>>>> at
>>>>>>>>>> org.springframework.security.web.access.intercept.
>>>>>>>>>> FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.
>>>>>> java:109)
>>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
>>>>>>>>>> at
>>>>>>>>>> org.springframework.security.web.access.intercept.
>>>>>>>>>> FilterSecurityInterceptor.doFilter(
>> FilterSecurityInterceptor.
>>>>>>> java:83)
>>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
>>>>>>>>>> at
>>>>>>>>>> org.springframework.security.web.FilterChainProxy$
>>>>>>>>>> VirtualFilterChain.doFilter(FilterChainProxy.java:381)
>>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
>>>>>>>>>> at
>>>>>>>>>> org.springframework.security.web.access.
>>>>>> ExceptionTranslationFilter.
>>>>>>>>>> doFilter(ExceptionTranslationFilter.java:97)
>>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
>>>>>>>>>> at
>>>>>>>>>> org.springframework.security.web.FilterChainProxy$
>>>>>>>>>> VirtualFilterChain.doFilter(FilterChainProxy.java:381)
>>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
>>>>>>>>>> at
>>>>>>>>>> org.springframework.security.web.session.
>>>>> SessionManagementFilter.
>>>>>>>>> doFilter(
>>>>>>>>>> SessionManagementFilter.java:100)
>>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
>>>>>>>>>> at
>>>>>>>>>> org.springframework.security.web.FilterChainProxy$
>>>>>>>>>> VirtualFilterChain.doFilter(FilterChainProxy.java:381)
>>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
>>>>>>>>>> at
>>>>>>>>>> org.springframework.security.web.authentication.
>>>>>>>>>> AnonymousAuthenticationFilter.doFilter(
>>>>>>> AnonymousAuthenticationFilter.
>>>>>>>>>> java:78)
>>>>>>>>>> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
>>>>>>>>>> 
>>>>>>>>>> I have been able do see what is happening when we get the
>>>> problem
>>>>>>>>> locally,
>>>>>>>>>> it is the importedSources for the file currently compiled
>> that
>>>>>>> contains
>>>>>>>>>> null.
>>>>>>>>>> And from what I have seen (if I'm remembering correctly) it
>>>> has
>>>>>> been
>>>>>>>> the
>>>>>>>>>> first element in the list that is null and the other items
>> in
>>>> the
>>>>>>> list
>>>>>>>>>> contains the correct imports. We are using "classpath!"
>>>> imports
>>>>> for
>>>>>>>>> usually
>>>>>>>>>> one or two imports.
>>>>>>>>>> 
>>>>>>>>>> I cannot see any point where it is possible to add null to
>> the
>>>>> list
>>>>>>> of
>>>>>>>>>> imported sources from reviewing the code that adds the
>>>> imports in
>>>>>> the
>>>>>>>>> Less
>>>>>>>>>> files.
>>>>>>>>>> 
>>>>>>>>>> Furthermore we are adding Less a variable using
>>>>>>>>>> LessCompilerConfigurationFactory and clear the
>>>> LessCacheManager
>>>>>> upon
>>>>>>>>>> changes to this variable, however during the tests in our
>>>>> Selenium
>>>>>>> Grid
>>>>>>>>>> this shouldn't happen.
>>>>>>>>>> 
>>>>>>>>>> My problem is that I'm not able to reproduce the issue.
>>>>>>>>>> Have someone encountered this problem before? Or does
>> someone
>>>>> have
>>>>>>>> hints
>>>>>>>>> on
>>>>>>>>>> how to proceed with the troubleshooting?
>>>>>>>>>> 
>>>>>>>>>> Regards
>>>>>>>>>> Erik Strid
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>>> 
>>> 
>> 

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: Issue using Wicket Bootstap Less

Posted by Erik Strid <st...@gmail.com>.
Hi Martin,

Thank you for the fast release!

Unfortunately did we find another issue in the LessCacheManager before we
closed this issue on our side, that is related to this issue width the
importedSources.
I have created another pull request, see
https://github.com/l0rdn1kk0n/wicket-bootstrap/pull/638.

Regards
Erik Strid

On Wed, Sep 28, 2016 at 10:06 AM, Martin Grigorov <mg...@apache.org>
wrote:

> Done!
> 0.9.19 and 0.10.9 are on their way to Maven Central!
> Enjoy!
>
> Martin Grigorov
> Wicket Training and Consulting
> https://twitter.com/mtgrigorov
>
> On Wed, Sep 28, 2016 at 9:46 AM, Martin Grigorov <mg...@apache.org>
> wrote:
>
> > Releases are cheap!
> > I'll do it today!
> >
> > Martin Grigorov
> > Wicket Training and Consulting
> > https://twitter.com/mtgrigorov
> >
> > On Wed, Sep 28, 2016 at 9:40 AM, Erik Strid <st...@gmail.com>
> wrote:
> >
> >> Hi Martin,
> >>
> >> Thank you for your fast response to the pull request!
> >>
> >> How often is the wicket-boostrap project released?
> >>
> >> We have tested the snapshot in our test environment and we think the
> >> solution works as intended. We would like to have a correct release
> before
> >> releasing the whole solution to the real world. This will happen within
> >> 3-4
> >> weeks. Is it possible to get a release in that time frame?
> >>
> >> Regards
> >> Erik
> >>
> >> On Thu, Sep 22, 2016 at 9:26 PM, Martin Grigorov <mg...@apache.org>
> >> wrote:
> >>
> >> > Merged!
> >> > Thanks a lot!
> >> >
> >> > Martin Grigorov
> >> > Wicket Training and Consulting
> >> > https://twitter.com/mtgrigorov
> >> >
> >> > On Thu, Sep 22, 2016 at 1:11 PM, Erik Strid <st...@gmail.com>
> >> wrote:
> >> >
> >> > > Hi Martin,
> >> > >
> >> > > I have created a pull request, see
> >> > > https://github.com/l0rdn1kk0n/wicket-bootstrap/pull/636
> >> > >
> >> > > Regards
> >> > > Erik
> >> > >
> >> > > On Tue, Sep 20, 2016 at 9:08 PM, Martin Grigorov <
> >> mgrigorov@apache.org>
> >> > > wrote:
> >> > >
> >> > > > Hi Erik,
> >> > > >
> >> > > > Many thanks for investigating this!
> >> > > >
> >> > > > Please create a Pull Request!
> >> > > > It seems you already know how to fix it!
> >> > > > Thank you!
> >> > > >
> >> > > > Martin Grigorov
> >> > > > Wicket Training and Consulting
> >> > > > https://twitter.com/mtgrigorov
> >> > > >
> >> > > > On Tue, Sep 20, 2016 at 2:16 PM, Erik Strid <strid.erik@gmail.com
> >
> >> > > wrote:
> >> > > >
> >> > > > > Hi Martin,
> >> > > > >
> >> > > > > I have finally found some time to investigate this issue
> further.
> >> > > > >
> >> > > > > It seems that clearing the cache only will clear the variable
> >> > > > contentCache
> >> > > > > and not both the contentCache and urlSourceCache variables in
> >> > > > > LessCacheManager. A cleared cache will trigger a recompile in
> >> > > > > LessCacheManager.getCss(URLSource) on a cached URLSource, in
> this
> >> > case
> >> > > > > will
> >> > > > > the compiler add the imported files to the importedSources list,
> >> > > returned
> >> > > > > by AbstractHierarchicalSource.getImportedSources(), once more.
> >> And
> >> > the
> >> > > > > importedSources list will grow with imported files after each
> >> call to
> >> > > > > clearCache.
> >> > > > > The NPE that we get is a result of the shared URLSource and a
> race
> >> > > > > condition in AbstractHierarchicalSource.
> >> > addImportedSource(LessSource)
> >> > > > > (importedSources isn't thread safe).
> >> > > > >
> >> > > > > Furthermore I think there is an issue with the
> >> > > > > LessCacheManager.getCss(URLSource). For the first file that is
> >> > > compiled
> >> > > > > will the list of imported sources for lessSource be empty. The
> >> > > > > lastModifiedTime will then only contain the timestamp for the
> file
> >> > and
> >> > > > not
> >> > > > > the last modified time of the file itself or its imports, so the
> >> > > > > lastModifiedTime will be incorrect when adding the compiled
> >> source to
> >> > > the
> >> > > > > timeToContentMap the first time.
> >> > > > >
> >> > > > > You should be able to see these two issues in this commit
> >> > > > > https://github.com/strido/wicket-bootstrap/commit/
> >> > > > > 2be0d8d4294162bd103e63c74198d90457e6069e
> >> > > > >
> >> > > > > Should I report this to your issue tracker (
> >> > > > > https://github.com/l0rdn1kk0n/wicket-bootstrap/issues)?
> >> > > > >
> >> > > > > Regards
> >> > > > > Erik Strid
> >> > > > >
> >> > > > > On Tue, Sep 6, 2016 at 10:49 AM, Martin Grigorov <
> >> > mgrigorov@apache.org
> >> > > >
> >> > > > > wrote:
> >> > > > >
> >> > > > > > Hi,
> >> > > > > >
> >> > > > > > If the list of imported sources contains "null" then you
> should
> >> ask
> >> > > at
> >> > > > > > https://github.com/SomMeri/less4j/issues.
> >> > > > > >
> >> > > > > > What I can do in Wicket-Bootstrap-Less is to add protection
> >> against
> >> > > > this
> >> > > > > > NullPointerException by ignoring all "null"s. But this may
> lead
> >> to
> >> > > > broken
> >> > > > > > UI!
> >> > > > > > Please file an issue at
> >> > > > > > https://github.com/l0rdn1kk0n/wicket-bootstrap/issues if you
> >> think
> >> > > > this
> >> > > > > > could help.
> >> > > > > >
> >> > > > > > Martin Grigorov
> >> > > > > > Wicket Training and Consulting
> >> > > > > > https://twitter.com/mtgrigorov
> >> > > > > >
> >> > > > > > On Tue, Sep 6, 2016 at 10:39 AM, Erik Strid <
> >> strid.erik@gmail.com>
> >> > > > > wrote:
> >> > > > > >
> >> > > > > > > Hi.
> >> > > > > > >
> >> > > > > > > We are using Wicket Bootstap Less in our project and have an
> >> > issue
> >> > > > with
> >> > > > > > the
> >> > > > > > > Less compilation.
> >> > > > > > > From time to time the compilation fails for some of the Less
> >> > files
> >> > > in
> >> > > > > our
> >> > > > > > > project, usually we see this in our Selenium Grid but it
> have
> >> > > > happened
> >> > > > > > > locally as well.
> >> > > > > > >
> >> > > > > > > When the compilation fails we get this stacktrace:
> >> > > > > > >
> >> > > > > > > java.lang.NullPointerException: null
> >> > > > > > > at
> >> > > > > > > de.agilecoders.wicket.less.LessCacheManager.
> findLastModified(
> >> > > > > > > LessCacheManager.java:159)
> >> > > > > > > ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> >> > > > > > > at
> >> > > > > > > de.agilecoders.wicket.less.LessCacheManager.
> findLastModified(
> >> > > > > > > LessCacheManager.java:165)
> >> > > > > > > ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> >> > > > > > > at
> >> > > > > > > de.agilecoders.wicket.less.LessCacheManager.
> getLastModifiedT
> >> ime(
> >> > > > > > > LessCacheManager.java:145)
> >> > > > > > > ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> >> > > > > > > at
> >> > > > > > > de.agilecoders.wicket.less.LessResourceStream.
> lastModifiedTi
> >> me(
> >> > > > > > > LessResourceStream.java:65)
> >> > > > > > > ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> >> > > > > > > at
> >> > > > > > > org.apache.wicket.request.resource.PackageResource.
> >> > > > > newResourceResponse(
> >> > > > > > > PackageResource.java:295)
> >> > > > > > > ~[wicket-core-6.22.0.jar:6.22.0]
> >> > > > > > > at
> >> > > > > > > org.apache.wicket.request.resource.AbstractResource.
> >> > > > > > > respond(AbstractResource.java:498)
> >> > > > > > > ~[wicket-core-6.22.0.jar:6.22.0]
> >> > > > > > > at
> >> > > > > > > org.apache.wicket.request.handler.resource.
> >> > ResourceRequestHandler.
> >> > > > > > respond(
> >> > > > > > > ResourceRequestHandler.java:75)
> >> > > > > > > ~[wicket-core-6.22.0.jar:6.22.0]
> >> > > > > > > at
> >> > > > > > > org.apache.wicket.request.handler.resource.
> >> > > > > > ResourceReferenceRequestHandle
> >> > > > > > > r.respond(ResourceReferenceRequestHandler.java:108)
> >> > > > > > > ~[wicket-core-6.22.0.jar:6.22.0]
> >> > > > > > > at
> >> > > > > > > org.apache.wicket.request.cycle.RequestCycle$
> >> > > > HandlerExecutor.respond(
> >> > > > > > > RequestCycle.java:890)
> >> > > > > > > ~[wicket-core-6.22.0.jar:6.22.0]
> >> > > > > > > at
> >> > > > > > > org.apache.wicket.request.RequestHandlerStack.execute(
> >> > > > > > > RequestHandlerStack.java:64)
> >> > > > > > > ~[wicket-request-6.22.0.jar:6.22.0]
> >> > > > > > > at
> >> > > > > > > org.apache.wicket.request.cycle.RequestCycle.execute(
> >> > > > > > > RequestCycle.java:261)
> >> > > > > > > [wicket-core-6.22.0.jar:6.22.0]
> >> > > > > > > at
> >> > > > > > > org.apache.wicket.request.cycle.RequestCycle.
> >> > > > > > processRequest(RequestCycle.
> >> > > > > > > java:218)
> >> > > > > > > [wicket-core-6.22.0.jar:6.22.0]
> >> > > > > > > at
> >> > > > > > > org.apache.wicket.request.cycle.RequestCycle.
> >> > > > processRequestAndDetach(
> >> > > > > > > RequestCycle.java:289)
> >> > > > > > > [wicket-core-6.22.0.jar:6.22.0]
> >> > > > > > > at
> >> > > > > > > org.apache.wicket.protocol.http.WicketFilter.
> >> > processRequestCycle(
> >> > > > > > > WicketFilter.java:259)
> >> > > > > > > [wicket-core-6.22.0.jar:6.22.0]
> >> > > > > > > at
> >> > > > > > > org.apache.wicket.protocol.http.WicketFilter.
> >> > > > > > processRequest(WicketFilter.
> >> > > > > > > java:201)
> >> > > > > > > [wicket-core-6.22.0.jar:6.22.0]
> >> > > > > > > at
> >> > > > > > > org.apache.wicket.protocol.http.WicketFilter.doFilter(
> >> > > > > > > WicketFilter.java:282)
> >> > > > > > > [wicket-core-6.22.0.jar:6.22.0]
> >> > > > > > > at
> >> > > > > > > org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> >> > > > > > > doFilter(ServletHandler.java:1652)
> >> > > > > > > [jetty-servlet-9.2.15.v20160210.jar:9.2.15.v20160210]
> >> > > > > > > at
> >> > > > > > > org.springframework.security.web.FilterChainProxy$
> >> > > > > > > VirtualFilterChain.doFilter(FilterChainProxy.java:369)
> >> > > > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> >> > > > > > > at
> >> > > > > > > org.springframework.security.web.access.intercept.
> >> > > > > > > FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.
> >> > > java:109)
> >> > > > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> >> > > > > > > at
> >> > > > > > > org.springframework.security.web.access.intercept.
> >> > > > > > > FilterSecurityInterceptor.doFilter(
> FilterSecurityInterceptor.
> >> > > > java:83)
> >> > > > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> >> > > > > > > at
> >> > > > > > > org.springframework.security.web.FilterChainProxy$
> >> > > > > > > VirtualFilterChain.doFilter(FilterChainProxy.java:381)
> >> > > > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> >> > > > > > > at
> >> > > > > > > org.springframework.security.web.access.
> >> > > ExceptionTranslationFilter.
> >> > > > > > > doFilter(ExceptionTranslationFilter.java:97)
> >> > > > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> >> > > > > > > at
> >> > > > > > > org.springframework.security.web.FilterChainProxy$
> >> > > > > > > VirtualFilterChain.doFilter(FilterChainProxy.java:381)
> >> > > > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> >> > > > > > > at
> >> > > > > > > org.springframework.security.web.session.
> >> > SessionManagementFilter.
> >> > > > > > doFilter(
> >> > > > > > > SessionManagementFilter.java:100)
> >> > > > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> >> > > > > > > at
> >> > > > > > > org.springframework.security.web.FilterChainProxy$
> >> > > > > > > VirtualFilterChain.doFilter(FilterChainProxy.java:381)
> >> > > > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> >> > > > > > > at
> >> > > > > > > org.springframework.security.web.authentication.
> >> > > > > > > AnonymousAuthenticationFilter.doFilter(
> >> > > > AnonymousAuthenticationFilter.
> >> > > > > > > java:78)
> >> > > > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> >> > > > > > >
> >> > > > > > > I have been able do see what is happening when we get the
> >> problem
> >> > > > > > locally,
> >> > > > > > > it is the importedSources for the file currently compiled
> that
> >> > > > contains
> >> > > > > > > null.
> >> > > > > > > And from what I have seen (if I'm remembering correctly) it
> >> has
> >> > > been
> >> > > > > the
> >> > > > > > > first element in the list that is null and the other items
> in
> >> the
> >> > > > list
> >> > > > > > > contains the correct imports. We are using "classpath!"
> >> imports
> >> > for
> >> > > > > > usually
> >> > > > > > > one or two imports.
> >> > > > > > >
> >> > > > > > > I cannot see any point where it is possible to add null to
> the
> >> > list
> >> > > > of
> >> > > > > > > imported sources from reviewing the code that adds the
> >> imports in
> >> > > the
> >> > > > > > Less
> >> > > > > > > files.
> >> > > > > > >
> >> > > > > > > Furthermore we are adding Less a variable using
> >> > > > > > > LessCompilerConfigurationFactory and clear the
> >> LessCacheManager
> >> > > upon
> >> > > > > > > changes to this variable, however during the tests in our
> >> > Selenium
> >> > > > Grid
> >> > > > > > > this shouldn't happen.
> >> > > > > > >
> >> > > > > > > My problem is that I'm not able to reproduce the issue.
> >> > > > > > > Have someone encountered this problem before? Or does
> someone
> >> > have
> >> > > > > hints
> >> > > > > > on
> >> > > > > > > how to proceed with the troubleshooting?
> >> > > > > > >
> >> > > > > > > Regards
> >> > > > > > > Erik Strid
> >> > > > > > >
> >> > > > > >
> >> > > > >
> >> > > >
> >> > >
> >> >
> >>
> >
> >
>

Re: Issue using Wicket Bootstap Less

Posted by Martin Grigorov <mg...@apache.org>.
Done!
0.9.19 and 0.10.9 are on their way to Maven Central!
Enjoy!

Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov

On Wed, Sep 28, 2016 at 9:46 AM, Martin Grigorov <mg...@apache.org>
wrote:

> Releases are cheap!
> I'll do it today!
>
> Martin Grigorov
> Wicket Training and Consulting
> https://twitter.com/mtgrigorov
>
> On Wed, Sep 28, 2016 at 9:40 AM, Erik Strid <st...@gmail.com> wrote:
>
>> Hi Martin,
>>
>> Thank you for your fast response to the pull request!
>>
>> How often is the wicket-boostrap project released?
>>
>> We have tested the snapshot in our test environment and we think the
>> solution works as intended. We would like to have a correct release before
>> releasing the whole solution to the real world. This will happen within
>> 3-4
>> weeks. Is it possible to get a release in that time frame?
>>
>> Regards
>> Erik
>>
>> On Thu, Sep 22, 2016 at 9:26 PM, Martin Grigorov <mg...@apache.org>
>> wrote:
>>
>> > Merged!
>> > Thanks a lot!
>> >
>> > Martin Grigorov
>> > Wicket Training and Consulting
>> > https://twitter.com/mtgrigorov
>> >
>> > On Thu, Sep 22, 2016 at 1:11 PM, Erik Strid <st...@gmail.com>
>> wrote:
>> >
>> > > Hi Martin,
>> > >
>> > > I have created a pull request, see
>> > > https://github.com/l0rdn1kk0n/wicket-bootstrap/pull/636
>> > >
>> > > Regards
>> > > Erik
>> > >
>> > > On Tue, Sep 20, 2016 at 9:08 PM, Martin Grigorov <
>> mgrigorov@apache.org>
>> > > wrote:
>> > >
>> > > > Hi Erik,
>> > > >
>> > > > Many thanks for investigating this!
>> > > >
>> > > > Please create a Pull Request!
>> > > > It seems you already know how to fix it!
>> > > > Thank you!
>> > > >
>> > > > Martin Grigorov
>> > > > Wicket Training and Consulting
>> > > > https://twitter.com/mtgrigorov
>> > > >
>> > > > On Tue, Sep 20, 2016 at 2:16 PM, Erik Strid <st...@gmail.com>
>> > > wrote:
>> > > >
>> > > > > Hi Martin,
>> > > > >
>> > > > > I have finally found some time to investigate this issue further.
>> > > > >
>> > > > > It seems that clearing the cache only will clear the variable
>> > > > contentCache
>> > > > > and not both the contentCache and urlSourceCache variables in
>> > > > > LessCacheManager. A cleared cache will trigger a recompile in
>> > > > > LessCacheManager.getCss(URLSource) on a cached URLSource, in this
>> > case
>> > > > > will
>> > > > > the compiler add the imported files to the importedSources list,
>> > > returned
>> > > > > by AbstractHierarchicalSource.getImportedSources(), once more.
>> And
>> > the
>> > > > > importedSources list will grow with imported files after each
>> call to
>> > > > > clearCache.
>> > > > > The NPE that we get is a result of the shared URLSource and a race
>> > > > > condition in AbstractHierarchicalSource.
>> > addImportedSource(LessSource)
>> > > > > (importedSources isn't thread safe).
>> > > > >
>> > > > > Furthermore I think there is an issue with the
>> > > > > LessCacheManager.getCss(URLSource). For the first file that is
>> > > compiled
>> > > > > will the list of imported sources for lessSource be empty. The
>> > > > > lastModifiedTime will then only contain the timestamp for the file
>> > and
>> > > > not
>> > > > > the last modified time of the file itself or its imports, so the
>> > > > > lastModifiedTime will be incorrect when adding the compiled
>> source to
>> > > the
>> > > > > timeToContentMap the first time.
>> > > > >
>> > > > > You should be able to see these two issues in this commit
>> > > > > https://github.com/strido/wicket-bootstrap/commit/
>> > > > > 2be0d8d4294162bd103e63c74198d90457e6069e
>> > > > >
>> > > > > Should I report this to your issue tracker (
>> > > > > https://github.com/l0rdn1kk0n/wicket-bootstrap/issues)?
>> > > > >
>> > > > > Regards
>> > > > > Erik Strid
>> > > > >
>> > > > > On Tue, Sep 6, 2016 at 10:49 AM, Martin Grigorov <
>> > mgrigorov@apache.org
>> > > >
>> > > > > wrote:
>> > > > >
>> > > > > > Hi,
>> > > > > >
>> > > > > > If the list of imported sources contains "null" then you should
>> ask
>> > > at
>> > > > > > https://github.com/SomMeri/less4j/issues.
>> > > > > >
>> > > > > > What I can do in Wicket-Bootstrap-Less is to add protection
>> against
>> > > > this
>> > > > > > NullPointerException by ignoring all "null"s. But this may lead
>> to
>> > > > broken
>> > > > > > UI!
>> > > > > > Please file an issue at
>> > > > > > https://github.com/l0rdn1kk0n/wicket-bootstrap/issues if you
>> think
>> > > > this
>> > > > > > could help.
>> > > > > >
>> > > > > > Martin Grigorov
>> > > > > > Wicket Training and Consulting
>> > > > > > https://twitter.com/mtgrigorov
>> > > > > >
>> > > > > > On Tue, Sep 6, 2016 at 10:39 AM, Erik Strid <
>> strid.erik@gmail.com>
>> > > > > wrote:
>> > > > > >
>> > > > > > > Hi.
>> > > > > > >
>> > > > > > > We are using Wicket Bootstap Less in our project and have an
>> > issue
>> > > > with
>> > > > > > the
>> > > > > > > Less compilation.
>> > > > > > > From time to time the compilation fails for some of the Less
>> > files
>> > > in
>> > > > > our
>> > > > > > > project, usually we see this in our Selenium Grid but it have
>> > > > happened
>> > > > > > > locally as well.
>> > > > > > >
>> > > > > > > When the compilation fails we get this stacktrace:
>> > > > > > >
>> > > > > > > java.lang.NullPointerException: null
>> > > > > > > at
>> > > > > > > de.agilecoders.wicket.less.LessCacheManager.findLastModified(
>> > > > > > > LessCacheManager.java:159)
>> > > > > > > ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
>> > > > > > > at
>> > > > > > > de.agilecoders.wicket.less.LessCacheManager.findLastModified(
>> > > > > > > LessCacheManager.java:165)
>> > > > > > > ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
>> > > > > > > at
>> > > > > > > de.agilecoders.wicket.less.LessCacheManager.getLastModifiedT
>> ime(
>> > > > > > > LessCacheManager.java:145)
>> > > > > > > ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
>> > > > > > > at
>> > > > > > > de.agilecoders.wicket.less.LessResourceStream.lastModifiedTi
>> me(
>> > > > > > > LessResourceStream.java:65)
>> > > > > > > ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
>> > > > > > > at
>> > > > > > > org.apache.wicket.request.resource.PackageResource.
>> > > > > newResourceResponse(
>> > > > > > > PackageResource.java:295)
>> > > > > > > ~[wicket-core-6.22.0.jar:6.22.0]
>> > > > > > > at
>> > > > > > > org.apache.wicket.request.resource.AbstractResource.
>> > > > > > > respond(AbstractResource.java:498)
>> > > > > > > ~[wicket-core-6.22.0.jar:6.22.0]
>> > > > > > > at
>> > > > > > > org.apache.wicket.request.handler.resource.
>> > ResourceRequestHandler.
>> > > > > > respond(
>> > > > > > > ResourceRequestHandler.java:75)
>> > > > > > > ~[wicket-core-6.22.0.jar:6.22.0]
>> > > > > > > at
>> > > > > > > org.apache.wicket.request.handler.resource.
>> > > > > > ResourceReferenceRequestHandle
>> > > > > > > r.respond(ResourceReferenceRequestHandler.java:108)
>> > > > > > > ~[wicket-core-6.22.0.jar:6.22.0]
>> > > > > > > at
>> > > > > > > org.apache.wicket.request.cycle.RequestCycle$
>> > > > HandlerExecutor.respond(
>> > > > > > > RequestCycle.java:890)
>> > > > > > > ~[wicket-core-6.22.0.jar:6.22.0]
>> > > > > > > at
>> > > > > > > org.apache.wicket.request.RequestHandlerStack.execute(
>> > > > > > > RequestHandlerStack.java:64)
>> > > > > > > ~[wicket-request-6.22.0.jar:6.22.0]
>> > > > > > > at
>> > > > > > > org.apache.wicket.request.cycle.RequestCycle.execute(
>> > > > > > > RequestCycle.java:261)
>> > > > > > > [wicket-core-6.22.0.jar:6.22.0]
>> > > > > > > at
>> > > > > > > org.apache.wicket.request.cycle.RequestCycle.
>> > > > > > processRequest(RequestCycle.
>> > > > > > > java:218)
>> > > > > > > [wicket-core-6.22.0.jar:6.22.0]
>> > > > > > > at
>> > > > > > > org.apache.wicket.request.cycle.RequestCycle.
>> > > > processRequestAndDetach(
>> > > > > > > RequestCycle.java:289)
>> > > > > > > [wicket-core-6.22.0.jar:6.22.0]
>> > > > > > > at
>> > > > > > > org.apache.wicket.protocol.http.WicketFilter.
>> > processRequestCycle(
>> > > > > > > WicketFilter.java:259)
>> > > > > > > [wicket-core-6.22.0.jar:6.22.0]
>> > > > > > > at
>> > > > > > > org.apache.wicket.protocol.http.WicketFilter.
>> > > > > > processRequest(WicketFilter.
>> > > > > > > java:201)
>> > > > > > > [wicket-core-6.22.0.jar:6.22.0]
>> > > > > > > at
>> > > > > > > org.apache.wicket.protocol.http.WicketFilter.doFilter(
>> > > > > > > WicketFilter.java:282)
>> > > > > > > [wicket-core-6.22.0.jar:6.22.0]
>> > > > > > > at
>> > > > > > > org.eclipse.jetty.servlet.ServletHandler$CachedChain.
>> > > > > > > doFilter(ServletHandler.java:1652)
>> > > > > > > [jetty-servlet-9.2.15.v20160210.jar:9.2.15.v20160210]
>> > > > > > > at
>> > > > > > > org.springframework.security.web.FilterChainProxy$
>> > > > > > > VirtualFilterChain.doFilter(FilterChainProxy.java:369)
>> > > > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
>> > > > > > > at
>> > > > > > > org.springframework.security.web.access.intercept.
>> > > > > > > FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.
>> > > java:109)
>> > > > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
>> > > > > > > at
>> > > > > > > org.springframework.security.web.access.intercept.
>> > > > > > > FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.
>> > > > java:83)
>> > > > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
>> > > > > > > at
>> > > > > > > org.springframework.security.web.FilterChainProxy$
>> > > > > > > VirtualFilterChain.doFilter(FilterChainProxy.java:381)
>> > > > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
>> > > > > > > at
>> > > > > > > org.springframework.security.web.access.
>> > > ExceptionTranslationFilter.
>> > > > > > > doFilter(ExceptionTranslationFilter.java:97)
>> > > > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
>> > > > > > > at
>> > > > > > > org.springframework.security.web.FilterChainProxy$
>> > > > > > > VirtualFilterChain.doFilter(FilterChainProxy.java:381)
>> > > > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
>> > > > > > > at
>> > > > > > > org.springframework.security.web.session.
>> > SessionManagementFilter.
>> > > > > > doFilter(
>> > > > > > > SessionManagementFilter.java:100)
>> > > > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
>> > > > > > > at
>> > > > > > > org.springframework.security.web.FilterChainProxy$
>> > > > > > > VirtualFilterChain.doFilter(FilterChainProxy.java:381)
>> > > > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
>> > > > > > > at
>> > > > > > > org.springframework.security.web.authentication.
>> > > > > > > AnonymousAuthenticationFilter.doFilter(
>> > > > AnonymousAuthenticationFilter.
>> > > > > > > java:78)
>> > > > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
>> > > > > > >
>> > > > > > > I have been able do see what is happening when we get the
>> problem
>> > > > > > locally,
>> > > > > > > it is the importedSources for the file currently compiled that
>> > > > contains
>> > > > > > > null.
>> > > > > > > And from what I have seen (if I'm remembering correctly) it
>> has
>> > > been
>> > > > > the
>> > > > > > > first element in the list that is null and the other items in
>> the
>> > > > list
>> > > > > > > contains the correct imports. We are using "classpath!"
>> imports
>> > for
>> > > > > > usually
>> > > > > > > one or two imports.
>> > > > > > >
>> > > > > > > I cannot see any point where it is possible to add null to the
>> > list
>> > > > of
>> > > > > > > imported sources from reviewing the code that adds the
>> imports in
>> > > the
>> > > > > > Less
>> > > > > > > files.
>> > > > > > >
>> > > > > > > Furthermore we are adding Less a variable using
>> > > > > > > LessCompilerConfigurationFactory and clear the
>> LessCacheManager
>> > > upon
>> > > > > > > changes to this variable, however during the tests in our
>> > Selenium
>> > > > Grid
>> > > > > > > this shouldn't happen.
>> > > > > > >
>> > > > > > > My problem is that I'm not able to reproduce the issue.
>> > > > > > > Have someone encountered this problem before? Or does someone
>> > have
>> > > > > hints
>> > > > > > on
>> > > > > > > how to proceed with the troubleshooting?
>> > > > > > >
>> > > > > > > Regards
>> > > > > > > Erik Strid
>> > > > > > >
>> > > > > >
>> > > > >
>> > > >
>> > >
>> >
>>
>
>

Re: Issue using Wicket Bootstap Less

Posted by Martin Grigorov <mg...@apache.org>.
Releases are cheap!
I'll do it today!

Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov

On Wed, Sep 28, 2016 at 9:40 AM, Erik Strid <st...@gmail.com> wrote:

> Hi Martin,
>
> Thank you for your fast response to the pull request!
>
> How often is the wicket-boostrap project released?
>
> We have tested the snapshot in our test environment and we think the
> solution works as intended. We would like to have a correct release before
> releasing the whole solution to the real world. This will happen within 3-4
> weeks. Is it possible to get a release in that time frame?
>
> Regards
> Erik
>
> On Thu, Sep 22, 2016 at 9:26 PM, Martin Grigorov <mg...@apache.org>
> wrote:
>
> > Merged!
> > Thanks a lot!
> >
> > Martin Grigorov
> > Wicket Training and Consulting
> > https://twitter.com/mtgrigorov
> >
> > On Thu, Sep 22, 2016 at 1:11 PM, Erik Strid <st...@gmail.com>
> wrote:
> >
> > > Hi Martin,
> > >
> > > I have created a pull request, see
> > > https://github.com/l0rdn1kk0n/wicket-bootstrap/pull/636
> > >
> > > Regards
> > > Erik
> > >
> > > On Tue, Sep 20, 2016 at 9:08 PM, Martin Grigorov <mgrigorov@apache.org
> >
> > > wrote:
> > >
> > > > Hi Erik,
> > > >
> > > > Many thanks for investigating this!
> > > >
> > > > Please create a Pull Request!
> > > > It seems you already know how to fix it!
> > > > Thank you!
> > > >
> > > > Martin Grigorov
> > > > Wicket Training and Consulting
> > > > https://twitter.com/mtgrigorov
> > > >
> > > > On Tue, Sep 20, 2016 at 2:16 PM, Erik Strid <st...@gmail.com>
> > > wrote:
> > > >
> > > > > Hi Martin,
> > > > >
> > > > > I have finally found some time to investigate this issue further.
> > > > >
> > > > > It seems that clearing the cache only will clear the variable
> > > > contentCache
> > > > > and not both the contentCache and urlSourceCache variables in
> > > > > LessCacheManager. A cleared cache will trigger a recompile in
> > > > > LessCacheManager.getCss(URLSource) on a cached URLSource, in this
> > case
> > > > > will
> > > > > the compiler add the imported files to the importedSources list,
> > > returned
> > > > > by AbstractHierarchicalSource.getImportedSources(), once more. And
> > the
> > > > > importedSources list will grow with imported files after each call
> to
> > > > > clearCache.
> > > > > The NPE that we get is a result of the shared URLSource and a race
> > > > > condition in AbstractHierarchicalSource.
> > addImportedSource(LessSource)
> > > > > (importedSources isn't thread safe).
> > > > >
> > > > > Furthermore I think there is an issue with the
> > > > > LessCacheManager.getCss(URLSource). For the first file that is
> > > compiled
> > > > > will the list of imported sources for lessSource be empty. The
> > > > > lastModifiedTime will then only contain the timestamp for the file
> > and
> > > > not
> > > > > the last modified time of the file itself or its imports, so the
> > > > > lastModifiedTime will be incorrect when adding the compiled source
> to
> > > the
> > > > > timeToContentMap the first time.
> > > > >
> > > > > You should be able to see these two issues in this commit
> > > > > https://github.com/strido/wicket-bootstrap/commit/
> > > > > 2be0d8d4294162bd103e63c74198d90457e6069e
> > > > >
> > > > > Should I report this to your issue tracker (
> > > > > https://github.com/l0rdn1kk0n/wicket-bootstrap/issues)?
> > > > >
> > > > > Regards
> > > > > Erik Strid
> > > > >
> > > > > On Tue, Sep 6, 2016 at 10:49 AM, Martin Grigorov <
> > mgrigorov@apache.org
> > > >
> > > > > wrote:
> > > > >
> > > > > > Hi,
> > > > > >
> > > > > > If the list of imported sources contains "null" then you should
> ask
> > > at
> > > > > > https://github.com/SomMeri/less4j/issues.
> > > > > >
> > > > > > What I can do in Wicket-Bootstrap-Less is to add protection
> against
> > > > this
> > > > > > NullPointerException by ignoring all "null"s. But this may lead
> to
> > > > broken
> > > > > > UI!
> > > > > > Please file an issue at
> > > > > > https://github.com/l0rdn1kk0n/wicket-bootstrap/issues if you
> think
> > > > this
> > > > > > could help.
> > > > > >
> > > > > > Martin Grigorov
> > > > > > Wicket Training and Consulting
> > > > > > https://twitter.com/mtgrigorov
> > > > > >
> > > > > > On Tue, Sep 6, 2016 at 10:39 AM, Erik Strid <
> strid.erik@gmail.com>
> > > > > wrote:
> > > > > >
> > > > > > > Hi.
> > > > > > >
> > > > > > > We are using Wicket Bootstap Less in our project and have an
> > issue
> > > > with
> > > > > > the
> > > > > > > Less compilation.
> > > > > > > From time to time the compilation fails for some of the Less
> > files
> > > in
> > > > > our
> > > > > > > project, usually we see this in our Selenium Grid but it have
> > > > happened
> > > > > > > locally as well.
> > > > > > >
> > > > > > > When the compilation fails we get this stacktrace:
> > > > > > >
> > > > > > > java.lang.NullPointerException: null
> > > > > > > at
> > > > > > > de.agilecoders.wicket.less.LessCacheManager.findLastModified(
> > > > > > > LessCacheManager.java:159)
> > > > > > > ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> > > > > > > at
> > > > > > > de.agilecoders.wicket.less.LessCacheManager.findLastModified(
> > > > > > > LessCacheManager.java:165)
> > > > > > > ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> > > > > > > at
> > > > > > > de.agilecoders.wicket.less.LessCacheManager.
> getLastModifiedTime(
> > > > > > > LessCacheManager.java:145)
> > > > > > > ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> > > > > > > at
> > > > > > > de.agilecoders.wicket.less.LessResourceStream.
> lastModifiedTime(
> > > > > > > LessResourceStream.java:65)
> > > > > > > ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> > > > > > > at
> > > > > > > org.apache.wicket.request.resource.PackageResource.
> > > > > newResourceResponse(
> > > > > > > PackageResource.java:295)
> > > > > > > ~[wicket-core-6.22.0.jar:6.22.0]
> > > > > > > at
> > > > > > > org.apache.wicket.request.resource.AbstractResource.
> > > > > > > respond(AbstractResource.java:498)
> > > > > > > ~[wicket-core-6.22.0.jar:6.22.0]
> > > > > > > at
> > > > > > > org.apache.wicket.request.handler.resource.
> > ResourceRequestHandler.
> > > > > > respond(
> > > > > > > ResourceRequestHandler.java:75)
> > > > > > > ~[wicket-core-6.22.0.jar:6.22.0]
> > > > > > > at
> > > > > > > org.apache.wicket.request.handler.resource.
> > > > > > ResourceReferenceRequestHandle
> > > > > > > r.respond(ResourceReferenceRequestHandler.java:108)
> > > > > > > ~[wicket-core-6.22.0.jar:6.22.0]
> > > > > > > at
> > > > > > > org.apache.wicket.request.cycle.RequestCycle$
> > > > HandlerExecutor.respond(
> > > > > > > RequestCycle.java:890)
> > > > > > > ~[wicket-core-6.22.0.jar:6.22.0]
> > > > > > > at
> > > > > > > org.apache.wicket.request.RequestHandlerStack.execute(
> > > > > > > RequestHandlerStack.java:64)
> > > > > > > ~[wicket-request-6.22.0.jar:6.22.0]
> > > > > > > at
> > > > > > > org.apache.wicket.request.cycle.RequestCycle.execute(
> > > > > > > RequestCycle.java:261)
> > > > > > > [wicket-core-6.22.0.jar:6.22.0]
> > > > > > > at
> > > > > > > org.apache.wicket.request.cycle.RequestCycle.
> > > > > > processRequest(RequestCycle.
> > > > > > > java:218)
> > > > > > > [wicket-core-6.22.0.jar:6.22.0]
> > > > > > > at
> > > > > > > org.apache.wicket.request.cycle.RequestCycle.
> > > > processRequestAndDetach(
> > > > > > > RequestCycle.java:289)
> > > > > > > [wicket-core-6.22.0.jar:6.22.0]
> > > > > > > at
> > > > > > > org.apache.wicket.protocol.http.WicketFilter.
> > processRequestCycle(
> > > > > > > WicketFilter.java:259)
> > > > > > > [wicket-core-6.22.0.jar:6.22.0]
> > > > > > > at
> > > > > > > org.apache.wicket.protocol.http.WicketFilter.
> > > > > > processRequest(WicketFilter.
> > > > > > > java:201)
> > > > > > > [wicket-core-6.22.0.jar:6.22.0]
> > > > > > > at
> > > > > > > org.apache.wicket.protocol.http.WicketFilter.doFilter(
> > > > > > > WicketFilter.java:282)
> > > > > > > [wicket-core-6.22.0.jar:6.22.0]
> > > > > > > at
> > > > > > > org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> > > > > > > doFilter(ServletHandler.java:1652)
> > > > > > > [jetty-servlet-9.2.15.v20160210.jar:9.2.15.v20160210]
> > > > > > > at
> > > > > > > org.springframework.security.web.FilterChainProxy$
> > > > > > > VirtualFilterChain.doFilter(FilterChainProxy.java:369)
> > > > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > > > > > at
> > > > > > > org.springframework.security.web.access.intercept.
> > > > > > > FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.
> > > java:109)
> > > > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > > > > > at
> > > > > > > org.springframework.security.web.access.intercept.
> > > > > > > FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.
> > > > java:83)
> > > > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > > > > > at
> > > > > > > org.springframework.security.web.FilterChainProxy$
> > > > > > > VirtualFilterChain.doFilter(FilterChainProxy.java:381)
> > > > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > > > > > at
> > > > > > > org.springframework.security.web.access.
> > > ExceptionTranslationFilter.
> > > > > > > doFilter(ExceptionTranslationFilter.java:97)
> > > > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > > > > > at
> > > > > > > org.springframework.security.web.FilterChainProxy$
> > > > > > > VirtualFilterChain.doFilter(FilterChainProxy.java:381)
> > > > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > > > > > at
> > > > > > > org.springframework.security.web.session.
> > SessionManagementFilter.
> > > > > > doFilter(
> > > > > > > SessionManagementFilter.java:100)
> > > > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > > > > > at
> > > > > > > org.springframework.security.web.FilterChainProxy$
> > > > > > > VirtualFilterChain.doFilter(FilterChainProxy.java:381)
> > > > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > > > > > at
> > > > > > > org.springframework.security.web.authentication.
> > > > > > > AnonymousAuthenticationFilter.doFilter(
> > > > AnonymousAuthenticationFilter.
> > > > > > > java:78)
> > > > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > > > > >
> > > > > > > I have been able do see what is happening when we get the
> problem
> > > > > > locally,
> > > > > > > it is the importedSources for the file currently compiled that
> > > > contains
> > > > > > > null.
> > > > > > > And from what I have seen (if I'm remembering correctly) it has
> > > been
> > > > > the
> > > > > > > first element in the list that is null and the other items in
> the
> > > > list
> > > > > > > contains the correct imports. We are using "classpath!" imports
> > for
> > > > > > usually
> > > > > > > one or two imports.
> > > > > > >
> > > > > > > I cannot see any point where it is possible to add null to the
> > list
> > > > of
> > > > > > > imported sources from reviewing the code that adds the imports
> in
> > > the
> > > > > > Less
> > > > > > > files.
> > > > > > >
> > > > > > > Furthermore we are adding Less a variable using
> > > > > > > LessCompilerConfigurationFactory and clear the
> LessCacheManager
> > > upon
> > > > > > > changes to this variable, however during the tests in our
> > Selenium
> > > > Grid
> > > > > > > this shouldn't happen.
> > > > > > >
> > > > > > > My problem is that I'm not able to reproduce the issue.
> > > > > > > Have someone encountered this problem before? Or does someone
> > have
> > > > > hints
> > > > > > on
> > > > > > > how to proceed with the troubleshooting?
> > > > > > >
> > > > > > > Regards
> > > > > > > Erik Strid
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Re: Issue using Wicket Bootstap Less

Posted by Erik Strid <st...@gmail.com>.
Hi Martin,

Thank you for your fast response to the pull request!

How often is the wicket-boostrap project released?

We have tested the snapshot in our test environment and we think the
solution works as intended. We would like to have a correct release before
releasing the whole solution to the real world. This will happen within 3-4
weeks. Is it possible to get a release in that time frame?

Regards
Erik

On Thu, Sep 22, 2016 at 9:26 PM, Martin Grigorov <mg...@apache.org>
wrote:

> Merged!
> Thanks a lot!
>
> Martin Grigorov
> Wicket Training and Consulting
> https://twitter.com/mtgrigorov
>
> On Thu, Sep 22, 2016 at 1:11 PM, Erik Strid <st...@gmail.com> wrote:
>
> > Hi Martin,
> >
> > I have created a pull request, see
> > https://github.com/l0rdn1kk0n/wicket-bootstrap/pull/636
> >
> > Regards
> > Erik
> >
> > On Tue, Sep 20, 2016 at 9:08 PM, Martin Grigorov <mg...@apache.org>
> > wrote:
> >
> > > Hi Erik,
> > >
> > > Many thanks for investigating this!
> > >
> > > Please create a Pull Request!
> > > It seems you already know how to fix it!
> > > Thank you!
> > >
> > > Martin Grigorov
> > > Wicket Training and Consulting
> > > https://twitter.com/mtgrigorov
> > >
> > > On Tue, Sep 20, 2016 at 2:16 PM, Erik Strid <st...@gmail.com>
> > wrote:
> > >
> > > > Hi Martin,
> > > >
> > > > I have finally found some time to investigate this issue further.
> > > >
> > > > It seems that clearing the cache only will clear the variable
> > > contentCache
> > > > and not both the contentCache and urlSourceCache variables in
> > > > LessCacheManager. A cleared cache will trigger a recompile in
> > > > LessCacheManager.getCss(URLSource) on a cached URLSource, in this
> case
> > > > will
> > > > the compiler add the imported files to the importedSources list,
> > returned
> > > > by AbstractHierarchicalSource.getImportedSources(), once more. And
> the
> > > > importedSources list will grow with imported files after each call to
> > > > clearCache.
> > > > The NPE that we get is a result of the shared URLSource and a race
> > > > condition in AbstractHierarchicalSource.
> addImportedSource(LessSource)
> > > > (importedSources isn't thread safe).
> > > >
> > > > Furthermore I think there is an issue with the
> > > > LessCacheManager.getCss(URLSource). For the first file that is
> > compiled
> > > > will the list of imported sources for lessSource be empty. The
> > > > lastModifiedTime will then only contain the timestamp for the file
> and
> > > not
> > > > the last modified time of the file itself or its imports, so the
> > > > lastModifiedTime will be incorrect when adding the compiled source to
> > the
> > > > timeToContentMap the first time.
> > > >
> > > > You should be able to see these two issues in this commit
> > > > https://github.com/strido/wicket-bootstrap/commit/
> > > > 2be0d8d4294162bd103e63c74198d90457e6069e
> > > >
> > > > Should I report this to your issue tracker (
> > > > https://github.com/l0rdn1kk0n/wicket-bootstrap/issues)?
> > > >
> > > > Regards
> > > > Erik Strid
> > > >
> > > > On Tue, Sep 6, 2016 at 10:49 AM, Martin Grigorov <
> mgrigorov@apache.org
> > >
> > > > wrote:
> > > >
> > > > > Hi,
> > > > >
> > > > > If the list of imported sources contains "null" then you should ask
> > at
> > > > > https://github.com/SomMeri/less4j/issues.
> > > > >
> > > > > What I can do in Wicket-Bootstrap-Less is to add protection against
> > > this
> > > > > NullPointerException by ignoring all "null"s. But this may lead to
> > > broken
> > > > > UI!
> > > > > Please file an issue at
> > > > > https://github.com/l0rdn1kk0n/wicket-bootstrap/issues if you think
> > > this
> > > > > could help.
> > > > >
> > > > > Martin Grigorov
> > > > > Wicket Training and Consulting
> > > > > https://twitter.com/mtgrigorov
> > > > >
> > > > > On Tue, Sep 6, 2016 at 10:39 AM, Erik Strid <st...@gmail.com>
> > > > wrote:
> > > > >
> > > > > > Hi.
> > > > > >
> > > > > > We are using Wicket Bootstap Less in our project and have an
> issue
> > > with
> > > > > the
> > > > > > Less compilation.
> > > > > > From time to time the compilation fails for some of the Less
> files
> > in
> > > > our
> > > > > > project, usually we see this in our Selenium Grid but it have
> > > happened
> > > > > > locally as well.
> > > > > >
> > > > > > When the compilation fails we get this stacktrace:
> > > > > >
> > > > > > java.lang.NullPointerException: null
> > > > > > at
> > > > > > de.agilecoders.wicket.less.LessCacheManager.findLastModified(
> > > > > > LessCacheManager.java:159)
> > > > > > ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> > > > > > at
> > > > > > de.agilecoders.wicket.less.LessCacheManager.findLastModified(
> > > > > > LessCacheManager.java:165)
> > > > > > ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> > > > > > at
> > > > > > de.agilecoders.wicket.less.LessCacheManager.getLastModifiedTime(
> > > > > > LessCacheManager.java:145)
> > > > > > ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> > > > > > at
> > > > > > de.agilecoders.wicket.less.LessResourceStream.lastModifiedTime(
> > > > > > LessResourceStream.java:65)
> > > > > > ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> > > > > > at
> > > > > > org.apache.wicket.request.resource.PackageResource.
> > > > newResourceResponse(
> > > > > > PackageResource.java:295)
> > > > > > ~[wicket-core-6.22.0.jar:6.22.0]
> > > > > > at
> > > > > > org.apache.wicket.request.resource.AbstractResource.
> > > > > > respond(AbstractResource.java:498)
> > > > > > ~[wicket-core-6.22.0.jar:6.22.0]
> > > > > > at
> > > > > > org.apache.wicket.request.handler.resource.
> ResourceRequestHandler.
> > > > > respond(
> > > > > > ResourceRequestHandler.java:75)
> > > > > > ~[wicket-core-6.22.0.jar:6.22.0]
> > > > > > at
> > > > > > org.apache.wicket.request.handler.resource.
> > > > > ResourceReferenceRequestHandle
> > > > > > r.respond(ResourceReferenceRequestHandler.java:108)
> > > > > > ~[wicket-core-6.22.0.jar:6.22.0]
> > > > > > at
> > > > > > org.apache.wicket.request.cycle.RequestCycle$
> > > HandlerExecutor.respond(
> > > > > > RequestCycle.java:890)
> > > > > > ~[wicket-core-6.22.0.jar:6.22.0]
> > > > > > at
> > > > > > org.apache.wicket.request.RequestHandlerStack.execute(
> > > > > > RequestHandlerStack.java:64)
> > > > > > ~[wicket-request-6.22.0.jar:6.22.0]
> > > > > > at
> > > > > > org.apache.wicket.request.cycle.RequestCycle.execute(
> > > > > > RequestCycle.java:261)
> > > > > > [wicket-core-6.22.0.jar:6.22.0]
> > > > > > at
> > > > > > org.apache.wicket.request.cycle.RequestCycle.
> > > > > processRequest(RequestCycle.
> > > > > > java:218)
> > > > > > [wicket-core-6.22.0.jar:6.22.0]
> > > > > > at
> > > > > > org.apache.wicket.request.cycle.RequestCycle.
> > > processRequestAndDetach(
> > > > > > RequestCycle.java:289)
> > > > > > [wicket-core-6.22.0.jar:6.22.0]
> > > > > > at
> > > > > > org.apache.wicket.protocol.http.WicketFilter.
> processRequestCycle(
> > > > > > WicketFilter.java:259)
> > > > > > [wicket-core-6.22.0.jar:6.22.0]
> > > > > > at
> > > > > > org.apache.wicket.protocol.http.WicketFilter.
> > > > > processRequest(WicketFilter.
> > > > > > java:201)
> > > > > > [wicket-core-6.22.0.jar:6.22.0]
> > > > > > at
> > > > > > org.apache.wicket.protocol.http.WicketFilter.doFilter(
> > > > > > WicketFilter.java:282)
> > > > > > [wicket-core-6.22.0.jar:6.22.0]
> > > > > > at
> > > > > > org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> > > > > > doFilter(ServletHandler.java:1652)
> > > > > > [jetty-servlet-9.2.15.v20160210.jar:9.2.15.v20160210]
> > > > > > at
> > > > > > org.springframework.security.web.FilterChainProxy$
> > > > > > VirtualFilterChain.doFilter(FilterChainProxy.java:369)
> > > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > > > > at
> > > > > > org.springframework.security.web.access.intercept.
> > > > > > FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.
> > java:109)
> > > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > > > > at
> > > > > > org.springframework.security.web.access.intercept.
> > > > > > FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.
> > > java:83)
> > > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > > > > at
> > > > > > org.springframework.security.web.FilterChainProxy$
> > > > > > VirtualFilterChain.doFilter(FilterChainProxy.java:381)
> > > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > > > > at
> > > > > > org.springframework.security.web.access.
> > ExceptionTranslationFilter.
> > > > > > doFilter(ExceptionTranslationFilter.java:97)
> > > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > > > > at
> > > > > > org.springframework.security.web.FilterChainProxy$
> > > > > > VirtualFilterChain.doFilter(FilterChainProxy.java:381)
> > > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > > > > at
> > > > > > org.springframework.security.web.session.
> SessionManagementFilter.
> > > > > doFilter(
> > > > > > SessionManagementFilter.java:100)
> > > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > > > > at
> > > > > > org.springframework.security.web.FilterChainProxy$
> > > > > > VirtualFilterChain.doFilter(FilterChainProxy.java:381)
> > > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > > > > at
> > > > > > org.springframework.security.web.authentication.
> > > > > > AnonymousAuthenticationFilter.doFilter(
> > > AnonymousAuthenticationFilter.
> > > > > > java:78)
> > > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > > > >
> > > > > > I have been able do see what is happening when we get the problem
> > > > > locally,
> > > > > > it is the importedSources for the file currently compiled that
> > > contains
> > > > > > null.
> > > > > > And from what I have seen (if I'm remembering correctly) it has
> > been
> > > > the
> > > > > > first element in the list that is null and the other items in the
> > > list
> > > > > > contains the correct imports. We are using "classpath!" imports
> for
> > > > > usually
> > > > > > one or two imports.
> > > > > >
> > > > > > I cannot see any point where it is possible to add null to the
> list
> > > of
> > > > > > imported sources from reviewing the code that adds the imports in
> > the
> > > > > Less
> > > > > > files.
> > > > > >
> > > > > > Furthermore we are adding Less a variable using
> > > > > > LessCompilerConfigurationFactory and clear the LessCacheManager
> > upon
> > > > > > changes to this variable, however during the tests in our
> Selenium
> > > Grid
> > > > > > this shouldn't happen.
> > > > > >
> > > > > > My problem is that I'm not able to reproduce the issue.
> > > > > > Have someone encountered this problem before? Or does someone
> have
> > > > hints
> > > > > on
> > > > > > how to proceed with the troubleshooting?
> > > > > >
> > > > > > Regards
> > > > > > Erik Strid
> > > > > >
> > > > >
> > > >
> > >
> >
>

Re: Issue using Wicket Bootstap Less

Posted by Martin Grigorov <mg...@apache.org>.
Merged!
Thanks a lot!

Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov

On Thu, Sep 22, 2016 at 1:11 PM, Erik Strid <st...@gmail.com> wrote:

> Hi Martin,
>
> I have created a pull request, see
> https://github.com/l0rdn1kk0n/wicket-bootstrap/pull/636
>
> Regards
> Erik
>
> On Tue, Sep 20, 2016 at 9:08 PM, Martin Grigorov <mg...@apache.org>
> wrote:
>
> > Hi Erik,
> >
> > Many thanks for investigating this!
> >
> > Please create a Pull Request!
> > It seems you already know how to fix it!
> > Thank you!
> >
> > Martin Grigorov
> > Wicket Training and Consulting
> > https://twitter.com/mtgrigorov
> >
> > On Tue, Sep 20, 2016 at 2:16 PM, Erik Strid <st...@gmail.com>
> wrote:
> >
> > > Hi Martin,
> > >
> > > I have finally found some time to investigate this issue further.
> > >
> > > It seems that clearing the cache only will clear the variable
> > contentCache
> > > and not both the contentCache and urlSourceCache variables in
> > > LessCacheManager. A cleared cache will trigger a recompile in
> > > LessCacheManager.getCss(URLSource) on a cached URLSource, in this case
> > > will
> > > the compiler add the imported files to the importedSources list,
> returned
> > > by AbstractHierarchicalSource.getImportedSources(), once more. And the
> > > importedSources list will grow with imported files after each call to
> > > clearCache.
> > > The NPE that we get is a result of the shared URLSource and a race
> > > condition in AbstractHierarchicalSource.addImportedSource(LessSource)
> > > (importedSources isn't thread safe).
> > >
> > > Furthermore I think there is an issue with the
> > > LessCacheManager.getCss(URLSource). For the first file that is
> compiled
> > > will the list of imported sources for lessSource be empty. The
> > > lastModifiedTime will then only contain the timestamp for the file and
> > not
> > > the last modified time of the file itself or its imports, so the
> > > lastModifiedTime will be incorrect when adding the compiled source to
> the
> > > timeToContentMap the first time.
> > >
> > > You should be able to see these two issues in this commit
> > > https://github.com/strido/wicket-bootstrap/commit/
> > > 2be0d8d4294162bd103e63c74198d90457e6069e
> > >
> > > Should I report this to your issue tracker (
> > > https://github.com/l0rdn1kk0n/wicket-bootstrap/issues)?
> > >
> > > Regards
> > > Erik Strid
> > >
> > > On Tue, Sep 6, 2016 at 10:49 AM, Martin Grigorov <mgrigorov@apache.org
> >
> > > wrote:
> > >
> > > > Hi,
> > > >
> > > > If the list of imported sources contains "null" then you should ask
> at
> > > > https://github.com/SomMeri/less4j/issues.
> > > >
> > > > What I can do in Wicket-Bootstrap-Less is to add protection against
> > this
> > > > NullPointerException by ignoring all "null"s. But this may lead to
> > broken
> > > > UI!
> > > > Please file an issue at
> > > > https://github.com/l0rdn1kk0n/wicket-bootstrap/issues if you think
> > this
> > > > could help.
> > > >
> > > > Martin Grigorov
> > > > Wicket Training and Consulting
> > > > https://twitter.com/mtgrigorov
> > > >
> > > > On Tue, Sep 6, 2016 at 10:39 AM, Erik Strid <st...@gmail.com>
> > > wrote:
> > > >
> > > > > Hi.
> > > > >
> > > > > We are using Wicket Bootstap Less in our project and have an issue
> > with
> > > > the
> > > > > Less compilation.
> > > > > From time to time the compilation fails for some of the Less files
> in
> > > our
> > > > > project, usually we see this in our Selenium Grid but it have
> > happened
> > > > > locally as well.
> > > > >
> > > > > When the compilation fails we get this stacktrace:
> > > > >
> > > > > java.lang.NullPointerException: null
> > > > > at
> > > > > de.agilecoders.wicket.less.LessCacheManager.findLastModified(
> > > > > LessCacheManager.java:159)
> > > > > ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> > > > > at
> > > > > de.agilecoders.wicket.less.LessCacheManager.findLastModified(
> > > > > LessCacheManager.java:165)
> > > > > ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> > > > > at
> > > > > de.agilecoders.wicket.less.LessCacheManager.getLastModifiedTime(
> > > > > LessCacheManager.java:145)
> > > > > ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> > > > > at
> > > > > de.agilecoders.wicket.less.LessResourceStream.lastModifiedTime(
> > > > > LessResourceStream.java:65)
> > > > > ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> > > > > at
> > > > > org.apache.wicket.request.resource.PackageResource.
> > > newResourceResponse(
> > > > > PackageResource.java:295)
> > > > > ~[wicket-core-6.22.0.jar:6.22.0]
> > > > > at
> > > > > org.apache.wicket.request.resource.AbstractResource.
> > > > > respond(AbstractResource.java:498)
> > > > > ~[wicket-core-6.22.0.jar:6.22.0]
> > > > > at
> > > > > org.apache.wicket.request.handler.resource.ResourceRequestHandler.
> > > > respond(
> > > > > ResourceRequestHandler.java:75)
> > > > > ~[wicket-core-6.22.0.jar:6.22.0]
> > > > > at
> > > > > org.apache.wicket.request.handler.resource.
> > > > ResourceReferenceRequestHandle
> > > > > r.respond(ResourceReferenceRequestHandler.java:108)
> > > > > ~[wicket-core-6.22.0.jar:6.22.0]
> > > > > at
> > > > > org.apache.wicket.request.cycle.RequestCycle$
> > HandlerExecutor.respond(
> > > > > RequestCycle.java:890)
> > > > > ~[wicket-core-6.22.0.jar:6.22.0]
> > > > > at
> > > > > org.apache.wicket.request.RequestHandlerStack.execute(
> > > > > RequestHandlerStack.java:64)
> > > > > ~[wicket-request-6.22.0.jar:6.22.0]
> > > > > at
> > > > > org.apache.wicket.request.cycle.RequestCycle.execute(
> > > > > RequestCycle.java:261)
> > > > > [wicket-core-6.22.0.jar:6.22.0]
> > > > > at
> > > > > org.apache.wicket.request.cycle.RequestCycle.
> > > > processRequest(RequestCycle.
> > > > > java:218)
> > > > > [wicket-core-6.22.0.jar:6.22.0]
> > > > > at
> > > > > org.apache.wicket.request.cycle.RequestCycle.
> > processRequestAndDetach(
> > > > > RequestCycle.java:289)
> > > > > [wicket-core-6.22.0.jar:6.22.0]
> > > > > at
> > > > > org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(
> > > > > WicketFilter.java:259)
> > > > > [wicket-core-6.22.0.jar:6.22.0]
> > > > > at
> > > > > org.apache.wicket.protocol.http.WicketFilter.
> > > > processRequest(WicketFilter.
> > > > > java:201)
> > > > > [wicket-core-6.22.0.jar:6.22.0]
> > > > > at
> > > > > org.apache.wicket.protocol.http.WicketFilter.doFilter(
> > > > > WicketFilter.java:282)
> > > > > [wicket-core-6.22.0.jar:6.22.0]
> > > > > at
> > > > > org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> > > > > doFilter(ServletHandler.java:1652)
> > > > > [jetty-servlet-9.2.15.v20160210.jar:9.2.15.v20160210]
> > > > > at
> > > > > org.springframework.security.web.FilterChainProxy$
> > > > > VirtualFilterChain.doFilter(FilterChainProxy.java:369)
> > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > > > at
> > > > > org.springframework.security.web.access.intercept.
> > > > > FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.
> java:109)
> > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > > > at
> > > > > org.springframework.security.web.access.intercept.
> > > > > FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.
> > java:83)
> > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > > > at
> > > > > org.springframework.security.web.FilterChainProxy$
> > > > > VirtualFilterChain.doFilter(FilterChainProxy.java:381)
> > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > > > at
> > > > > org.springframework.security.web.access.
> ExceptionTranslationFilter.
> > > > > doFilter(ExceptionTranslationFilter.java:97)
> > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > > > at
> > > > > org.springframework.security.web.FilterChainProxy$
> > > > > VirtualFilterChain.doFilter(FilterChainProxy.java:381)
> > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > > > at
> > > > > org.springframework.security.web.session.SessionManagementFilter.
> > > > doFilter(
> > > > > SessionManagementFilter.java:100)
> > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > > > at
> > > > > org.springframework.security.web.FilterChainProxy$
> > > > > VirtualFilterChain.doFilter(FilterChainProxy.java:381)
> > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > > > at
> > > > > org.springframework.security.web.authentication.
> > > > > AnonymousAuthenticationFilter.doFilter(
> > AnonymousAuthenticationFilter.
> > > > > java:78)
> > > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > > >
> > > > > I have been able do see what is happening when we get the problem
> > > > locally,
> > > > > it is the importedSources for the file currently compiled that
> > contains
> > > > > null.
> > > > > And from what I have seen (if I'm remembering correctly) it has
> been
> > > the
> > > > > first element in the list that is null and the other items in the
> > list
> > > > > contains the correct imports. We are using "classpath!" imports for
> > > > usually
> > > > > one or two imports.
> > > > >
> > > > > I cannot see any point where it is possible to add null to the list
> > of
> > > > > imported sources from reviewing the code that adds the imports in
> the
> > > > Less
> > > > > files.
> > > > >
> > > > > Furthermore we are adding Less a variable using
> > > > > LessCompilerConfigurationFactory and clear the LessCacheManager
> upon
> > > > > changes to this variable, however during the tests in our Selenium
> > Grid
> > > > > this shouldn't happen.
> > > > >
> > > > > My problem is that I'm not able to reproduce the issue.
> > > > > Have someone encountered this problem before? Or does someone have
> > > hints
> > > > on
> > > > > how to proceed with the troubleshooting?
> > > > >
> > > > > Regards
> > > > > Erik Strid
> > > > >
> > > >
> > >
> >
>

Re: Issue using Wicket Bootstap Less

Posted by Erik Strid <st...@gmail.com>.
Hi Martin,

I have created a pull request, see
https://github.com/l0rdn1kk0n/wicket-bootstrap/pull/636

Regards
Erik

On Tue, Sep 20, 2016 at 9:08 PM, Martin Grigorov <mg...@apache.org>
wrote:

> Hi Erik,
>
> Many thanks for investigating this!
>
> Please create a Pull Request!
> It seems you already know how to fix it!
> Thank you!
>
> Martin Grigorov
> Wicket Training and Consulting
> https://twitter.com/mtgrigorov
>
> On Tue, Sep 20, 2016 at 2:16 PM, Erik Strid <st...@gmail.com> wrote:
>
> > Hi Martin,
> >
> > I have finally found some time to investigate this issue further.
> >
> > It seems that clearing the cache only will clear the variable
> contentCache
> > and not both the contentCache and urlSourceCache variables in
> > LessCacheManager. A cleared cache will trigger a recompile in
> > LessCacheManager.getCss(URLSource) on a cached URLSource, in this case
> > will
> > the compiler add the imported files to the importedSources list, returned
> > by AbstractHierarchicalSource.getImportedSources(), once more. And the
> > importedSources list will grow with imported files after each call to
> > clearCache.
> > The NPE that we get is a result of the shared URLSource and a race
> > condition in AbstractHierarchicalSource.addImportedSource(LessSource)
> > (importedSources isn't thread safe).
> >
> > Furthermore I think there is an issue with the
> > LessCacheManager.getCss(URLSource). For the first file that is compiled
> > will the list of imported sources for lessSource be empty. The
> > lastModifiedTime will then only contain the timestamp for the file and
> not
> > the last modified time of the file itself or its imports, so the
> > lastModifiedTime will be incorrect when adding the compiled source to the
> > timeToContentMap the first time.
> >
> > You should be able to see these two issues in this commit
> > https://github.com/strido/wicket-bootstrap/commit/
> > 2be0d8d4294162bd103e63c74198d90457e6069e
> >
> > Should I report this to your issue tracker (
> > https://github.com/l0rdn1kk0n/wicket-bootstrap/issues)?
> >
> > Regards
> > Erik Strid
> >
> > On Tue, Sep 6, 2016 at 10:49 AM, Martin Grigorov <mg...@apache.org>
> > wrote:
> >
> > > Hi,
> > >
> > > If the list of imported sources contains "null" then you should ask at
> > > https://github.com/SomMeri/less4j/issues.
> > >
> > > What I can do in Wicket-Bootstrap-Less is to add protection against
> this
> > > NullPointerException by ignoring all "null"s. But this may lead to
> broken
> > > UI!
> > > Please file an issue at
> > > https://github.com/l0rdn1kk0n/wicket-bootstrap/issues if you think
> this
> > > could help.
> > >
> > > Martin Grigorov
> > > Wicket Training and Consulting
> > > https://twitter.com/mtgrigorov
> > >
> > > On Tue, Sep 6, 2016 at 10:39 AM, Erik Strid <st...@gmail.com>
> > wrote:
> > >
> > > > Hi.
> > > >
> > > > We are using Wicket Bootstap Less in our project and have an issue
> with
> > > the
> > > > Less compilation.
> > > > From time to time the compilation fails for some of the Less files in
> > our
> > > > project, usually we see this in our Selenium Grid but it have
> happened
> > > > locally as well.
> > > >
> > > > When the compilation fails we get this stacktrace:
> > > >
> > > > java.lang.NullPointerException: null
> > > > at
> > > > de.agilecoders.wicket.less.LessCacheManager.findLastModified(
> > > > LessCacheManager.java:159)
> > > > ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> > > > at
> > > > de.agilecoders.wicket.less.LessCacheManager.findLastModified(
> > > > LessCacheManager.java:165)
> > > > ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> > > > at
> > > > de.agilecoders.wicket.less.LessCacheManager.getLastModifiedTime(
> > > > LessCacheManager.java:145)
> > > > ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> > > > at
> > > > de.agilecoders.wicket.less.LessResourceStream.lastModifiedTime(
> > > > LessResourceStream.java:65)
> > > > ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> > > > at
> > > > org.apache.wicket.request.resource.PackageResource.
> > newResourceResponse(
> > > > PackageResource.java:295)
> > > > ~[wicket-core-6.22.0.jar:6.22.0]
> > > > at
> > > > org.apache.wicket.request.resource.AbstractResource.
> > > > respond(AbstractResource.java:498)
> > > > ~[wicket-core-6.22.0.jar:6.22.0]
> > > > at
> > > > org.apache.wicket.request.handler.resource.ResourceRequestHandler.
> > > respond(
> > > > ResourceRequestHandler.java:75)
> > > > ~[wicket-core-6.22.0.jar:6.22.0]
> > > > at
> > > > org.apache.wicket.request.handler.resource.
> > > ResourceReferenceRequestHandle
> > > > r.respond(ResourceReferenceRequestHandler.java:108)
> > > > ~[wicket-core-6.22.0.jar:6.22.0]
> > > > at
> > > > org.apache.wicket.request.cycle.RequestCycle$
> HandlerExecutor.respond(
> > > > RequestCycle.java:890)
> > > > ~[wicket-core-6.22.0.jar:6.22.0]
> > > > at
> > > > org.apache.wicket.request.RequestHandlerStack.execute(
> > > > RequestHandlerStack.java:64)
> > > > ~[wicket-request-6.22.0.jar:6.22.0]
> > > > at
> > > > org.apache.wicket.request.cycle.RequestCycle.execute(
> > > > RequestCycle.java:261)
> > > > [wicket-core-6.22.0.jar:6.22.0]
> > > > at
> > > > org.apache.wicket.request.cycle.RequestCycle.
> > > processRequest(RequestCycle.
> > > > java:218)
> > > > [wicket-core-6.22.0.jar:6.22.0]
> > > > at
> > > > org.apache.wicket.request.cycle.RequestCycle.
> processRequestAndDetach(
> > > > RequestCycle.java:289)
> > > > [wicket-core-6.22.0.jar:6.22.0]
> > > > at
> > > > org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(
> > > > WicketFilter.java:259)
> > > > [wicket-core-6.22.0.jar:6.22.0]
> > > > at
> > > > org.apache.wicket.protocol.http.WicketFilter.
> > > processRequest(WicketFilter.
> > > > java:201)
> > > > [wicket-core-6.22.0.jar:6.22.0]
> > > > at
> > > > org.apache.wicket.protocol.http.WicketFilter.doFilter(
> > > > WicketFilter.java:282)
> > > > [wicket-core-6.22.0.jar:6.22.0]
> > > > at
> > > > org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> > > > doFilter(ServletHandler.java:1652)
> > > > [jetty-servlet-9.2.15.v20160210.jar:9.2.15.v20160210]
> > > > at
> > > > org.springframework.security.web.FilterChainProxy$
> > > > VirtualFilterChain.doFilter(FilterChainProxy.java:369)
> > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > > at
> > > > org.springframework.security.web.access.intercept.
> > > > FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
> > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > > at
> > > > org.springframework.security.web.access.intercept.
> > > > FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.
> java:83)
> > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > > at
> > > > org.springframework.security.web.FilterChainProxy$
> > > > VirtualFilterChain.doFilter(FilterChainProxy.java:381)
> > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > > at
> > > > org.springframework.security.web.access.ExceptionTranslationFilter.
> > > > doFilter(ExceptionTranslationFilter.java:97)
> > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > > at
> > > > org.springframework.security.web.FilterChainProxy$
> > > > VirtualFilterChain.doFilter(FilterChainProxy.java:381)
> > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > > at
> > > > org.springframework.security.web.session.SessionManagementFilter.
> > > doFilter(
> > > > SessionManagementFilter.java:100)
> > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > > at
> > > > org.springframework.security.web.FilterChainProxy$
> > > > VirtualFilterChain.doFilter(FilterChainProxy.java:381)
> > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > > at
> > > > org.springframework.security.web.authentication.
> > > > AnonymousAuthenticationFilter.doFilter(
> AnonymousAuthenticationFilter.
> > > > java:78)
> > > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > >
> > > > I have been able do see what is happening when we get the problem
> > > locally,
> > > > it is the importedSources for the file currently compiled that
> contains
> > > > null.
> > > > And from what I have seen (if I'm remembering correctly) it has been
> > the
> > > > first element in the list that is null and the other items in the
> list
> > > > contains the correct imports. We are using "classpath!" imports for
> > > usually
> > > > one or two imports.
> > > >
> > > > I cannot see any point where it is possible to add null to the list
> of
> > > > imported sources from reviewing the code that adds the imports in the
> > > Less
> > > > files.
> > > >
> > > > Furthermore we are adding Less a variable using
> > > > LessCompilerConfigurationFactory and clear the LessCacheManager upon
> > > > changes to this variable, however during the tests in our Selenium
> Grid
> > > > this shouldn't happen.
> > > >
> > > > My problem is that I'm not able to reproduce the issue.
> > > > Have someone encountered this problem before? Or does someone have
> > hints
> > > on
> > > > how to proceed with the troubleshooting?
> > > >
> > > > Regards
> > > > Erik Strid
> > > >
> > >
> >
>

Re: Issue using Wicket Bootstap Less

Posted by Martin Grigorov <mg...@apache.org>.
Hi Erik,

Many thanks for investigating this!

Please create a Pull Request!
It seems you already know how to fix it!
Thank you!

Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov

On Tue, Sep 20, 2016 at 2:16 PM, Erik Strid <st...@gmail.com> wrote:

> Hi Martin,
>
> I have finally found some time to investigate this issue further.
>
> It seems that clearing the cache only will clear the variable contentCache
> and not both the contentCache and urlSourceCache variables in
> LessCacheManager. A cleared cache will trigger a recompile in
> LessCacheManager.getCss(URLSource) on a cached URLSource, in this case
> will
> the compiler add the imported files to the importedSources list, returned
> by AbstractHierarchicalSource.getImportedSources(), once more. And the
> importedSources list will grow with imported files after each call to
> clearCache.
> The NPE that we get is a result of the shared URLSource and a race
> condition in AbstractHierarchicalSource.addImportedSource(LessSource)
> (importedSources isn't thread safe).
>
> Furthermore I think there is an issue with the
> LessCacheManager.getCss(URLSource). For the first file that is compiled
> will the list of imported sources for lessSource be empty. The
> lastModifiedTime will then only contain the timestamp for the file and not
> the last modified time of the file itself or its imports, so the
> lastModifiedTime will be incorrect when adding the compiled source to the
> timeToContentMap the first time.
>
> You should be able to see these two issues in this commit
> https://github.com/strido/wicket-bootstrap/commit/
> 2be0d8d4294162bd103e63c74198d90457e6069e
>
> Should I report this to your issue tracker (
> https://github.com/l0rdn1kk0n/wicket-bootstrap/issues)?
>
> Regards
> Erik Strid
>
> On Tue, Sep 6, 2016 at 10:49 AM, Martin Grigorov <mg...@apache.org>
> wrote:
>
> > Hi,
> >
> > If the list of imported sources contains "null" then you should ask at
> > https://github.com/SomMeri/less4j/issues.
> >
> > What I can do in Wicket-Bootstrap-Less is to add protection against this
> > NullPointerException by ignoring all "null"s. But this may lead to broken
> > UI!
> > Please file an issue at
> > https://github.com/l0rdn1kk0n/wicket-bootstrap/issues if you think this
> > could help.
> >
> > Martin Grigorov
> > Wicket Training and Consulting
> > https://twitter.com/mtgrigorov
> >
> > On Tue, Sep 6, 2016 at 10:39 AM, Erik Strid <st...@gmail.com>
> wrote:
> >
> > > Hi.
> > >
> > > We are using Wicket Bootstap Less in our project and have an issue with
> > the
> > > Less compilation.
> > > From time to time the compilation fails for some of the Less files in
> our
> > > project, usually we see this in our Selenium Grid but it have happened
> > > locally as well.
> > >
> > > When the compilation fails we get this stacktrace:
> > >
> > > java.lang.NullPointerException: null
> > > at
> > > de.agilecoders.wicket.less.LessCacheManager.findLastModified(
> > > LessCacheManager.java:159)
> > > ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> > > at
> > > de.agilecoders.wicket.less.LessCacheManager.findLastModified(
> > > LessCacheManager.java:165)
> > > ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> > > at
> > > de.agilecoders.wicket.less.LessCacheManager.getLastModifiedTime(
> > > LessCacheManager.java:145)
> > > ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> > > at
> > > de.agilecoders.wicket.less.LessResourceStream.lastModifiedTime(
> > > LessResourceStream.java:65)
> > > ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> > > at
> > > org.apache.wicket.request.resource.PackageResource.
> newResourceResponse(
> > > PackageResource.java:295)
> > > ~[wicket-core-6.22.0.jar:6.22.0]
> > > at
> > > org.apache.wicket.request.resource.AbstractResource.
> > > respond(AbstractResource.java:498)
> > > ~[wicket-core-6.22.0.jar:6.22.0]
> > > at
> > > org.apache.wicket.request.handler.resource.ResourceRequestHandler.
> > respond(
> > > ResourceRequestHandler.java:75)
> > > ~[wicket-core-6.22.0.jar:6.22.0]
> > > at
> > > org.apache.wicket.request.handler.resource.
> > ResourceReferenceRequestHandle
> > > r.respond(ResourceReferenceRequestHandler.java:108)
> > > ~[wicket-core-6.22.0.jar:6.22.0]
> > > at
> > > org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(
> > > RequestCycle.java:890)
> > > ~[wicket-core-6.22.0.jar:6.22.0]
> > > at
> > > org.apache.wicket.request.RequestHandlerStack.execute(
> > > RequestHandlerStack.java:64)
> > > ~[wicket-request-6.22.0.jar:6.22.0]
> > > at
> > > org.apache.wicket.request.cycle.RequestCycle.execute(
> > > RequestCycle.java:261)
> > > [wicket-core-6.22.0.jar:6.22.0]
> > > at
> > > org.apache.wicket.request.cycle.RequestCycle.
> > processRequest(RequestCycle.
> > > java:218)
> > > [wicket-core-6.22.0.jar:6.22.0]
> > > at
> > > org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(
> > > RequestCycle.java:289)
> > > [wicket-core-6.22.0.jar:6.22.0]
> > > at
> > > org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(
> > > WicketFilter.java:259)
> > > [wicket-core-6.22.0.jar:6.22.0]
> > > at
> > > org.apache.wicket.protocol.http.WicketFilter.
> > processRequest(WicketFilter.
> > > java:201)
> > > [wicket-core-6.22.0.jar:6.22.0]
> > > at
> > > org.apache.wicket.protocol.http.WicketFilter.doFilter(
> > > WicketFilter.java:282)
> > > [wicket-core-6.22.0.jar:6.22.0]
> > > at
> > > org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> > > doFilter(ServletHandler.java:1652)
> > > [jetty-servlet-9.2.15.v20160210.jar:9.2.15.v20160210]
> > > at
> > > org.springframework.security.web.FilterChainProxy$
> > > VirtualFilterChain.doFilter(FilterChainProxy.java:369)
> > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > at
> > > org.springframework.security.web.access.intercept.
> > > FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
> > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > at
> > > org.springframework.security.web.access.intercept.
> > > FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
> > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > at
> > > org.springframework.security.web.FilterChainProxy$
> > > VirtualFilterChain.doFilter(FilterChainProxy.java:381)
> > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > at
> > > org.springframework.security.web.access.ExceptionTranslationFilter.
> > > doFilter(ExceptionTranslationFilter.java:97)
> > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > at
> > > org.springframework.security.web.FilterChainProxy$
> > > VirtualFilterChain.doFilter(FilterChainProxy.java:381)
> > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > at
> > > org.springframework.security.web.session.SessionManagementFilter.
> > doFilter(
> > > SessionManagementFilter.java:100)
> > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > at
> > > org.springframework.security.web.FilterChainProxy$
> > > VirtualFilterChain.doFilter(FilterChainProxy.java:381)
> > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > > at
> > > org.springframework.security.web.authentication.
> > > AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.
> > > java:78)
> > > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > >
> > > I have been able do see what is happening when we get the problem
> > locally,
> > > it is the importedSources for the file currently compiled that contains
> > > null.
> > > And from what I have seen (if I'm remembering correctly) it has been
> the
> > > first element in the list that is null and the other items in the list
> > > contains the correct imports. We are using "classpath!" imports for
> > usually
> > > one or two imports.
> > >
> > > I cannot see any point where it is possible to add null to the list of
> > > imported sources from reviewing the code that adds the imports in the
> > Less
> > > files.
> > >
> > > Furthermore we are adding Less a variable using
> > > LessCompilerConfigurationFactory and clear the LessCacheManager upon
> > > changes to this variable, however during the tests in our Selenium Grid
> > > this shouldn't happen.
> > >
> > > My problem is that I'm not able to reproduce the issue.
> > > Have someone encountered this problem before? Or does someone have
> hints
> > on
> > > how to proceed with the troubleshooting?
> > >
> > > Regards
> > > Erik Strid
> > >
> >
>

Re: Issue using Wicket Bootstap Less

Posted by Erik Strid <st...@gmail.com>.
Hi Martin,

I have finally found some time to investigate this issue further.

It seems that clearing the cache only will clear the variable contentCache
and not both the contentCache and urlSourceCache variables in
LessCacheManager. A cleared cache will trigger a recompile in
LessCacheManager.getCss(URLSource) on a cached URLSource, in this case will
the compiler add the imported files to the importedSources list, returned
by AbstractHierarchicalSource.getImportedSources(), once more. And the
importedSources list will grow with imported files after each call to
clearCache.
The NPE that we get is a result of the shared URLSource and a race
condition in AbstractHierarchicalSource.addImportedSource(LessSource)
(importedSources isn't thread safe).

Furthermore I think there is an issue with the
LessCacheManager.getCss(URLSource). For the first file that is compiled
will the list of imported sources for lessSource be empty. The
lastModifiedTime will then only contain the timestamp for the file and not
the last modified time of the file itself or its imports, so the
lastModifiedTime will be incorrect when adding the compiled source to the
timeToContentMap the first time.

You should be able to see these two issues in this commit
https://github.com/strido/wicket-bootstrap/commit/2be0d8d4294162bd103e63c74198d90457e6069e

Should I report this to your issue tracker (
https://github.com/l0rdn1kk0n/wicket-bootstrap/issues)?

Regards
Erik Strid

On Tue, Sep 6, 2016 at 10:49 AM, Martin Grigorov <mg...@apache.org>
wrote:

> Hi,
>
> If the list of imported sources contains "null" then you should ask at
> https://github.com/SomMeri/less4j/issues.
>
> What I can do in Wicket-Bootstrap-Less is to add protection against this
> NullPointerException by ignoring all "null"s. But this may lead to broken
> UI!
> Please file an issue at
> https://github.com/l0rdn1kk0n/wicket-bootstrap/issues if you think this
> could help.
>
> Martin Grigorov
> Wicket Training and Consulting
> https://twitter.com/mtgrigorov
>
> On Tue, Sep 6, 2016 at 10:39 AM, Erik Strid <st...@gmail.com> wrote:
>
> > Hi.
> >
> > We are using Wicket Bootstap Less in our project and have an issue with
> the
> > Less compilation.
> > From time to time the compilation fails for some of the Less files in our
> > project, usually we see this in our Selenium Grid but it have happened
> > locally as well.
> >
> > When the compilation fails we get this stacktrace:
> >
> > java.lang.NullPointerException: null
> > at
> > de.agilecoders.wicket.less.LessCacheManager.findLastModified(
> > LessCacheManager.java:159)
> > ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> > at
> > de.agilecoders.wicket.less.LessCacheManager.findLastModified(
> > LessCacheManager.java:165)
> > ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> > at
> > de.agilecoders.wicket.less.LessCacheManager.getLastModifiedTime(
> > LessCacheManager.java:145)
> > ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> > at
> > de.agilecoders.wicket.less.LessResourceStream.lastModifiedTime(
> > LessResourceStream.java:65)
> > ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> > at
> > org.apache.wicket.request.resource.PackageResource.newResourceResponse(
> > PackageResource.java:295)
> > ~[wicket-core-6.22.0.jar:6.22.0]
> > at
> > org.apache.wicket.request.resource.AbstractResource.
> > respond(AbstractResource.java:498)
> > ~[wicket-core-6.22.0.jar:6.22.0]
> > at
> > org.apache.wicket.request.handler.resource.ResourceRequestHandler.
> respond(
> > ResourceRequestHandler.java:75)
> > ~[wicket-core-6.22.0.jar:6.22.0]
> > at
> > org.apache.wicket.request.handler.resource.
> ResourceReferenceRequestHandle
> > r.respond(ResourceReferenceRequestHandler.java:108)
> > ~[wicket-core-6.22.0.jar:6.22.0]
> > at
> > org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(
> > RequestCycle.java:890)
> > ~[wicket-core-6.22.0.jar:6.22.0]
> > at
> > org.apache.wicket.request.RequestHandlerStack.execute(
> > RequestHandlerStack.java:64)
> > ~[wicket-request-6.22.0.jar:6.22.0]
> > at
> > org.apache.wicket.request.cycle.RequestCycle.execute(
> > RequestCycle.java:261)
> > [wicket-core-6.22.0.jar:6.22.0]
> > at
> > org.apache.wicket.request.cycle.RequestCycle.
> processRequest(RequestCycle.
> > java:218)
> > [wicket-core-6.22.0.jar:6.22.0]
> > at
> > org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(
> > RequestCycle.java:289)
> > [wicket-core-6.22.0.jar:6.22.0]
> > at
> > org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(
> > WicketFilter.java:259)
> > [wicket-core-6.22.0.jar:6.22.0]
> > at
> > org.apache.wicket.protocol.http.WicketFilter.
> processRequest(WicketFilter.
> > java:201)
> > [wicket-core-6.22.0.jar:6.22.0]
> > at
> > org.apache.wicket.protocol.http.WicketFilter.doFilter(
> > WicketFilter.java:282)
> > [wicket-core-6.22.0.jar:6.22.0]
> > at
> > org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> > doFilter(ServletHandler.java:1652)
> > [jetty-servlet-9.2.15.v20160210.jar:9.2.15.v20160210]
> > at
> > org.springframework.security.web.FilterChainProxy$
> > VirtualFilterChain.doFilter(FilterChainProxy.java:369)
> > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > at
> > org.springframework.security.web.access.intercept.
> > FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
> > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > at
> > org.springframework.security.web.access.intercept.
> > FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
> > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > at
> > org.springframework.security.web.FilterChainProxy$
> > VirtualFilterChain.doFilter(FilterChainProxy.java:381)
> > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > at
> > org.springframework.security.web.access.ExceptionTranslationFilter.
> > doFilter(ExceptionTranslationFilter.java:97)
> > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > at
> > org.springframework.security.web.FilterChainProxy$
> > VirtualFilterChain.doFilter(FilterChainProxy.java:381)
> > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > at
> > org.springframework.security.web.session.SessionManagementFilter.
> doFilter(
> > SessionManagementFilter.java:100)
> > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > at
> > org.springframework.security.web.FilterChainProxy$
> > VirtualFilterChain.doFilter(FilterChainProxy.java:381)
> > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> > at
> > org.springframework.security.web.authentication.
> > AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.
> > java:78)
> > [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> >
> > I have been able do see what is happening when we get the problem
> locally,
> > it is the importedSources for the file currently compiled that contains
> > null.
> > And from what I have seen (if I'm remembering correctly) it has been the
> > first element in the list that is null and the other items in the list
> > contains the correct imports. We are using "classpath!" imports for
> usually
> > one or two imports.
> >
> > I cannot see any point where it is possible to add null to the list of
> > imported sources from reviewing the code that adds the imports in the
> Less
> > files.
> >
> > Furthermore we are adding Less a variable using
> > LessCompilerConfigurationFactory and clear the LessCacheManager upon
> > changes to this variable, however during the tests in our Selenium Grid
> > this shouldn't happen.
> >
> > My problem is that I'm not able to reproduce the issue.
> > Have someone encountered this problem before? Or does someone have hints
> on
> > how to proceed with the troubleshooting?
> >
> > Regards
> > Erik Strid
> >
>

Re: Issue using Wicket Bootstap Less

Posted by Martin Grigorov <mg...@apache.org>.
Hi,

If the list of imported sources contains "null" then you should ask at
https://github.com/SomMeri/less4j/issues.

What I can do in Wicket-Bootstrap-Less is to add protection against this
NullPointerException by ignoring all "null"s. But this may lead to broken
UI!
Please file an issue at
https://github.com/l0rdn1kk0n/wicket-bootstrap/issues if you think this
could help.

Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov

On Tue, Sep 6, 2016 at 10:39 AM, Erik Strid <st...@gmail.com> wrote:

> Hi.
>
> We are using Wicket Bootstap Less in our project and have an issue with the
> Less compilation.
> From time to time the compilation fails for some of the Less files in our
> project, usually we see this in our Selenium Grid but it have happened
> locally as well.
>
> When the compilation fails we get this stacktrace:
>
> java.lang.NullPointerException: null
> at
> de.agilecoders.wicket.less.LessCacheManager.findLastModified(
> LessCacheManager.java:159)
> ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> at
> de.agilecoders.wicket.less.LessCacheManager.findLastModified(
> LessCacheManager.java:165)
> ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> at
> de.agilecoders.wicket.less.LessCacheManager.getLastModifiedTime(
> LessCacheManager.java:145)
> ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> at
> de.agilecoders.wicket.less.LessResourceStream.lastModifiedTime(
> LessResourceStream.java:65)
> ~[wicket-bootstrap-less-0.9.16.jar:0.9.16]
> at
> org.apache.wicket.request.resource.PackageResource.newResourceResponse(
> PackageResource.java:295)
> ~[wicket-core-6.22.0.jar:6.22.0]
> at
> org.apache.wicket.request.resource.AbstractResource.
> respond(AbstractResource.java:498)
> ~[wicket-core-6.22.0.jar:6.22.0]
> at
> org.apache.wicket.request.handler.resource.ResourceRequestHandler.respond(
> ResourceRequestHandler.java:75)
> ~[wicket-core-6.22.0.jar:6.22.0]
> at
> org.apache.wicket.request.handler.resource.ResourceReferenceRequestHandle
> r.respond(ResourceReferenceRequestHandler.java:108)
> ~[wicket-core-6.22.0.jar:6.22.0]
> at
> org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(
> RequestCycle.java:890)
> ~[wicket-core-6.22.0.jar:6.22.0]
> at
> org.apache.wicket.request.RequestHandlerStack.execute(
> RequestHandlerStack.java:64)
> ~[wicket-request-6.22.0.jar:6.22.0]
> at
> org.apache.wicket.request.cycle.RequestCycle.execute(
> RequestCycle.java:261)
> [wicket-core-6.22.0.jar:6.22.0]
> at
> org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.
> java:218)
> [wicket-core-6.22.0.jar:6.22.0]
> at
> org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(
> RequestCycle.java:289)
> [wicket-core-6.22.0.jar:6.22.0]
> at
> org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(
> WicketFilter.java:259)
> [wicket-core-6.22.0.jar:6.22.0]
> at
> org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.
> java:201)
> [wicket-core-6.22.0.jar:6.22.0]
> at
> org.apache.wicket.protocol.http.WicketFilter.doFilter(
> WicketFilter.java:282)
> [wicket-core-6.22.0.jar:6.22.0]
> at
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> doFilter(ServletHandler.java:1652)
> [jetty-servlet-9.2.15.v20160210.jar:9.2.15.v20160210]
> at
> org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:369)
> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> at
> org.springframework.security.web.access.intercept.
> FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> at
> org.springframework.security.web.access.intercept.
> FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> at
> org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:381)
> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> at
> org.springframework.security.web.access.ExceptionTranslationFilter.
> doFilter(ExceptionTranslationFilter.java:97)
> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> at
> org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:381)
> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> at
> org.springframework.security.web.session.SessionManagementFilter.doFilter(
> SessionManagementFilter.java:100)
> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> at
> org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:381)
> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
> at
> org.springframework.security.web.authentication.
> AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.
> java:78)
> [spring-security-web-3.0.7.RELEASE.jar:3.0.7.RELEASE]
>
> I have been able do see what is happening when we get the problem locally,
> it is the importedSources for the file currently compiled that contains
> null.
> And from what I have seen (if I'm remembering correctly) it has been the
> first element in the list that is null and the other items in the list
> contains the correct imports. We are using "classpath!" imports for usually
> one or two imports.
>
> I cannot see any point where it is possible to add null to the list of
> imported sources from reviewing the code that adds the imports in the Less
> files.
>
> Furthermore we are adding Less a variable using
> LessCompilerConfigurationFactory and clear the LessCacheManager upon
> changes to this variable, however during the tests in our Selenium Grid
> this shouldn't happen.
>
> My problem is that I'm not able to reproduce the issue.
> Have someone encountered this problem before? Or does someone have hints on
> how to proceed with the troubleshooting?
>
> Regards
> Erik Strid
>