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

Angela Schreiber commented on OAK-9612:
---------------------------------------

[~joerghoh], i would be equally fine with {{ConstraintViolationException}}. 

> write to a readonly builder throws a java.lang.UnsupportedOperationException
> ----------------------------------------------------------------------------
>
>                 Key: OAK-9612
>                 URL: https://issues.apache.org/jira/browse/OAK-9612
>             Project: Jackrabbit Oak
>          Issue Type: Improvement
>          Components: composite, core
>    Affects Versions: 1.40.0
>            Reporter: Joerg Hoh
>            Priority: Major
>
> I have a setup with a composite nodestore, where a write operation is 
> attempted on the read-only part of it. It throws an 
> UnsupportedOperationException and the stacktrace is like this:
> {noformat}
> java.lang.UnsupportedOperationException: This builder is read-only.
>         at 
> org.apache.jackrabbit.oak.spi.state.ReadOnlyBuilder.unsupported(ReadOnlyBuilder.java:44)
>         at 
> org.apache.jackrabbit.oak.spi.state.ReadOnlyBuilder.setChildNode(ReadOnlyBuilder.java:200)
>         at 
> org.apache.jackrabbit.oak.core.SecureNodeBuilder.setChildNode(SecureNodeBuilder.java:314)
>         at 
> org.apache.jackrabbit.oak.plugins.tree.impl.AbstractMutableTree.addChild(AbstractMutableTree.java:75)
>         at 
> org.apache.jackrabbit.oak.core.MutableTree.addChild(MutableTree.java:199)
>         at 
> org.apache.jackrabbit.oak.plugins.tree.TreeUtil.addChild(TreeUtil.java:247)
>         at 
> org.apache.jackrabbit.oak.jcr.delegate.NodeDelegate.addChild(NodeDelegate.java:690)
>         at 
> org.apache.jackrabbit.oak.jcr.session.NodeImpl$5.perform(NodeImpl.java:314)
>         at 
> org.apache.jackrabbit.oak.jcr.session.NodeImpl$5.perform(NodeImpl.java:280)
>         at 
> org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:209)
>         at 
> org.apache.jackrabbit.oak.jcr.session.ItemImpl.perform(ItemImpl.java:112)
>         at 
> org.apache.jackrabbit.oak.jcr.session.NodeImpl.addNode(NodeImpl.java:280)
>         at 
> org.apache.jackrabbit.oak.jcr.session.NodeImpl.addNode(NodeImpl.java:265)
>         at 
> org.apache.sling.jcr.resource.internal.helper.jcr.JcrResourceProvider.create(JcrResourceProvider.java:448)
> {noformat}
> Right now this exception is not handled at any layer in Oak, Sling and our 
> code, but it rather bubbles up to the request which has initiated it. Any 
> exception handling which is present to handle failed writes (for whatever 
> reason) is not triggered, because it just catches the exceptions which are 
> thrown according to the API spec of addNode().
> In this scenario this exception is expected (from the setup point of view, 
> not necessarily from the code itself), and I would appreciate this 
> UnsupportedOperationException could be converted by Oak into a 
> ConstraintViolationException, which we handle already (including the message 
> that this operation is not supported on a ReadOnlyBuilder). 



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to