Uploaded image for project: 'Jackrabbit Content Repository'
  1. Jackrabbit Content Repository
  2. JCR-3228

WebDav/DavEx remoting throws workspace mismatch exceptions when running on port 80

    XMLWordPrintableJSON

Details

    Description

      When running on port 80, the webdav remoting shows unexpected behavior such as listing incomplete folder content.
      Moreover the following exception is thrown:

      The exception I get: java.lang.IllegalArgumentException: Workspace missmatch.
      [org.apache.jackrabbit.spi2dav.IdURICache.add(IdURICache.java:60),
      org.apache.jackrabbit.spi2dav.URIResolverImpl.getItemUri(URIResolverImpl.java:129),
      org.apache.jackrabbit.spi2dav.RepositoryServiceImpl.getItemUri(RepositoryServiceImpl.java:391),
      org.apache.jackrabbit.spi2davex.RepositoryServiceImpl.getPath(RepositoryServiceImpl.java:149),
      org.apache.jackrabbit.spi2davex.RepositoryServiceImpl.getPath(RepositoryServiceImpl.java:138),
      org.apache.jackrabbit.spi2davex.RepositoryServiceImpl.getItemInfos(RepositoryServiceImpl.java:265),
      org.apache.jackrabbit.jcr2spi.state.WorkspaceItemStateFactory.createNodeState(WorkspaceItemStateFactory.java:93),
      org.apache.jackrabbit.jcr2spi.state.TransientISFactory.createNodeState(TransientISFactory.java:97),
      org.apache.jackrabbit.jcr2spi.hierarchy.NodeEntryImpl.doResolve(NodeEntryImpl.java:990),
      org.apache.jackrabbit.jcr2spi.hierarchy.HierarchyEntryImpl.resolve(HierarchyEntryImpl.java:133),
      org.apache.jackrabbit.jcr2spi.hierarchy.HierarchyEntryImpl.getItemState(HierarchyEntryImpl.java:252),
      org.apache.jackrabbit.jcr2spi.hierarchy.NodeEntryImpl.getItemState(NodeEntryImpl.java:71),
      org.apache.jackrabbit.jcr2spi.ItemManagerImpl.getItem(ItemManagerImpl.java:199),
      org.apache.jackrabbit.jcr2spi.LazyItemIterator.prefetchNext(LazyItemIterator.java:138),
      org.apache.jackrabbit.jcr2spi.LazyItemIterator.next(LazyItemIterator.java:251),
      org.apache.jackrabbit.jcr2spi.LazyItemIterator.nextNode(LazyItemIterator.java:154),
      com.adobe.drive.connector.adep.GetChildrenHandler.execute(GetChildrenHandler.java:121),
      com.adobe.drive.connector.adep.GetChildrenHandler.execute(GetChildrenHandler.java:43),
      com.adobe.drive.model.internal.synchronization.AssetSynchronizer.execute(AssetSynchronizer.java:432),
      com.adobe.drive.model.internal.synchronization.AssetSynchronizer.synchronizeStructure(AssetSynchronizer.java:352),
      com.adobe.drive.internal.data.manager.DataManager.getChildren(DataManager.java:2602),
      com.adobe.drive.internal.biz.versioncue.service.call.GetChildren$1.call(GetChildren.java:98),
      com.adobe.drive.internal.biz.versioncue.service.call.GetChildren$1.call(GetChildren.java:73),
      com.adobe.drive.model.context.Context.run(Context.java:88),
      com.adobe.drive.internal.biz.versioncue.service.call.GetChildren.executeItem(GetChildren.java:126),
      com.adobe.drive.internal.biz.versioncue.service.call.GetChildren.executeItem(GetChildren.java:50),
      com.adobe.drive.internal.biz.versioncue.service.call.VersionCueCall$1.run(VersionCueCall.java:125),
      com.adobe.drive.internal.biz.versioncue.service.call.VersionCueCall$1.run(VersionCueCall.java:119),
      com.adobe.drive.data.internal.persistence.PersistenceRunner.run(PersistenceRunner.java:119),
      com.adobe.drive.internal.biz.versioncue.service.call.VersionCueCall.execute(VersionCueCall.java:134),
      com.adobe.drive.internal.biz.versioncue.service.VersionCueService.getChildren(VersionCueService.java:269),
      com.adobe.drive.ncomm.versioncue.GetChildren.handle(GetChildren.java:59),
      com.adobe.drive.ncomm.versioncue.VersionCueRequestHandler$1.run(VersionCueRequestHandler.java:185),
      com.adobe.drive.core.internal.jobs.JobHandler$JobWrapper.run(JobHandler.java:270),
      com.adobe.drive.core.internal.jobs.JobHandler$JobWrapper.run(JobHandler.java:286),
      java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886),
      java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908),
      java.lang.Thread.run(Thread.java:680)]

      I have tracked this issue and actually the HTTP "Host" header which is used to identify the webdav server does not contain the port (only the host) when running on port 80, whereas it contains the <host>:<port> when running on any other port.

      Attachments

        1. JCR-3228.diff
          3 kB
          Julian Reschke

        Issue Links

          Activity

            People

              reschke Julian Reschke
              marett Timothee Maret
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: