joerghoh commented on code in PR #56:
URL: 
https://github.com/apache/sling-org-apache-sling-engine/pull/56#discussion_r1983453353


##########
src/main/java/org/apache/sling/engine/impl/SlingHttpServletResponseImpl.java:
##########
@@ -312,6 +312,15 @@ public void setIntHeader(final String name, final int 
value) {
         }
     }
 
+    private String getCurrentStackTrace() {
+        StackTraceElement[] stackTraceElements = 
Thread.currentThread().getStackTrace();
+        StringBuilder stackTraceBuilder = new StringBuilder("Stack trace of 
the current content type header change:\n");
+        for (StackTraceElement element : stackTraceElements) {
+            stackTraceBuilder.append(element.toString()).append("\n");

Review Comment:
   ```suggestion
               
stackTraceBuilder.append(element.toString()).append(System.lineSeparator());
   ```



##########
src/main/java/org/apache/sling/engine/impl/SlingHttpServletResponseImpl.java:
##########
@@ -321,14 +330,17 @@ public void setContentType(final String type) {
             if (message.isPresent()) {
                 if (isCheckContentTypeOnInclude()) {
                     requestData.getRequestProgressTracker().log("ERROR: " + 
message.get());
+                    LOG.error(getCurrentStackTrace());
                     throw new ContentTypeChangeException(message.get());
                 }
                 if (isProtectHeadersOnInclude()) {
                     LOG.error(message.get());
+                    LOG.error(getCurrentStackTrace());

Review Comment:
   Please do only 1 log statement here, as splitting it up makes log analysis 
and correlation hard to almost impossible. So please combine this statement 
with the previous one, also to add more context.



##########
src/main/java/org/apache/sling/engine/impl/SlingHttpServletResponseImpl.java:
##########
@@ -321,14 +330,17 @@ public void setContentType(final String type) {
             if (message.isPresent()) {
                 if (isCheckContentTypeOnInclude()) {
                     requestData.getRequestProgressTracker().log("ERROR: " + 
message.get());
+                    LOG.error(getCurrentStackTrace());

Review Comment:
   This results in a stacktrace being logged (to the system logs) without any 
additional context; I don't think that this is helpful at all.
   
   (I think that the logs are more durable than the content of the 
RequestProgressTracker, which is by default never logged to disk at all. For 
that the logging should also contain all relevant information to debug and 
understand this situation after the fact.)



##########
src/main/java/org/apache/sling/engine/impl/SlingHttpServletResponseImpl.java:
##########
@@ -321,14 +330,17 @@ public void setContentType(final String type) {
             if (message.isPresent()) {
                 if (isCheckContentTypeOnInclude()) {
                     requestData.getRequestProgressTracker().log("ERROR: " + 
message.get());
+                    LOG.error(getCurrentStackTrace());
                     throw new ContentTypeChangeException(message.get());
                 }
                 if (isProtectHeadersOnInclude()) {
                     LOG.error(message.get());
+                    LOG.error(getCurrentStackTrace());
                     requestData.getRequestProgressTracker().log("ERROR: " + 
message.get());
                     return;
                 }
                 LOG.warn(message.get());
+                LOG.warn(getCurrentStackTrace());

Review Comment:
   see above



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@sling.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to