Skip to content

Commit

Permalink
Fix spring-data-jpa @Modifying(flushAutomatically = true)
Browse files Browse the repository at this point in the history
  • Loading branch information
famod committed Aug 7, 2024
1 parent ff6b789 commit 5aa3740
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -69,9 +69,7 @@ public void testNoAutoFlush() {

final User verifyUser = getUser("JOHN");
// processLoginEvents did not see the new login event
final boolean allProcessed = verifyUser.getLoginEvents().stream()
.allMatch(loginEvent -> loginEvent.isProcessed());
assertThat(allProcessed).describedAs("all LoginEvents are marked as processed").isFalse();
assertThat(verifyUser.getLoginEvents()).hasSize(0);

Check failure on line 72 in extensions/spring-data-jpa/deployment/src/test/java/io/quarkus/spring/data/deployment/ModifyingQueryWithFlushAndClearTest.java

View check run for this annotation

quarkus-bot / Build summary for 5aa3740f1c75b7f705d9ca0b81137f773139ffdd

JVM Tests - JDK 17

java.lang.AssertionError: Expected size: 0 but was: 2 in:
Raw output
java.lang.AssertionError: 

Expected size: 0 but was: 2 in:
[io.quarkus.spring.data.deployment.LoginEvent@3df672a,
    io.quarkus.spring.data.deployment.LoginEvent@20ff5cf]
	at io.quarkus.spring.data.deployment.ModifyingQueryWithFlushAndClearTest.testNoAutoFlush(ModifyingQueryWithFlushAndClearTest.java:72)
	at io.quarkus.spring.data.deployment.ModifyingQueryWithFlushAndClearTest_Subclass.testNoAutoFlush$$superforward(Unknown Source)
	at io.quarkus.spring.data.deployment.ModifyingQueryWithFlushAndClearTest_Subclass$$function$$7.apply(Unknown Source)
	at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:73)
	at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:62)
	at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.invokeInOurTx(TransactionalInterceptorBase.java:136)
	at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.invokeInOurTx(TransactionalInterceptorBase.java:107)
	at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired.doIntercept(TransactionalInterceptorRequired.java:38)
	at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.intercept(TransactionalInterceptorBase.java:61)
	at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired.intercept(TransactionalInterceptorRequired.java:32)
	at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired_Bean.intercept(Unknown Source)
	at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:42)
	at io.quarkus.arc.impl.AroundInvokeInvocationContext.perform(AroundInvokeInvocationContext.java:30)
	at io.quarkus.arc.impl.InvocationContexts.performAroundInvoke(InvocationContexts.java:27)
	at io.quarkus.spring.data.deployment.ModifyingQueryWithFlushAndClearTest_Subclass.testNoAutoFlush(Unknown Source)
	at java.base/java.lang.reflect.Method.invoke(Method.java:569)
	at io.quarkus.test.QuarkusUnitTest.runExtensionMethod(QuarkusUnitTest.java:499)
	at io.quarkus.test.QuarkusUnitTest.interceptTestMethod(QuarkusUnitTest.java:413)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)

Check failure on line 72 in extensions/spring-data-jpa/deployment/src/test/java/io/quarkus/spring/data/deployment/ModifyingQueryWithFlushAndClearTest.java

View check run for this annotation

quarkus-bot / Build summary for 5aa3740f1c75b7f705d9ca0b81137f773139ffdd

JVM Tests - JDK 21

java.lang.AssertionError: Expected size: 0 but was: 2 in:
Raw output
java.lang.AssertionError: 

