You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by jo...@apache.org on 2024/08/24 14:30:40 UTC

(sling-org-apache-sling-engine) 01/01: SLING-12301 improve error handling

This is an automated email from the ASF dual-hosted git repository.

joerghoh pushed a commit to branch SLING-12301
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-engine.git

commit 26ace44c2e54be3cb7f138a36bb126412c3fb388
Author: Joerg Hoh <jo...@apache.org>
AuthorDate: Sat Aug 24 16:30:23 2024 +0200

    SLING-12301 improve error handling
---
 .../engine/impl/helper/SlingServletContext.java    | 32 ++++++++++++----------
 1 file changed, 18 insertions(+), 14 deletions(-)

diff --git a/src/main/java/org/apache/sling/engine/impl/helper/SlingServletContext.java b/src/main/java/org/apache/sling/engine/impl/helper/SlingServletContext.java
index 683ffda..f8850f1 100644
--- a/src/main/java/org/apache/sling/engine/impl/helper/SlingServletContext.java
+++ b/src/main/java/org/apache/sling/engine/impl/helper/SlingServletContext.java
@@ -240,23 +240,27 @@ public class SlingServletContext implements ServletContext, ServletContextListen
             // async registration
             this.runAsync(
                     () -> {
-                        final boolean register;
-                        synchronized (SlingServletContext.this) {
-                            register = SlingServletContext.this.servletContext == delegatee;
-                        }
-                        if (register) {
-                            final ServiceRegistration<ServletContext> reg = registerServletContext();
-                            boolean immediatelyUnregister = false;
+                        try {
+                            final boolean register;
                             synchronized (SlingServletContext.this) {
-                                if (SlingServletContext.this.initCounter == counter) {
-                                    SlingServletContext.this.registration = reg;
-                                } else {
-                                    immediatelyUnregister = true;
-                                }
+                                register = SlingServletContext.this.servletContext == delegatee;
                             }
-                            if (immediatelyUnregister) {
-                                unregisterServletContext(reg);
+                            if (register) {
+                                final ServiceRegistration<ServletContext> reg = registerServletContext();
+                                boolean immediatelyUnregister = false;
+                                synchronized (SlingServletContext.this) {
+                                    if (SlingServletContext.this.initCounter == counter) {
+                                        SlingServletContext.this.registration = reg;
+                                    } else {
+                                        immediatelyUnregister = true;
+                                    }
+                                }
+                                if (immediatelyUnregister) {
+                                    unregisterServletContext(reg);
+                                }
                             }
+                        } catch (Throwable t) {
+                            log.error("caught exception during async registration", t);
                         }
                     },
                     "registration");