[ 
https://issues.apache.org/jira/browse/SLING-11038?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Thomas Mueller updated SLING-11038:
-----------------------------------
    Description: 
When the SlingPostServlet receives a PersistenceExceptions (e.g. when trying to 
POST to a read-only resource), Resource at '...' is not modifiable, then a 500 
is returned

Example stacktrace:
{noformat}
03.01.2022 10:45:54.476 *ERROR* [179.60.150.135 [1641206754473] POST 
/content/dpc/inpro-seal//it/search.html HTTP/1.1] 
org.apache.sling.servlets.post.impl.operations.ModifyOperation Exception during 
response processing.
org.apache.sling.api.resource.PersistenceException: Resource at 
'/content/dpc/inpro-seal/it/search' is not modifiable.
        at 
org.apache.sling.servlets.post.impl.helper.SlingPropertyValueHandler.setProperty(SlingPropertyValueHandler.java:114)
 [org.apache.sling.servlets.post:2.4.2]
        at 
org.apache.sling.servlets.post.impl.operations.ModifyOperation.writeContent(ModifyOperation.java:372)
 [org.apache.sling.servlets.post:2.4.2]
        at 
org.apache.sling.servlets.post.impl.operations.ModifyOperation.doRun(ModifyOperation.java:93)
 [org.apache.sling.servlets.post:2.4.2]
        at 
org.apache.sling.servlets.post.impl.operations.AbstractPostOperation.run(AbstractPostOperation.java:105)
 [org.apache.sling.servlets.post:2.4.2]
        at 
org.apache.sling.servlets.post.impl.SlingPostServlet.doPost(SlingPostServlet.java:243)
 [org.apache.sling.servlets.post:2.4.2]
        at 
org.apache.sling.api.servlets.SlingAllMethodsServlet.mayService(SlingAllMethodsServlet.java:146)
 [org.apache.sling.api:2.22.0]
        at 
org.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.java:342)
 [org.apache.sling.api:2.22.0]
        at 
org.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.java:374)
 [org.apache.sling.api:2.22.0]
        at 
org.apache.sling.engine.impl.request.RequestData.service(RequestData.java:552) 
[org.apache.sling.engine:2.7.2]
        at 
org.apache.sling.engine.impl.filter.SlingComponentFilterChain.render(SlingComponentFilterChain.java:44)
 [org.apache.sling.engine:2.7.2]
{noformat}


  was:
When the SlingPostServlet receives a PersistenceExceptions while trying to 
persist the changes, it should not throw an internal server error, but a 
statuscode of 405, because this behavior is expected.

Example stacktrace:


{noformat}
11.11.2020 11:18:38.418 *ERROR* [172.16.123.101 [1605093518414] POST 
/foo/bar.html HTTP/1.1] 
org.apache.sling.servlets.post.impl.operations.ModifyOperation
Exception during response processing.
org.apache.sling.api.resource.PersistenceException: Unable to create node at 
/foo/bar.html
        at 
org.apache.sling.jcr.resource.internal.helper.jcr.JcrResourceProvider.create(JcrResourceProvider.java:477)
 [org.apache.sling.jcr.resource:3.0.22]
        at 
org.apache.sling.resourceresolver.impl.providers.stateful.AuthenticatedResourceProvider.create(AuthenticatedResourceProvider.java:182)
 [org.apache.sling.resourceresolver:1.7.0]
        at 
org.apache.sling.resourceresolver.impl.helper.ResourceResolverControl.create(ResourceResolverControl.java:381)
 [org.apache.sling.resourceresolver:1.7.0]
        at 
org.apache.sling.resourceresolver.impl.ResourceResolverImpl.create(ResourceResolverImpl.java:979)
 [org.apache.sling.resourceresolver:1.7.0]
        at 
org.apache.sling.servlets.post.impl.operations.AbstractCreateOperation.deepGetOrCreateResource(AbstractCreateOperation.java:598)
 [org.apache.sling.servlets.post:2.3.36]
        at 
org.apache.sling.servlets.post.impl.operations.AbstractCreateOperation.processCreate(AbstractCreateOperation.java:146)
 [org.apache.sling.servlets.post:2.3.36]
        at 
org.apache.sling.servlets.post.impl.operations.ModifyOperation.doRun(ModifyOperation.java:83)
 [org.apache.sling.servlets.post:2.3.36]
        at 
org.apache.sling.servlets.post.impl.operations.AbstractPostOperation.run(AbstractPostOperation.java:99)
 [org.apache.sling.servlets.post:2.3.36]
        at 
org.apache.sling.servlets.post.impl.SlingPostServlet.doPost(SlingPostServlet.java:233)
 [org.apache.sling.servlets.post:2.3.36]
        at 
org.apache.sling.api.servlets.SlingAllMethodsServlet.mayService(SlingAllMethodsServlet.java:146)
 [org.apache.sling.api:2.22.0]
        at 
