You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2020/03/15 09:49:05 UTC

[isis] branch master updated: ISIS-2306: some improved debug logging

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

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/master by this push:
     new 01e0ff9  ISIS-2306: some improved debug logging
01e0ff9 is described below

commit 01e0ff9a61e95151fcdd2a74188d8d9afa77aab5
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sun Mar 15 10:48:51 2020 +0100

    ISIS-2306: some improved debug logging
---
 .../isis/core/commons/internal/debug/_Probe.java      |  5 +++++
 .../metamodel/interactions/InteractionContext.java    |  4 ++--
 .../specimpl/OneToOneAssociationMixedIn.java          |  4 ++--
 .../core/runtime/session/scope/IsisSessionScope.java  |  5 +++--
 .../session/IsisSessionFactoryDefault.java            | 19 ++++++++++++++-----
 .../authentication/AuthenticationSessionTracker.java  |  5 +++--
 6 files changed, 29 insertions(+), 13 deletions(-)

diff --git a/core/commons/src/main/java/org/apache/isis/core/commons/internal/debug/_Probe.java b/core/commons/src/main/java/org/apache/isis/core/commons/internal/debug/_Probe.java
index c3445bf..5a88145 100644
--- a/core/commons/src/main/java/org/apache/isis/core/commons/internal/debug/_Probe.java
+++ b/core/commons/src/main/java/org/apache/isis/core/commons/internal/debug/_Probe.java
@@ -187,6 +187,11 @@ public class _Probe {
     }
 
     // -- CONVENIENT DEBUG TOOLS (STATIC)
