Uploaded image for project: 'XWiki Platform'
  1. XWiki Platform
  2. XWIKI-13194

Repository REST API search in the whole farm

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Major
    • 8.1-milestone-1, 7.4.3
    • 7.4.2
    • Repository
    • Default Jetty/HSQLDB on Linux (Ubuntu 15.10 / RHEL 6)
    • Unknown
    • N/A
    • N/A

    Description

      When using Extension Repository Application (ERA) on Subwiki, obtaining details (/extensions/* REST call) fails silently (No ExceptionMapper was found, but must be found in REST calls). If there is no ERA installed on main wiki and TRACE logging is enabled, following exception can be observed.

      2016-03-11 09:22:00,492 http://localhost:8080/xwiki/rest/repository/extensions/ TRACE c.x.x.XWikiException - Error number 0 in 3: Exception while hibernate execute
      org.hibernate.QueryException: could not resolve property: validExtension of: com.xpn.xwiki.objects.BaseObject [ select count ( extension.id ) from com.xpn.xwiki.doc.XWikiDocument as doc , com.xpn.xwiki.objects.BaseObject as extension where ( extension.validExtension = 1 ) and doc.fullName=extension.name and extension.className='ExtensionCode.ExtensionClass' ]
      at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:81)
      at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:75)
      at org.hibernate.persister.entity.AbstractEntityPersister.toType(AbstractEntityPersister.java:1465)
      at org.hibernate.hql.ast.tree.FromElementType.getPropertyType(FromElementType.java:315)
      at org.hibernate.hql.ast.tree.FromElement.getPropertyType(FromElement.java:487)
      at org.hibernate.hql.ast.tree.DotNode.getDataType(DotNode.java:611)
      at org.hibernate.hql.ast.tree.DotNode.prepareLhs(DotNode.java:263)
      at org.hibernate.hql.ast.tree.DotNode.resolve(DotNode.java:210)
      at org.hibernate.hql.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:117)
      at org.hibernate.hql.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:113)
      at org.hibernate.hql.ast.HqlSqlWalker.resolve(HqlSqlWalker.java:880)
      at org.hibernate.hql.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:1330)
      at org.hibernate.hql.antlr.HqlSqlBaseWalker.exprOrSubquery(HqlSqlBaseWalker.java:4471)
      at org.hibernate.hql.antlr.HqlSqlBaseWalker.comparisonExpr(HqlSqlBaseWalker.java:3944)
      at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:2047)
      at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1972)
      at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1972)
      at org.hibernate.hql.antlr.HqlSqlBaseWalker.whereClause(HqlSqlBaseWalker.java:831)
      at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:617)
      at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:301)
      at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:244)
      at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:256)
      at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:187)
      at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:138)
      at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:101)
      at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
      at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:124)
      at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156)
      at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135)
      at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1770)
      at com.xpn.xwiki.store.hibernate.query.HqlQueryExecutor.createHibernateQuery(HqlQueryExecutor.java:208)
      at com.xpn.xwiki.store.hibernate.query.HqlQueryExecutor$1.doInHibernate(HqlQueryExecutor.java:147)
      at com.xpn.xwiki.store.hibernate.query.HqlQueryExecutor$1.doInHibernate(HqlQueryExecutor.java:142)
      at com.xpn.xwiki.store.XWikiHibernateBaseStore.execute(XWikiHibernateBaseStore.java:1299)
      at com.xpn.xwiki.store.XWikiHibernateBaseStore.executeRead(XWikiHibernateBaseStore.java:1366)
      at com.xpn.xwiki.store.hibernate.query.HqlQueryExecutor.execute(HqlQueryExecutor.java:141)
      at org.xwiki.query.internal.DefaultQueryExecutorManager.execute(DefaultQueryExecutorManager.java:71)
      at org.xwiki.query.internal.DefaultQuery.execute(DefaultQuery.java:287)
      at org.xwiki.query.xwql.internal.XWQLQueryExecutor.execute(XWQLQueryExecutor.java:118)
      at org.xwiki.query.internal.DefaultQueryExecutorManager.execute(DefaultQueryExecutorManager.java:71)
      at org.xwiki.query.internal.DefaultQuery.execute(DefaultQuery.java:287)
      at org.xwiki.repository.internal.resources.AbstractExtensionRESTResource.getExtensionsCountResult(AbstractExtensionRESTResource.java:198)
      at org.xwiki.repository.internal.resources.ExtensionsRESTResource.getExtensions(ExtensionsRESTResource.java:57)
      at sun.reflect.GeneratedMethodAccessor581.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:497)
      at org.restlet.ext.jaxrs.internal.wrappers.AbstractMethodWrapper.internalInvoke(AbstractMethodWrapper.java:171)
      at org.restlet.ext.jaxrs.internal.wrappers.ResourceMethod.invoke(ResourceMethod.java:291)
      at org.restlet.ext.jaxrs.JaxRsRestlet.invokeMethod(JaxRsRestlet.java:1043)
      at org.restlet.ext.jaxrs.JaxRsRestlet.handle(JaxRsRestlet.java:792)
      at org.restlet.routing.Filter.doHandle(Filter.java:159)
      at org.restlet.routing.Filter.handle(Filter.java:206)
      at org.restlet.routing.Router.doHandle(Router.java:500)
      at org.restlet.routing.Router.handle(Router.java:740)
      at org.restlet.routing.Filter.doHandle(Filter.java:159)
      at org.restlet.routing.Filter.handle(Filter.java:206)
      at org.restlet.routing.Filter.doHandle(Filter.java:159)
      at org.restlet.routing.Filter.handle(Filter.java:206)
      at org.restlet.routing.Filter.doHandle(Filter.java:159)
      at org.restlet.routing.Filter.handle(Filter.java:206)
      at org.restlet.routing.Filter.doHandle(Filter.java:159)
      at org.restlet.routing.Filter.handle(Filter.java:206)
      at org.restlet.routing.Filter.doHandle(Filter.java:159)
      at org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.java:154)
      at org.restlet.routing.Filter.handle(Filter.java:206)
      at org.restlet.routing.Filter.doHandle(Filter.java:159)
      at org.restlet.routing.Filter.handle(Filter.java:206)
      at org.restlet.engine.ChainHelper.handle(ChainHelper.java:114)
      at org.restlet.engine.application.ApplicationHelper.handle(ApplicationHelper.java:75)
      at org.restlet.Application.handle(Application.java:391)
      at org.restlet.routing.Filter.doHandle(Filter.java:159)
      at org.restlet.routing.Filter.handle(Filter.java:206)
      at org.restlet.routing.Router.doHandle(Router.java:500)
      at org.restlet.routing.Router.handle(Router.java:740)
      at org.restlet.routing.Filter.doHandle(Filter.java:159)
      at org.restlet.routing.Filter.handle(Filter.java:206)
      at org.restlet.routing.Router.doHandle(Router.java:500)
      at org.restlet.routing.Router.handle(Router.java:740)
      at org.restlet.routing.Filter.doHandle(Filter.java:159)
      at org.restlet.routing.Filter.handle(Filter.java:206)
      at org.restlet.engine.ChainHelper.handle(ChainHelper.java:114)
      at org.restlet.Component.handle(Component.java:391)
      at org.restlet.Server.handle(Server.java:491)
      at org.restlet.engine.ServerHelper.handle(ServerHelper.java:74)
      at org.restlet.engine.http.HttpServerHelper.handle(HttpServerHelper.java:153)
      at org.restlet.ext.servlet.ServerServlet.service(ServerServlet.java:1031)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
      at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:808)
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
      at org.xwiki.wysiwyg.server.filter.XWikiContextInitializationFilter.doFilter(XWikiContextInitializationFilter.java:85)
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
      at org.xwiki.container.servlet.filters.internal.SetHTTPHeaderFilter.doFilter(SetHTTPHeaderFilter.java:63)
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
      at org.xwiki.container.servlet.filters.internal.SavedRequestRestorerFilter.doFilter(SavedRequestRestorerFilter.java:208)
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
      at org.xwiki.container.servlet.filters.internal.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:111)
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
      at org.xwiki.resource.servlet.RoutingFilter.doFilter(RoutingFilter.java:137)
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
      at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
      at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
      at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)
      at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
      at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
      at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
      at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
      at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
      at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
      at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215)
      at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110)
      at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
      at org.eclipse.jetty.server.Server.handle(Server.java:499)
      at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)
      at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
      at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)
      at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
      at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
      at java.lang.Thread.run(Thread.java:745)

      This happens even though there is existing extension on subwiki and it's searchable. If ERA is installed on main wiki, /extensions/ endpoint returns empty result (no exception whatsoever).

      Steps to reproduce:

      1. Install clean XWiki 8 and start it
      2. Install Extension Repository Application on newly created extensions subwiki
      3. Install Repository API on main wiki
      4. Modify xwiki.properties and append following lines

        extension.repositories=maven-xwiki:maven:http://nexus.xwiki.org/nexus/content/groups/public
        extension.repositories=extensions.xwiki.org:xwiki:http://extensions.xwiki.org/xwiki/rest/
        extension.repositories=localxr:xwiki:http://localhost:8080/xwiki/rest/

      5. Start XWiki, verify http://localhost:8080/xwiki/rest/repository/ is accessible
      6. Create new extension package on extensions subwiki, verify it's indexed by Solr (http://localhost:8080/xwiki/rest/repository/search)
      7. Open Extension Manager on Main Wiki

      Expected behaviour: Created extension is searchable and installable via EM
      Actual behaviour: Created extension is searchable, but installing or showing details/versions fails with We couldn't find any extension with id ...

      Thanks

      Attachments

        Activity

          People

            tmortagne Thomas Mortagne
            DarkKnightCZ Lukas Raska
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: