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() {