Julian Sedding created SLING-12561:
--------------------------------------

             Summary: RepoInit should retry on UUID collisions
                 Key: SLING-12561
                 URL: https://issues.apache.org/jira/browse/SLING-12561
             Project: Sling
          Issue Type: Improvement
          Components: Repoinit
    Affects Versions: Repoinit JCR 1.1.52
            Reporter: Julian Sedding
            Assignee: Julian Sedding


Repoinit retries to apply the operations for some conditions already. A 
scenarios I have observed a few times is the following:
- repoinit creates groups on two nodes of the same clustered Oak repository
- groups are created with randomly computed paths
- it can happen that a group is created transiently on both cluster nodes, but 
the "save" fails on one of them, due to a constraint violation (the uuids of 
groups are derived from its principal name, IIRC)

The stack trace looks as follows, suggesting we need retries for some 
{{{}RepositoryException{}}}s as well.
{noformat}
2024-07-24 05:17:02.609 *ERROR* [Apache Sling Repository Startup Thread #1] 
com.adobe.granite.repository.impl.SlingRepositoryManager Exception in a 
SlingRepositoryInitializer, SlingRepository service registration aborted
javax.jcr.RepositoryException: Applying repoinit operation failed despite 
retry; set loglevel to DEBUG to see all exceptions. Last exception message from 
"Configuration PID 298, script[0]" was: OakConstraint0030: Uniqueness 
constraint violated property [rep:authorizableId] having value 
acme-NonProd-Author: /home/groups/D/Dm0K_dQYxvDOWTjyBIQ1, 
/home/groups/j/j9AQMlg6fyacEAiKtoiT
        at 
org.apache.sling.jcr.repoinit.impl.RepositoryInitializerFactory.applyOperations(RepositoryInitializerFactory.java:170)
 [org.apache.sling.jcr.repoinit:1.1.49.T20240528100026-01b4df0]
        at 
org.apache.sling.jcr.repoinit.impl.RepositoryInitializerFactory.processRepository(RepositoryInitializerFactory.java:145)
 [org.apache.sling.jcr.repoinit:1.1.49.T20240528100026-01b4df0]
        at 
org.apache.sling.jcr.base.AbstractSlingRepositoryManager.executeRepositoryInitializers(AbstractSlingRepositoryManager.java:627)
 [org.apache.sling.jcr.base:3.1.14]
        at 
org.apache.sling.jcr.base.AbstractSlingRepositoryManager.initializeAndRegisterRepositoryService(AbstractSlingRepositoryManager.java:575)
 [org.apache.sling.jcr.base:3.1.14]
        at 
org.apache.sling.jcr.base.AbstractSlingRepositoryManager.access$300(AbstractSlingRepositoryManager.java:96)
 [org.apache.sling.jcr.base:3.1.14]
        at 
org.apache.sling.jcr.base.AbstractSlingRepositoryManager$4.run(AbstractSlingRepositoryManager.java:544)
 [org.apache.sling.jcr.base:3.1.14]
Caused by: javax.jcr.nodetype.ConstraintViolationException: OakConstraint0030: 
Uniqueness constraint violated property [rep:authorizableId] having value 
acme-NonProd-Author: /home/groups/D/Dm0K_dQYxvDOWTjyBIQ1, 
/home/groups/j/j9AQMlg6fyacEAiKtoiT
        at 
org.apache.jackrabbit.oak.api.CommitFailedException.asRepositoryException(CommitFailedException.java:226)
 [org.apache.jackrabbit.oak-api:1.66.0]
        at 
org.apache.jackrabbit.oak.api.CommitFailedException.asRepositoryException(CommitFailedException.java:213)
 [org.apache.jackrabbit.oak-api:1.66.0]
        at 
org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.newRepositoryException(SessionDelegate.java:737)
 [org.apache.jackrabbit.oak-jcr:1.66.0]
        at 
org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.save(SessionDelegate.java:551)
 [org.apache.jackrabbit.oak-jcr:1.66.0]
        at 
org.apache.jackrabbit.oak.jcr.session.SessionImpl$9.performVoid(SessionImpl.java:459)
 [org.apache.jackrabbit.oak-jcr:1.66.0]
        at 
org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.performVoid(SessionDelegate.java:299)
 [org.apache.jackrabbit.oak-jcr:1.66.0]
        at 
org.apache.jackrabbit.oak.jcr.session.SessionImpl.save(SessionImpl.java:456) 
[org.apache.jackrabbit.oak-jcr:1.66.0]
        at 
com.adobe.granite.repository.impl.CRX3SessionImpl.save(CRX3SessionImpl.java:220)
 [com.adobe.granite.repository:1.9.6]
        at 
org.apache.sling.jcr.repoinit.impl.RepositoryInitializerFactory.lambda$applyOperationInternal$0(RepositoryInitializerFactory.java:188)
 [org.apache.sling.jcr.repoinit:1.1.49.T20240528100026-01b4df0]
        at 
org.apache.sling.jcr.repoinit.impl.RetryableOperation.apply(RetryableOperation.java:58)
 [org.apache.sling.jcr.repoinit:1.1.49.T20240528100026-01b4df0]
        at 
org.apache.sling.jcr.repoinit.impl.RepositoryInitializerFactory.applyOperationInternal(RepositoryInitializerFactory.java:185)
 [org.apache.sling.jcr.repoinit:1.1.49.T20240528100026-01b4df0]
        at 
org.apache.sling.jcr.repoinit.impl.RepositoryInitializerFactory.applyOperations(RepositoryInitializerFactory.java:166)
 [org.apache.sling.jcr.repoinit:1.1.49.T20240528100026-01b4df0]
        ... 5 common frames omitted{noformat}
 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to