Uploaded image for project: 'CMS'
  1. CMS
  2. CMS-12140

[Search service] Criterion identifier on overrided attribute

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Major Major
    • 4.8.2, 4.9.0
    • 4.8.0
    • None
    • None

      Steps to reproduce

      • Having a content type B heriting from content type A. Content type A contains an attribute attr1.
      • Create a search service on content type B with the attribute attr1 as a criteria.
      • Modify content type B to override attribute attr1 (for any reason, modify the label or make it mandatory).
      • Restart the CMS and try to display the search service.
        org.apache.cocoon.ProcessingException: Error testing the service cachability.
        	at org.ametys.web.repository.PageGenerator._saxZoneItem(PageGenerator.java:447)
        	at org.ametys.web.repository.PageGenerator._saxZoneItems(PageGenerator.java:395)
        	at org.ametys.web.repository.PageGenerator._saxZone(PageGenerator.java:322)
        	at org.ametys.web.repository.PageGenerator.generate(PageGenerator.java:243)
        	at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.processXMLPipeline(AbstractProcessingPipeline.java:581)
        	at org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipeline.processXMLPipeline(AbstractCachingProcessingPipeline.java:301)
        	at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.process(AbstractProcessingPipeline.java:782)
        	at org.apache.cocoon.components.source.impl.SitemapSource.toSAX(SitemapSource.java:414)
        	at org.apache.cocoon.components.source.SourceUtil.toSAX(SourceUtil.java:101)
        	at org.apache.cocoon.components.source.SourceUtil.parse(SourceUtil.java:321)
        	at org.apache.cocoon.sitemap.ContentAggregator.generate(ContentAggregator.java:125)
        	at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.processXMLPipeline(AbstractProcessingPipeline.java:581)
        	at org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipeline.processXMLPipeline(AbstractCachingProcessingPipeline.java:301)
        	at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.process(AbstractProcessingPipeline.java:483)
        	at org.apache.cocoon.components.treeprocessor.sitemap.SerializeNode.invoke(SerializeNode.java:144)
        	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
        	at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
        	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
        	at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
        	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
        	at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
        	at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
        	at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:178)
        	at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:254)
        	at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:118)
        	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
        	at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
        	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
        	at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
        	at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
        	at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
        	at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
        	at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:178)
        	at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:254)
        	at org.apache.cocoon.Cocoon.process(Cocoon.java:699)
        	at org.ametys.runtime.servlet.RuntimeServlet.service(RuntimeServlet.java:717)
        	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
        	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
        	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
        	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
        	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
        	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
        	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
        	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
        	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678)
        	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
        	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
        	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
        	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
        	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:853)
        	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1587)
        	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
        	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        	at java.base/java.lang.Thread.run(Thread.java:833)
        Caused by: java.lang.NullPointerException: The SearchCriterionDefinition for id 'CourseSearchable$indexingField$org.ametys.plugins.odf.Content.programItem$orgUnit' must be non null
        	at java.base/java.util.Objects.requireNonNull(Objects.java:233)
        	at org.ametys.web.frontoffice.search.instance.SearchServiceInstanceFactory._createSearchCriterion(SearchServiceInstanceFactory.java:260)
        	at org.ametys.web.frontoffice.search.instance.SearchServiceInstanceFactory.lambda$_createCriterionTree$0(SearchServiceInstanceFactory.java:252)
        	at org.ametys.cms.search.advanced.TreeMaker._create(TreeMaker.java:68)
        	at org.ametys.cms.search.advanced.TreeMaker.lambda$_create$0(TreeMaker.java:76)
        	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
        	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
        	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
        	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
        	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
        	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
        	at org.ametys.cms.search.advanced.TreeMaker._create(TreeMaker.java:78)
        	at org.ametys.cms.search.advanced.TreeMaker.create(TreeMaker.java:53)
        	at org.ametys.web.frontoffice.search.instance.SearchServiceInstanceFactory._createCriterionTree(SearchServiceInstanceFactory.java:253)
        	at org.ametys.web.frontoffice.search.instance.SearchServiceInstanceFactory.createSearchServiceInstance(SearchServiceInstanceFactory.java:123)
        	at org.ametys.web.frontoffice.search.instance.SearchServiceInstanceManager.get(SearchServiceInstanceManager.java:97)
        	at org.ametys.web.frontoffice.search.SearchService.isCacheable(SearchService.java:178)
        	at org.ametys.web.repository.PageGenerator._saxZoneItem(PageGenerator.java:443)
        	... 58 more
      • Also, on modifying service parameters, the criteria is empty.

      It happens because the search criteria is stored as MyReturnable$indexingField$my.content.type.A$attr1 at first time, but at second time it search on MyReturnable$indexingField$my.content.type.B$attr1. If we modify the service parameters, to set again the attr1 as criteria, we have my.content.type.B in the criterion identifier.

      There is a similar behaviour for facets.

            Unassigned Unassigned
            bmaurel Bérénice Maurel
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: