This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch CAUSEWAY-3883
in repository https://gitbox.apache.org/repos/asf/causeway.git
The following commit(s) were added to refs/heads/CAUSEWAY-3883 by this push:
new 98752b815e4 CAUSEWAY-3883: removes debugging statements
98752b815e4 is described below
commit 98752b815e4fd77fcfa5c7ce1bb56972ddfbd640
Author: Dan Haywood <[email protected]>
AuthorDate: Tue Apr 8 20:07:33 2025 +0100
CAUSEWAY-3883: removes debugging statements
---
.../services/ProxyFactoryServiceByteBuddy.java | 49 ++++++++++------------
.../wrapper/proxy/ProxyCreator.java | 7 +---
.../jdo/WrapperFactoryMetaspaceMemoryLeakTest.java | 28 ++++++-------
3 files changed, 36 insertions(+), 48 deletions(-)
diff --git
a/core/codegen-bytebuddy/src/main/java/org/apache/causeway/core/codegen/bytebuddy/services/ProxyFactoryServiceByteBuddy.java
b/core/codegen-bytebuddy/src/main/java/org/apache/causeway/core/codegen/bytebuddy/services/ProxyFactoryServiceByteBuddy.java
index a345698cf76..0ee892e07fc 100644
---
a/core/codegen-bytebuddy/src/main/java/org/apache/causeway/core/codegen/bytebuddy/services/ProxyFactoryServiceByteBuddy.java
+++
b/core/codegen-bytebuddy/src/main/java/org/apache/causeway/core/codegen/bytebuddy/services/ProxyFactoryServiceByteBuddy.java
@@ -18,6 +18,8 @@
*/
package org.apache.causeway.core.codegen.bytebuddy.services;
+import java.io.IOException;
+import java.io.UncheckedIOException;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.InvocationTargetException;
@@ -64,27 +66,25 @@ public <T> _ProxyFactory<T> factory(
val objenesis = new ObjenesisStd();
- final Function<InvocationHandler, Class<? extends T>>
proxyClassFactory = new Function<InvocationHandler, Class<? extends T>>() {
+ final Function<InvocationHandler, Class<? extends T>>
proxyClassFactory = new Function<>() {
+
@Override
public Class<? extends T> apply(InvocationHandler handler) {
-// return (Class)
proxyClassByInvocationHandler.computeIfAbsent(handler, ih -> createClass(ih));
- return createClass(handler);
+ return (Class<? extends T>)
proxyClassByInvocationHandler.computeIfAbsent(handler, this::createClass);
}
private Class<? extends T> createClass(InvocationHandler handler) {
- ImplementationDefinition<T> tImplementationDefinition =
- MemoryUsage.measureMetaspace("handler.nextProxyDef",
() -> nextProxyDef(base, interfaces));
- final var typeDefn =
- MemoryUsage.measureMetaspace("handler.intercept ",
() -> tImplementationDefinition.intercept(InvocationHandlerAdapter.of(handler)
- ));
- final var typeDefnWithField =
typeDefn.defineField("__causeway_wrapperInvocationContext", Object.class,
Modifier.PUBLIC);
- DynamicType.Unloaded<T> make =
- MemoryUsage.measureMetaspace("handler.make ",
() -> typeDefnWithField.make());
- DynamicType.Loaded<T> load =
- MemoryUsage.measureMetaspace("handler.load ",
() -> make.load(_Context.getDefaultClassLoader(),
strategyAdvisor.getSuitableStrategy(base)));
- Class<? extends T> loaded =
- MemoryUsage.measureMetaspace("handler.getLoaded ",
() -> load.getLoaded());
- return loaded;
+ try (final var unloaded = nextProxyDef(base, interfaces)
+ .intercept(InvocationHandlerAdapter.of(handler))
+ .defineField("__causeway_wrapperInvocationContext",
Object.class, Modifier.PUBLIC)
+ .make()
+ ) {
+ return unloaded
+ .load(_Context.getDefaultClassLoader(),
strategyAdvisor.getSuitableStrategy(base))
+ .getLoaded();
+ } catch (IOException e) {
+ throw new UncheckedIOException("Failed to generate proxy
class", e);
+ }
}
};
@@ -94,7 +94,6 @@ private Class<? extends T> createClass(InvocationHandler
handler) {
public T createInstance(final InvocationHandler handler, final
boolean initialize) {
try {
-
if(initialize) {
ensureSameSize(constructorArgTypes, null);
return _Casts.uncheckedCast(
createUsingConstructor(handler, null) );
@@ -126,23 +125,17 @@ public T createInstance(final InvocationHandler handler,
final Object[] construc
// -- HELPER (create w/o initialize)
private Object createNotUsingConstructor(final InvocationHandler
invocationHandler) {
- final Class<? extends T> proxyClass =
-
MemoryUsage.measureMetaspace("proxyClassFactory.apply", () ->
proxyClassFactory.apply(invocationHandler));
- final Object object =
- MemoryUsage.measureMetaspace("objenesis.newInstance",
() -> objenesis.newInstance(proxyClass));
- return object;
+ final Class<? extends T> proxyClass =
proxyClassFactory.apply(invocationHandler);
+ return objenesis.newInstance(proxyClass);
}
// -- HELPER (create with initialize)
private Object createUsingConstructor(final InvocationHandler
invocationHandler, @Nullable final Object[] constructorArgs)
throws InstantiationException, IllegalAccessException,
IllegalArgumentException, InvocationTargetException, NoSuchMethodException,
SecurityException {
- final Class<? extends T> proxyClass =
-
MemoryUsage.measureMetaspace("proxyClassFactory.apply", () ->
proxyClassFactory.apply(invocationHandler));
- Constructor<? extends T> constructor =
-
MemoryUsage.measureMetaspace("proxyClass.getConstructor", () ->
proxyClass.getConstructor(constructorArgTypes == null ? _Constants.emptyClasses
: constructorArgTypes));
- T t = MemoryUsage.measureMetaspace("proxyClass.newInstance",
() -> constructor.newInstance(constructorArgs == null ? _Constants.emptyObjects
: constructorArgs));;
- return t;
+ final var proxyClass =
proxyClassFactory.apply(invocationHandler);
+ final var constructor =
proxyClass.getConstructor(constructorArgTypes == null ? _Constants.emptyClasses
: constructorArgTypes);
+ return constructor.newInstance(constructorArgs == null ?
_Constants.emptyObjects : constructorArgs);
}
};
diff --git
a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/wrapper/proxy/ProxyCreator.java
b/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/wrapper/proxy/ProxyCreator.java
index efe2ea6cb80..cf8dd15d183 100644
---
a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/wrapper/proxy/ProxyCreator.java
+++
b/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/wrapper/proxy/ProxyCreator.java
@@ -56,11 +56,8 @@ public <T> T instantiateProxy(final Class<T> base, final
DelegatingInvocationHan
_Arrays.combine(base, (Class<?>[]) new
Class[]{WrappingObject.class}),
handler));
} else {
- final _ProxyFactory<T> proxyFactory =
-
MemoryUsage.measureMetaspace("proxyFactoryService.factory", () ->
proxyFactoryService.factory(base, WrappingObject.class));
- T instance =
-
MemoryUsage.measureMetaspace("proxyFactory.createInstance", () ->
proxyFactory.createInstance(handler, false));
- return instance;
+ final _ProxyFactory<T> proxyFactory =
proxyFactoryService.factory(base, WrappingObject.class);
+ return proxyFactory.createInstance(handler, false);
}
}
diff --git
a/regressiontests/persistence-jpa/src/test/java/org/apache/causeway/testdomain/wrapper/jdo/WrapperFactoryMetaspaceMemoryLeakTest.java
b/regressiontests/persistence-jpa/src/test/java/org/apache/causeway/testdomain/wrapper/jdo/WrapperFactoryMetaspaceMemoryLeakTest.java
index 9f350e15cec..f0ec2722319 100644
---
a/regressiontests/persistence-jpa/src/test/java/org/apache/causeway/testdomain/wrapper/jdo/WrapperFactoryMetaspaceMemoryLeakTest.java
+++
b/regressiontests/persistence-jpa/src/test/java/org/apache/causeway/testdomain/wrapper/jdo/WrapperFactoryMetaspaceMemoryLeakTest.java
@@ -72,19 +72,20 @@ void uninstallFixture() {
}
@Test
- void testWrapper_waitingOnDomainEvent() {
+ void testWrapper_waitingOnDomainEvent() throws InterruptedException {
+
// with caching
MemoryUsage.measureMetaspace("whole thing", ()->{
-// extracted(1, 1); // 1,980 KB
-// extracted(1, 2000); // 3,794 KB
-// extracted(20, 1); // 2,468 KB
-// extracted(20, 2000); // 3,818 KB
+// extracted(1, 1); // 1,980 KB
+// extracted(1, 2000); // 3,794 KB
+// extracted(20, 1); // 2,468 KB
+ extracted(20, 2000); // 3,636 KB
//
// without caching
-// extracted(1, 1); // 2,114 KB
-// extracted(1, 1000); // 9,846 KB
-// extracted(20, 1); // 2,635 KB
- extracted(20, 2000); // 217,582 KB
+// extracted(1, 1); // 2,114 KB
+// extracted(1, 1000); // 9,846 KB
+// extracted(20, 1); // 2,635 KB
+// extracted(20, 2000); // 217,582 KB
});
}
@@ -93,15 +94,12 @@ private void extracted(int instances, int loops) {
val inventoryManager =
factoryService.viewModel(JpaInventoryManager.class);
for (var j = 0; j< loops; j++) {
- MemoryUsage.measureMetaspace("target #" + i + "." + j, ()->{
- List<JpaProduct> allProducts =
wrapper.wrap(inventoryManager).getAllProducts();
- allProducts.forEach(product -> {
- System.out.println(product.getName());
- });
+ List<JpaProduct> allProducts =
wrapper.wrap(inventoryManager).getAllProducts();
+ allProducts.forEach(product -> {
+ String unused = product.getName();
});
}
}
-
}
}