+    
+    public static String currentThreadId() {
+        val ct = Thread.currentThread();
+        return String.format("Thread[%s (%d)])", ct.getName(), ct.getId());
+    }
 
     public static void sysOut(String format, Object... args) {
         System.out.println(String.format(format, args));
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/InteractionContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/InteractionContext.java
index d55d98b..cb73161 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/InteractionContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/InteractionContext.java
@@ -60,13 +60,13 @@ import org.apache.isis.core.security.authentication.AuthenticationSession;
 public abstract class InteractionContext<T extends InteractionEvent> {
 
     private final InteractionContextType interactionType;
-    private final Identifier identifier;
     private final InteractionInitiatedBy interactionInitiatedBy;
+    private final Identifier identifier;
     private final ManagedObject target;
 
     private int contributeeParam = -1; // no contributee
     private ManagedObject contributee = null;
-
+    
     private ManagedObject mixedInAdapter = null; // for mixin members only, obviously
 
     public InteractionContext(
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationMixedIn.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationMixedIn.java
index 0cb3f25..10c7411 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationMixedIn.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationMixedIn.java
@@ -136,7 +136,7 @@ public class OneToOneAssociationMixedIn extends OneToOneAssociationDefault imple
 
         val mixinAdapter = mixinAdapterFor(mixinType, mixedInAdapter);
 
-        return getPublishingServiceInternal().withPublishingSuppressed(
+        return getPublisherDispatchService().withPublishingSuppressed(
                 () -> mixinAction.executeInternal(
                         mixinAdapter, mixedInAdapter, Collections.emptyList(), interactionInitiatedBy)
         );
@@ -198,7 +198,7 @@ public class OneToOneAssociationMixedIn extends OneToOneAssociationDefault imple
         return this.mixinAction == mixinAction;
     }
 
-    private PublisherDispatchService getPublishingServiceInternal() {
+    private PublisherDispatchService getPublisherDispatchService() {
         return getServiceRegistry().lookupServiceElseFail(PublisherDispatchService.class);
     }
 
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/session/scope/IsisSessionScope.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/session/scope/IsisSessionScope.java
index dc2c384..d774c6c 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/session/scope/IsisSessionScope.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/session/scope/IsisSessionScope.java
@@ -26,6 +26,7 @@ import org.springframework.beans.factory.ObjectFactory;
 import org.springframework.beans.factory.config.Scope;
 
 import org.apache.isis.core.commons.internal.collections._Maps;
+import org.apache.isis.core.commons.internal.debug._Probe;
 import org.apache.isis.core.commons.internal.exceptions._Exceptions;
 import org.apache.isis.core.runtime.session.IsisSessionTracker;
 
@@ -66,9 +67,9 @@ class IsisSessionScope implements Scope, IsisSessionScopeCloseListener {
         
         if(!isisSessionTracker.isInSession()) {
             throw _Exceptions.illegalState("Creation of bean %s with @IsisSessionScope requires the "
-                    + "calling thread to have an open IsisSession on the thread-local stack. Running into "
+                    + "calling %s to have an open IsisSession on the thread-local stack. Running into "
                     + "this issue might be caused by use of ... @Inject MyScopedBean bean ..., instead of "
-                    + "... @Inject Provider<MyScopedBean> provider ...", name);
+                    + "... @Inject Provider<MyScopedBean> provider ...", name, _Probe.currentThreadId());
         }
         
         val existingScopedObject = scopedObjects.get().get(name);
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/session/IsisSessionFactoryDefault.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/session/IsisSessionFactoryDefault.java
index 45c2fff..546d35a 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/session/IsisSessionFactoryDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/session/IsisSessionFactoryDefault.java
@@ -44,6 +44,7 @@ import org.apache.isis.applib.util.schema.InteractionDtoUtils;
 import org.apache.isis.core.commons.collections.Can;
 import org.apache.isis.core.commons.internal.concurrent._ConcurrentContext;
 import org.apache.isis.core.commons.internal.concurrent._ConcurrentTaskList;
+import org.apache.isis.core.commons.internal.debug._Probe;
 import org.apache.isis.core.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
@@ -161,14 +162,22 @@ public class IsisSessionFactoryDefault implements IsisSessionFactory, IsisSessio
             conversationId.set(UUID.randomUUID());
             postTopLevelOpen(newIsisSession);
         }
+        
+        log.debug("new IsisSession created (conversation-id={}, total-sessions-on-stack={}, {})", 
+                conversationId.get(), 
+                isisSessionStack.get().size(),
+                _Probe.currentThreadId());
+        
         return newIsisSession;
         
     }
 
-    
-
     @Override
     public void closeSessionStack() {
+        log.debug("about to close IsisSession stack (conversation-id={}, total-sessions-on-stack={}, {})", 
+                conversationId.get(), 
+                isisSessionStack.get().size(),
+                _Probe.currentThreadId());
         closeSessionStackDownToStackSize(0);
     }
     
@@ -238,11 +247,11 @@ public class IsisSessionFactoryDefault implements IsisSessionFactory, IsisSessio
         
         val stack = isisSessionStack.get();
         while(stack.size()>downToStackSize) {
-            val isisSession = stack.peek();
             if(stack.size()==1) {       
-                preTopLevelClose(isisSession);
+                preTopLevelClose(stack.pop());
+            } else {
+                stack.pop();    
             }
-            stack.pop();
         }
         if(downToStackSize == 0) {
             isisSessionStack.remove();
diff --git a/core/security/src/main/java/org/apache/isis/core/security/authentication/AuthenticationSessionTracker.java b/core/security/src/main/java/org/apache/isis/core/security/authentication/AuthenticationSessionTracker.java
index 9d95b47..c30e94e 100644
--- a/core/security/src/main/java/org/apache/isis/core/security/authentication/AuthenticationSessionTracker.java
+++ b/core/security/src/main/java/org/apache/isis/core/security/authentication/AuthenticationSessionTracker.java
@@ -21,6 +21,7 @@ package org.apache.isis.core.security.authentication;
 
 import java.util.Optional;
 
+import org.apache.isis.core.commons.internal.debug._Probe;
 import org.apache.isis.core.commons.internal.exceptions._Exceptions;
 
 /**
@@ -34,8 +35,8 @@ public interface AuthenticationSessionTracker {
         return currentAuthenticationSession()
                 .orElseThrow(()->
                     _Exceptions.illegalState(
-                            "no AuthenticationSession available with current thread %s", 
-                            Thread.currentThread().getName()));
+                            "no AuthenticationSession available with current %s", 
+                            _Probe.currentThreadId()));
     }
     
     default Optional<MessageBroker> currentMessageBroker() {