org.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.java:342)
 [org.apache.sling.api:2.22.0]
                [...]        
Caused by: javax.jcr.nodetype.ConstraintViolationException: No default node 
type available for /foo/bar.html
        at 
org.apache.jackrabbit.oak.plugins.tree.TreeUtil.addChild(TreeUtil.java:234) 
[org.apache.jackrabbit.oak-security-spi:1.35.0]
        at 
org.apache.jackrabbit.oak.jcr.delegate.NodeDelegate.addChild(NodeDelegate.java:690)
 [org.apache.jackrabbit.oak-jcr:1.35.0]
        at 
org.apache.jackrabbit.oak.jcr.session.NodeImpl$5.perform(NodeImpl.java:314) 
[org.apache.jackrabbit.oak-jcr:1.35.0]
        at 
org.apache.jackrabbit.oak.jcr.session.NodeImpl$5.perform(NodeImpl.java:280) 
[org.apache.jackrabbit.oak-jcr:1.35.0]
        at 
org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:209)
 [org.apache.jackrabbit.oak-jcr:1.35.0]
        at 
org.apache.jackrabbit.oak.jcr.session.ItemImpl.perform(ItemImpl.java:112) 
[org.apache.jackrabbit.oak-jcr:1.35.0]
        at 
org.apache.jackrabbit.oak.jcr.session.NodeImpl.addNode(NodeImpl.java:280) 
[org.apache.jackrabbit.oak-jcr:1.35.0]
        at 
org.apache.jackrabbit.oak.jcr.session.NodeImpl.addNode(NodeImpl.java:265) 
[org.apache.jackrabbit.oak-jcr:1.35.0]
        at 
org.apache.sling.jcr.resource.internal.helper.jcr.JcrResourceProvider.create(JcrResourceProvider.java:448)
 [org.apache.sling.jcr.resource:3.0.22]
        ... 154 common frames omitted
{noformat}

Discussion at https://www.mail-archive.com/[email protected]/msg100122.html 
(dev@sling)

PR: https://github.com/apache/sling-org-apache-sling-servlets-post/pull/7



> Change statuscode in SlingPostServlet for PersistenceException, take 2
> ----------------------------------------------------------------------
>
>                 Key: SLING-11038
>                 URL: https://issues.apache.org/jira/browse/SLING-11038
>             Project: Sling
>          Issue Type: Improvement
>          Components: Servlets
>    Affects Versions: Servlets Post 2.3.36
>            Reporter: Thomas Mueller
>            Assignee: Robert Munteanu
>            Priority: Major
>             Fix For: Servlets POST 2.4.2
>
>
> When the SlingPostServlet receives a PersistenceExceptions (e.g. when trying 
> to POST to a read-only resource), Resource at '...' is not modifiable, then a 
> 500 is returned
> Example stacktrace:
> {noformat}
> 03.01.2022 10:45:54.476 *ERROR* [179.60.150.135 [1641206754473] POST 
> /content/dpc/inpro-seal//it/search.html HTTP/1.1] 
> org.apache.sling.servlets.post.impl.operations.ModifyOperation Exception 
> during response processing.
> org.apache.sling.api.resource.PersistenceException: Resource at 
> '/content/dpc/inpro-seal/it/search' is not modifiable.
>       at 
> org.apache.sling.servlets.post.impl.helper.SlingPropertyValueHandler.setProperty(SlingPropertyValueHandler.java:114)
>  [org.apache.sling.servlets.post:2.4.2]
>       at 
> org.apache.sling.servlets.post.impl.operations.ModifyOperation.writeContent(ModifyOperation.java:372)
>  [org.apache.sling.servlets.post:2.4.2]
>       at 
> org.apache.sling.servlets.post.impl.operations.ModifyOperation.doRun(ModifyOperation.java:93)
>  [org.apache.sling.servlets.post:2.4.2]
>       at 
> org.apache.sling.servlets.post.impl.operations.AbstractPostOperation.run(AbstractPostOperation.java:105)
>  [org.apache.sling.servlets.post:2.4.2]
>       at 
> org.apache.sling.servlets.post.impl.SlingPostServlet.doPost(SlingPostServlet.java:243)
>  [org.apache.sling.servlets.post:2.4.2]
>       at 
> org.apache.sling.api.servlets.SlingAllMethodsServlet.mayService(SlingAllMethodsServlet.java:146)
>  [org.apache.sling.api:2.22.0]
>       at 
> org.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.java:342)
>  [org.apache.sling.api:2.22.0]
>       at 
> org.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.java:374)
>  [org.apache.sling.api:2.22.0]
>       at 
> org.apache.sling.engine.impl.request.RequestData.service(RequestData.java:552)
>  [org.apache.sling.engine:2.7.2]
>       at 
> org.apache.sling.engine.impl.filter.SlingComponentFilterChain.render(SlingComponentFilterChain.java:44)
>  [org.apache.sling.engine:2.7.2]
> {noformat}



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

Reply via email to