Expected size: 0 but was: 2 in:
[io.quarkus.spring.data.deployment.LoginEvent@5cbeb42c,
    io.quarkus.spring.data.deployment.LoginEvent@76db9b15]
	at io.quarkus.spring.data.deployment.ModifyingQueryWithFlushAndClearTest.testNoAutoFlush(ModifyingQueryWithFlushAndClearTest.java:72)
	at io.quarkus.spring.data.deployment.ModifyingQueryWithFlushAndClearTest_Subclass.testNoAutoFlush$$superforward(Unknown Source)
	at io.quarkus.spring.data.deployment.ModifyingQueryWithFlushAndClearTest_Subclass$$function$$7.apply(Unknown Source)
	at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:73)
	at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:62)
	at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.invokeInOurTx(TransactionalInterceptorBase.java:136)
	at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.invokeInOurTx(TransactionalInterceptorBase.java:107)
	at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired.doIntercept(TransactionalInterceptorRequired.java:38)
	at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.intercept(TransactionalInterceptorBase.java:61)
	at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired.intercept(TransactionalInterceptorRequired.java:32)
	at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired_Bean.intercept(Unknown Source)
	at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:42)
	at io.quarkus.arc.impl.AroundInvokeInvocationContext.perform(AroundInvokeInvocationContext.java:30)
	at io.quarkus.arc.impl.InvocationContexts.performAroundInvoke(InvocationContexts.java:27)
	at io.quarkus.spring.data.deployment.ModifyingQueryWithFlushAndClearTest_Subclass.testNoAutoFlush(Unknown Source)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at io.quarkus.test.QuarkusUnitTest.runExtensionMethod(QuarkusUnitTest.java:499)
	at io.quarkus.test.QuarkusUnitTest.interceptTestMethod(QuarkusUnitTest.java:413)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)

Check failure on line 72 in extensions/spring-data-jpa/deployment/src/test/java/io/quarkus/spring/data/deployment/ModifyingQueryWithFlushAndClearTest.java

View check run for this annotation

quarkus-bot / Build summary for 5aa3740f1c75b7f705d9ca0b81137f773139ffdd

JVM Tests - JDK 17 Windows

java.lang.AssertionError: Expected size: 0 but was: 2 in:
Raw output
java.lang.AssertionError: 

Expected size: 0 but was: 2 in:
[io.quarkus.spring.data.deployment.LoginEvent@169e8979,
    io.quarkus.spring.data.deployment.LoginEvent@20afe61d]
	at io.quarkus.spring.data.deployment.ModifyingQueryWithFlushAndClearTest.testNoAutoFlush(ModifyingQueryWithFlushAndClearTest.java:72)
	at io.quarkus.spring.data.deployment.ModifyingQueryWithFlushAndClearTest_Subclass.testNoAutoFlush$$superforward(Unknown Source)
	at io.quarkus.spring.data.deployment.ModifyingQueryWithFlushAndClearTest_Subclass$$function$$7.apply(Unknown Source)
	at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:73)
	at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:62)
	at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.invokeInOurTx(TransactionalInterceptorBase.java:136)
	at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.invokeInOurTx(TransactionalInterceptorBase.java:107)
	at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired.doIntercept(TransactionalInterceptorRequired.java:38)
	at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.intercept(TransactionalInterceptorBase.java:61)
	at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired.intercept(TransactionalInterceptorRequired.java:32)
	at io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired_Bean.intercept(Unknown Source)
	at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:42)
	at io.quarkus.arc.impl.AroundInvokeInvocationContext.perform(AroundInvokeInvocationContext.java:30)
	at io.quarkus.arc.impl.InvocationContexts.performAroundInvoke(InvocationContexts.java:27)
	at io.quarkus.spring.data.deployment.ModifyingQueryWithFlushAndClearTest_Subclass.testNoAutoFlush(Unknown Source)
	at java.base/java.lang.reflect.Method.invoke(Method.java:569)
	at io.quarkus.test.QuarkusUnitTest.runExtensionMethod(QuarkusUnitTest.java:499)
	at io.quarkus.test.QuarkusUnitTest.interceptTestMethod(QuarkusUnitTest.java:413)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
}

@Test
Expand All @@ -83,8 +81,9 @@ public void testAutoFlush() {
repo.processLoginEventsPlainAutoClearAndFlush();

final User verifyUser = getUser("JOHN");
assertThat(verifyUser.getLoginEvents()).hasSize(1);
final boolean allProcessed = verifyUser.getLoginEvents().stream()
.allMatch(loginEvent -> loginEvent.isProcessed());
.allMatch(LoginEvent::isProcessed);
assertThat(allProcessed).describedAs("all LoginEvents are marked as processed").isTrue();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,6 @@ public static void clear(Class<?> clazz) {
}

public static void flush(Class<?> clazz) {
Panache.getSession(clazz).clear();
Panache.getSession(clazz).flush();
}
}

0 comments on commit 5aa3740

Please sign in to comment.