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 <mgrigo...@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.e...@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 <mgrigo...@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.e...@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 < > mgrigo...@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.e...@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 > > > > > > > > > > > > > > > > > > > > >