You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-issues@jackrabbit.apache.org by "Konrad Windszus (JIRA)" <ji...@apache.org> on 2015/03/05 12:49:40 UTC

[jira] [Comment Edited] (OAK-1846) ConstraintViolationException: OakConstraint0030: Uniqueness constraint violated for key <>

    [ https://issues.apache.org/jira/browse/OAK-1846?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14348652#comment-14348652 ] 

Konrad Windszus edited comment on OAK-1846 at 3/5/15 11:49 AM:
---------------------------------------------------------------

The conflict resolution between Oak and Jackrabbit 2 is definitely different:

In Oak: If a node exists already at that place where it is about to be imported (but having a different UUID), the node is replaced by the one from the import with the UUID from the imported node, but no conflict handling at all is triggered (i.e. the method resolveUUIDConflict is not called, https://github.com/apache/jackrabbit-oak/blob/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/ImporterImpl.java#L488), even if there is a node somewhere in the repository already having that ID.

For Jackrabbit 2: The conflict resolver is always triggered, whenever the a node with the same ID exists somewhere in the repository (https://github.com/apache/jackrabbit/blob/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/SessionImporter.java#L408). Even in case the imported node does already exist with a different id.


was (Author: kwin):
The conflict resolution between Oak and Jackrabbit 2 is definitely different:

In Oak: If a node exists already at that place where it is about to be imported (but having a different UUID), the node is replaced by the one from the import with the UUID from the imported node, but no conflict handling at all is triggered (i.e. the method resolveUUIDConflict is not called, https://github.com/apache/jackrabbit-oak/blob/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/ImporterImpl.java#L488).

For Jackrabbit 2: The conflict resolver is always triggered, whenever the a node with the same ID exists somewhere in the repository (https://github.com/apache/jackrabbit/blob/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/SessionImporter.java#L408). Even in case the imported node does already exist with a different id.

> 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)