[ https://issues.apache.org/jira/browse/OAK-1846?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14348629#comment-14348629 ]
Konrad Windszus commented on OAK-1846: -------------------------------------- To me it seems that the ImportOption {{ImportUUIDBehavior.IMPORT_UUID_COLLISION_REMOVE_EXISTING}} is not being implemented correctly in Oak (http://www.day.com/specs/jcr/2.0/11_Import.html#11.8.2%20Remove%20Existing%20Node) or at least differently than in Jackrabbit 2. Jackrabbit Filevault is using the following importer: {{session.getImportContentHandler(<path>, ImportUUIDBehavior.IMPORT_UUID_COLLISION_REMOVE_EXISTING);}} (https://github.com/apache/jackrabbit-filevault/blob/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/DocViewSAXImporter.java#L1012) That does not really work if the colliding UUID is within the version storage, it seems. You can reproduce by importing a package with a UUID which collides with a UUID already used within /jcr:system/jcr:versionStorage. > ConstraintViolationException: OakConstraint0030: Uniqueness constraint > violated for key <> > ------------------------------------------------------------------------------------------ > > Key: OAK-1846 > URL: https://issues.apache.org/jira/browse/OAK-1846 > Project: Jackrabbit Oak > Issue Type: Bug > Components: core > Affects Versions: 1.0 > Reporter: Konrad Windszus > > When I try to install a certain package via FileVault I constantly run into > those exceptions (every time with a different key): > {code} > com.day.jcr.vault.packaging.PackageException: > org.apache.jackrabbit.vault.packaging.PackageException: > javax.jcr.nodetype.ConstraintViolationException: OakConstraint0030: > Uniqueness constraint violated for key e3e49b49-4b5e-4f43-ab3a-6fef28b8b38a > at > com.day.jcr.vault.packaging.impl.JrVltJcrPackageAdapter.install(JrVltJcrPackageAdapter.java:109) > at > com.day.crx.packaging.impl.J2EEPackageManager.consoleInstall(J2EEPackageManager.java:329) > at > com.day.crx.packaging.impl.J2EEPackageManager.doPost(J2EEPackageManager.java:171) > at > com.day.crx.packaging.impl.PackageManagerServlet.doPost(PackageManagerServlet.java:144) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) > at > org.apache.felix.http.base.internal.handler.ServletHandler.doHandle(ServletHandler.java:339) > at > org.apache.felix.http.base.internal.handler.ServletHandler.handle(ServletHandler.java:300) > at > org.apache.felix.http.base.internal.dispatch.ServletPipeline.handle(ServletPipeline.java:93) > at > org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:50) > at > org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:31) > at org.apache.sling.i18n.impl.I18NFilter.doFilter(I18NFilter.java:128) > at > org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:108) > at > org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:80) > at > org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:46) > at > org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:31) > at > org.apache.felix.http.sslfilter.internal.SslFilter.doFilter(SslFilter.java:55) > at > org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:108) > at > org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:80) > at > org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:46) > at > org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:31) > at > org.apache.sling.security.impl.ReferrerFilter.doFilter(ReferrerFilter.java:290) > at > org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:108) > at > org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:80) > at > org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:46) > at > org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:31) > at > com.adobe.granite.license.impl.LicenseCheckFilter.doFilter(LicenseCheckFilter.java:298) > at > org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:108) > at > org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:80) > at > org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:46) > at > org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:31) > at > org.apache.sling.featureflags.impl.FeatureManager.doFilter(FeatureManager.java:115) > at > org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:108) > at > org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:80) > at > org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:46) > at > org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:31) > at > org.apache.sling.engine.impl.log.RequestLoggerFilter.doFilter(RequestLoggerFilter.java:75) > at > org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:108) > at > org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:80) > at > org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:46) > at > org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:31) > at > org.apache.felix.http.base.internal.dispatch.FilterPipeline.dispatch(FilterPipeline.java:76) > at > org.apache.felix.http.base.internal.dispatch.Dispatcher.dispatch(Dispatcher.java:49) > at > org.apache.felix.http.base.internal.DispatcherServlet.service(DispatcherServlet.java:67) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) > at > org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684) > at > org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:501) > at > org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:229) > at > org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086) > at > org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428) > at > org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193) > at > org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020) > at > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135) > at > org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255) > at > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) > at org.eclipse.jetty.server.Server.handle(Server.java:370) > at > org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494) > at > org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:982) > at > org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1043) > at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865) > at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240) > at > org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82) > at > org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:667) > at > org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52) > at > org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608) > at > org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543) > at java.lang.Thread.run(Thread.java:744) > Caused by: org.apache.jackrabbit.vault.packaging.PackageException: > javax.jcr.nodetype.ConstraintViolationException: OakConstraint0030: > Uniqueness constraint violated for key e3e49b49-4b5e-4f43-ab3a-6fef28b8b38a > at > org.apache.jackrabbit.vault.packaging.impl.ZipVaultPackage.extract(ZipVaultPackage.java:237) > at > org.apache.jackrabbit.vault.packaging.impl.JcrPackageImpl.extract(JcrPackageImpl.java:401) > at > org.apache.jackrabbit.vault.packaging.impl.JcrPackageImpl.install(JcrPackageImpl.java:370) > at > com.day.jcr.vault.packaging.impl.JrVltJcrPackageAdapter.install(JrVltJcrPackageAdapter.java:107) > ... 66 more > Caused by: javax.jcr.nodetype.ConstraintViolationException: > OakConstraint0030: Uniqueness constraint violated for key > e3e49b49-4b5e-4f43-ab3a-6fef28b8b38a > at > org.apache.jackrabbit.oak.api.CommitFailedException.asRepositoryException(CommitFailedException.java:225) > at > org.apache.jackrabbit.oak.api.CommitFailedException.asRepositoryException(CommitFailedException.java:212) > at > org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.newRepositoryException(SessionDelegate.java:679) > at > org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.save(SessionDelegate.java:553) > at > org.apache.jackrabbit.oak.jcr.session.SessionImpl$8.perform(SessionImpl.java:417) > at > org.apache.jackrabbit.oak.jcr.session.SessionImpl$8.perform(SessionImpl.java:414) > at > org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:308) > at > org.apache.jackrabbit.oak.jcr.session.SessionImpl.perform(SessionImpl.java:127) > at > org.apache.jackrabbit.oak.jcr.session.SessionImpl.save(SessionImpl.java:414) > at org.apache.jackrabbit.vault.fs.io.AutoSave.save(AutoSave.java:175) > at org.apache.jackrabbit.vault.fs.io.Importer.run(Importer.java:402) > at > org.apache.jackrabbit.vault.packaging.impl.ZipVaultPackage.extract(ZipVaultPackage.java:232) > ... 69 more > Caused by: org.apache.jackrabbit.oak.api.CommitFailedException: > OakConstraint0030: Uniqueness constraint violated for key > e3e49b49-4b5e-4f43-ab3a-6fef28b8b38a > at > org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexEditor.leave(PropertyIndexEditor.java:280) > at > org.apache.jackrabbit.oak.spi.commit.VisibleEditor.leave(VisibleEditor.java:64) > at > org.apache.jackrabbit.oak.plugins.index.IndexUpdate.leave(IndexUpdate.java:171) > at > org.apache.jackrabbit.oak.spi.commit.CompositeEditor.leave(CompositeEditor.java:74) > at > org.apache.jackrabbit.oak.spi.commit.EditorDiff.process(EditorDiff.java:56) > at > org.apache.jackrabbit.oak.spi.commit.EditorHook.processCommit(EditorHook.java:54) > at > org.apache.jackrabbit.oak.spi.commit.CompositeHook.processCommit(CompositeHook.java:60) > at > org.apache.jackrabbit.oak.spi.commit.CompositeHook.processCommit(CompositeHook.java:60) > at > org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore$Commit.prepare(SegmentNodeStore.java:299) > at > org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore$Commit.optimisticMerge(SegmentNodeStore.java:330) > at > org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore$Commit.execute(SegmentNodeStore.java:386) > at > org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore.merge(SegmentNodeStore.java:133) > at > org.apache.jackrabbit.oak.spi.state.ProxyNodeStore.merge(ProxyNodeStore.java:42) > at > org.apache.jackrabbit.oak.core.MutableRoot.commit(MutableRoot.java:247) > at > org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.commit(SessionDelegate.java:405) > at > org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.save(SessionDelegate.java:551) > ... 77 more > {code} > Whenever I look the key up which caused that violation, it is always > something in /jcr:system/jcr:versionStorage. > I assume that the UUIDs being generated are not unique enough. -- This message was sent by Atlassian JIRA (v6.3.4#6332)