Skip to content

Commit df10ff7

Browse files
committed
[hibernate#2055] SessionFactoryManager.stop() should always call SessionFactory.close()
PersistentTemporaryTable dropping is obtained setting PersistentTableStrategy.DROP_ID_TABLES to true
1 parent e3e69de commit df10ff7

File tree

2 files changed

+8
-34
lines changed

2 files changed

+8
-34
lines changed

hibernate-reactive-core/src/test/java/org/hibernate/reactive/BaseReactiveTest.java

+6
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
import org.hibernate.dialect.Dialect;
1919
import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider;
2020
import org.hibernate.engine.spi.SessionFactoryImplementor;
21+
import org.hibernate.query.sqm.mutation.internal.temptable.GlobalTemporaryTableStrategy;
22+
import org.hibernate.query.sqm.mutation.internal.temptable.PersistentTableStrategy;
2123
import org.hibernate.reactive.containers.DatabaseConfiguration;
2224
import org.hibernate.reactive.containers.DatabaseConfiguration.DBType;
2325
import org.hibernate.reactive.mutiny.Mutiny;
@@ -33,6 +35,7 @@
3335
import org.junit.jupiter.api.AfterEach;
3436
import org.junit.jupiter.api.BeforeEach;
3537
import org.junit.jupiter.api.TestInstance;
38+
import org.junit.jupiter.api.condition.DisabledIf;
3639
import org.junit.jupiter.api.extension.ExtendWith;
3740
import org.junit.jupiter.api.extension.RegisterExtension;
3841

@@ -105,6 +108,8 @@ public static void setDefaultProperties(Configuration configuration) {
105108
configuration.setProperty( Settings.SHOW_SQL, System.getProperty( Settings.SHOW_SQL, "false" ) );
106109
configuration.setProperty( Settings.FORMAT_SQL, System.getProperty( Settings.FORMAT_SQL, "false" ) );
107110
configuration.setProperty( Settings.HIGHLIGHT_SQL, System.getProperty( Settings.HIGHLIGHT_SQL, "true" ) );
111+
configuration.setProperty( PersistentTableStrategy.DROP_ID_TABLES, "true" );
112+
configuration.setProperty( GlobalTemporaryTableStrategy.DROP_ID_TABLES, "true" );
108113
}
109114

110115
public static final SessionFactoryManager factoryManager = new SessionFactoryManager();
@@ -186,6 +191,7 @@ private <T> CriteriaQuery<T> queryForDelete(Class<T> entityClass) {
186191
}
187192

188193
@BeforeEach
194+
@DisabledIf( "" )
189195
@Timeout(value = 10, timeUnit = MINUTES)
190196
public void before(VertxTestContext context) {
191197
test( context, setupSessionFactory( this::constructConfiguration ) );

hibernate-reactive-core/src/test/java/org/hibernate/reactive/testing/SessionFactoryManager.java

+2-34
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,13 @@
55
*/
66
package org.hibernate.reactive.testing;
77

8-
import java.util.ArrayList;
9-
import java.util.List;
108
import java.util.concurrent.CompletionStage;
119
import java.util.function.Supplier;
1210

1311
import org.hibernate.SessionFactory;
1412
import org.hibernate.engine.spi.SessionFactoryImplementor;
15-
import org.hibernate.metamodel.spi.MappingMetamodelImplementor;
16-
import org.hibernate.persister.entity.EntityPersister;
17-
import org.hibernate.query.sqm.mutation.internal.temptable.PersistentTableStrategy;
1813
import org.hibernate.reactive.pool.ReactiveConnectionPool;
19-
import org.hibernate.reactive.query.sqm.mutation.internal.temptable.ReactivePersistentTableStrategy;
2014

21-
import static org.hibernate.reactive.util.impl.CompletionStages.loop;
2215
import static org.hibernate.reactive.util.impl.CompletionStages.voidFuture;
2316

2417
/**
@@ -60,24 +53,8 @@ public ReactiveConnectionPool getReactiveConnectionPool() {
6053
public CompletionStage<Void> stop() {
6154
CompletionStage<Void> releasedStage = voidFuture();
6255
if ( sessionFactory != null && sessionFactory.isOpen() ) {
63-
SessionFactoryImplementor sessionFactoryImplementor = sessionFactory.unwrap( SessionFactoryImplementor.class );
64-
MappingMetamodelImplementor mappingMetamodel = sessionFactoryImplementor
65-
.getRuntimeMetamodels()
66-
.getMappingMetamodel();
67-
final List<ReactivePersistentTableStrategy> reactiveStrategies = new ArrayList<>();
68-
mappingMetamodel.forEachEntityDescriptor(
69-
entityPersister -> addPersistentTableStrategy( reactiveStrategies, entityPersister )
70-
);
71-
if ( !reactiveStrategies.isEmpty() ) {
72-
releasedStage = loop( reactiveStrategies, strategy -> {
73-
( (PersistentTableStrategy) strategy )
74-
.release( sessionFactory.unwrap( SessionFactoryImplementor.class ), null );
75-
return strategy.getDropTableActionStage();
76-
} );
77-
78-
releasedStage = releasedStage
79-
.whenComplete( (unused, throwable) -> sessionFactory.close() );
80-
}
56+
releasedStage = releasedStage
57+
.whenComplete( (unused, throwable) -> sessionFactory.close() );
8158
}
8259
return releasedStage
8360
.thenCompose( unused -> {
@@ -93,13 +70,4 @@ public CompletionStage<Void> stop() {
9370
return closeFuture;
9471
} );
9572
}
96-
97-
private void addPersistentTableStrategy(List<ReactivePersistentTableStrategy> reactiveStrategies, EntityPersister entityPersister) {
98-
if ( entityPersister.getSqmMultiTableMutationStrategy() instanceof ReactivePersistentTableStrategy ) {
99-
reactiveStrategies.add( (ReactivePersistentTableStrategy) entityPersister.getSqmMultiTableMutationStrategy() );
100-
}
101-
if ( entityPersister.getSqmMultiTableInsertStrategy() instanceof ReactivePersistentTableStrategy ) {
102-
reactiveStrategies.add( (ReactivePersistentTableStrategy) entityPersister.getSqmMultiTableInsertStrategy() );
103-
}
104-
}
10573
}

0 commit comments

Comments
 (0)