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)