Uploaded image for project: 'Sling'
  1. Sling
  2. SLING-11038

Change statuscode in SlingPostServlet for PersistenceException, take 2

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Open
    • Major
    • Resolution: Unresolved
    • Servlets Post 2.3.36
    • Servlets POST 2.6.2
    • Servlets
    • None

    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

      This is similar to SLING-9896, but has a different code path.

      Example stacktrace:

      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]
      

      The problem is in
      https://github.com/apache/sling-org-apache-sling-servlets-post/blob/org.apache.sling.servlets.post-2.4.2/src/main/java/org/apache/sling/servlets/post/impl/operations/AbstractPostOperation.java#L105

      public void run(final SlingHttpServletRequest request,
                          final PostResponse response,
                          final SlingPostProcessor[] processors) throws PreconditionViolatedPersistenceException, TemporaryPersistenceException {
              final VersioningConfiguration versionableConfiguration = getVersioningConfiguration(request);
              try {
                  ...
                  doRun(request, response, changes); <<== here
                  ...
              } catch (Exception e) {
                  log.error("Exception during response processing.", e);
                  response.setError(e);
              } finally {
      ...
              }
          }
      

      Attachments

        Issue Links

          Activity

            People

              rombert Robert Munteanu
              thomasm Thomas Mueller
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated: