Skip to content

Commit 1bdba9e

Browse files
committed
HSEARCH-5297 Switch to narayana-spring-boot instead of atomikos
1 parent 16084bb commit 1bdba9e

File tree

10 files changed

+51
-56
lines changed

10 files changed

+51
-56
lines changed

build/parents/build/pom.xml

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -181,15 +181,10 @@
181181
<version.org.wildfly.security.wildfly-security-manager>1.1.2.Final</version.org.wildfly.security.wildfly-security-manager>
182182

183183
<!-- >>> Spring integration tests -->
184-
<!-- When updating Spring Boot check if it supports JDK23 and enable testing with it if so (see testWithJdk23 profile). -->
185-
<!--
186-
See https://github.com/atomikos/transactions-essentials/issues/234.
187-
Atomikos has to be fixed/updated before we can bump the Spring Boot version.
188-
-->
189-
<version.org.springframework.boot>3.3.0</version.org.springframework.boot>
190-
<!-- Spring Boot 3 Atomikos starter and related libs version: -->
191-
<!-- Enable Spring Boot updates once Atomikos is updated -->
192-
<version.com.atomikos>6.0.0</version.com.atomikos>
184+
<!-- When updating Spring Boot check if it supports JDK24 and enable testing with it if so (see testWithJdk24 profile). -->
185+
<version.org.springframework.boot>3.4.1</version.org.springframework.boot>
186+
<!-- Spring Boot 3 JTA starter and related libs version: -->
187+
<version.dev.snowdrop>3.3.1</version.dev.snowdrop>
193188

194189
<version.jsoup>1.18.3</version.jsoup>
195190
<version.snakeyaml>2.3</version.snakeyaml>

integrationtest/mapper/orm-spring/pom.xml

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,16 @@
4444
</exclusion>
4545
</exclusions>
4646
</dependency>
47-
4847
<dependency>
49-
<groupId>com.atomikos</groupId>
50-
<artifactId>transactions-spring-boot3-starter</artifactId>
51-
<version>${version.com.atomikos}</version>
48+
<groupId>dev.snowdrop</groupId>
49+
<artifactId>narayana-spring-boot-starter</artifactId>
50+
<version>${version.dev.snowdrop}</version>
51+
<scope>test</scope>
52+
</dependency>
53+
<dependency>
54+
<groupId>io.agroal</groupId>
55+
<artifactId>agroal-spring-boot-starter</artifactId>
56+
<version>2.5</version>
5257
<scope>test</scope>
5358
</dependency>
5459

integrationtest/mapper/orm-spring/src/test/java/org/hibernate/search/integrationtest/spring/jta/timeout/RaisedTimeoutJtaAndSpringOutboxIT.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import org.junit.jupiter.api.Test;
2121
import org.junit.jupiter.api.extension.RegisterExtension;
2222

23-
import com.atomikos.icatch.jta.TransactionManagerImp;
23+
import com.arjuna.ats.arjuna.coordinator.TxControl;
2424

2525
import org.springframework.beans.factory.annotation.Autowired;
2626
import org.springframework.boot.test.context.SpringBootTest;
@@ -48,8 +48,8 @@ void checkJta() {
4848
.getServiceRegistry().getService( TransactionCoordinatorBuilder.class ) )
4949
.returns( true, TransactionCoordinatorBuilder::isJta );
5050

51-
// We changed the default Atomikos timeout to 1s (1000ms)
52-
assertThat( TransactionManagerImp.getDefaultTimeout() ).isOne();
51+
// We changed the default timeout to 1s (1000ms)
52+
assertThat( TxControl.getDefaultTimeout() ).isOne();
5353

5454
// However, the test is not supposed to time out,
5555
// because we raised the timeout to 60 seconds in Hibernate Search properties

integrationtest/mapper/orm-spring/src/test/java/org/hibernate/search/integrationtest/spring/jta/timeout/TransactionTimeoutJtaAndSpringOutboxIT.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import static org.assertj.core.api.Assertions.assertThat;
88
import static org.awaitility.Awaitility.await;
99

10+
import java.util.concurrent.TimeUnit;
11+
1012
import jakarta.persistence.EntityManagerFactory;
1113

1214
import org.hibernate.engine.spi.SessionFactoryImplementor;
@@ -19,7 +21,7 @@
1921
import org.junit.jupiter.api.BeforeEach;
2022
import org.junit.jupiter.api.Test;
2123

22-
import com.atomikos.icatch.jta.TransactionManagerImp;
24+
import com.arjuna.ats.arjuna.coordinator.TxControl;
2325

2426
import org.springframework.beans.factory.annotation.Autowired;
2527
import org.springframework.boot.test.context.SpringBootTest;
@@ -45,8 +47,8 @@ void checkJta() {
4547
.getServiceRegistry().getService( TransactionCoordinatorBuilder.class ) )
4648
.returns( true, TransactionCoordinatorBuilder::isJta );
4749

48-
// We changed the default Atomikos timeout to 1s (1000ms)
49-
assertThat( TransactionManagerImp.getDefaultTimeout() ).isOne();
50+
// We changed the default timeout to 1s (1000ms)
51+
assertThat( TxControl.getDefaultTimeout() ).isOne();
5052

5153
// The test is supposed to time out
5254
}
@@ -62,6 +64,7 @@ void test() {
6264
snertDAO.persist( snert );
6365

6466
await( "Waiting for indexing assertions" )
67+
.pollDelay( 1, TimeUnit.SECONDS )
6568
.untilAsserted( () -> assertThat( TimeoutFailureCollector.EXCEPTIONS ).isNotEmpty() );
6669

6770
Throwable exception = TimeoutFailureCollector.EXCEPTIONS.iterator().next();

integrationtest/mapper/orm-spring/src/test/java/org/hibernate/search/integrationtest/spring/testsupport/AbstractMapperOrmSpringIT.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@
66

77
import org.hibernate.search.util.impl.integrationtest.mapper.orm.DatabaseContainer;
88

9+
import org.junit.jupiter.api.BeforeEach;
10+
11+
import com.arjuna.ats.arjuna.common.CoordinatorEnvironmentBean;
12+
import com.arjuna.ats.arjuna.coordinator.TxControl;
13+
import com.arjuna.common.internal.util.propertyservice.BeanPopulator;
14+
915
import org.springframework.boot.test.context.SpringBootTest;
1016
import org.springframework.test.context.DynamicPropertyRegistry;
1117
import org.springframework.test.context.DynamicPropertySource;
@@ -16,4 +22,11 @@ public abstract class AbstractMapperOrmSpringIT {
1622
static void configureProperties(DynamicPropertyRegistry registry) {
1723
DatabaseContainer.configuration().addAsSpring( (key, value) -> registry.add( key, () -> value ) );
1824
}
25+
26+
@BeforeEach
27+
void setUp() {
28+
// Because the default timeout is set as a static property it won't get reinitialized between tests on its own,
29+
// that is why we set it ourselves here:
30+
TxControl.setDefaultTimeout( BeanPopulator.getDefaultInstance( CoordinatorEnvironmentBean.class ).getDefaultTimeout() );
31+
}
1932
}

integrationtest/mapper/orm-spring/src/test/java/org/hibernate/search/integrationtest/spring/transaction/TransactionIT.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030

3131
// Adding a property here is just a "workaround" to make sure that a different context is used for this test
3232
// otherwise there can be build errors when running all the tests via maven.
33-
@SpringBootTest(properties = "spring.jta.atomikos.datasource.bean-name=hsearch-datasource1")
33+
@SpringBootTest(properties = "spring.datasource.name=hsearch-datasource1")
3434
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)
3535
class TransactionIT extends AbstractMapperOrmSpringIT {
3636

integrationtest/mapper/orm-spring/src/test/resources/application-jta.yaml

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,7 @@ spring.jpa:
1111
use_second_level_cache: false
1212
use_query_cache: false
1313

14-
spring:
15-
jta:
16-
atomikos:
17-
datasource:
18-
borrow-connection-timeout: 3000
19-
local-transaction-mode: true # allow-local-transactions ?
20-
min-pool-size: 5
21-
max-pool-size: 100
22-
properties:
23-
transaction-manager-unique-name: xaDataSource
14+
spring.datasource:
15+
agroal:
16+
min-size: 5
17+
max-size: 100

integrationtest/mapper/orm-spring/src/test/resources/application-transaction-timeout.yaml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,5 @@ spring.jpa:
66
internal:
77
configurer: org.hibernate.search.integrationtest.spring.jta.timeout.TimeoutOutboxPollingInternalConfigurer
88
background_failure_handler: org.hibernate.search.integrationtest.spring.jta.timeout.TimeoutFailureCollector
9-
atomikos:
10-
properties:
11-
# note this value is converted to seconds (default-jta-timeout/1000) so we should keep in mind when updating it:
12-
default-jta-timeout: 1000
9+
narayana:
10+
default-timeout: 1

integrationtest/mapper/orm-spring/src/test/resources/application.yaml

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,12 @@ spring.datasource:
1111
url: ${JDBC_URL} # From environment variable
1212
username: ${JDBC_USERNAME} # From environment variable
1313
password: ${JDBC_PASSWORD} # From environment variable
14+
generate-unique-name: false
15+
name: hsearch-datasource
16+
type: io.agroal.springframework.boot.AgroalDataSource
17+
agroal:
18+
min-size: 2
19+
max-size: 10
1420

1521
logging.level:
1622
org.springframework.core.env: DEBUG
@@ -20,13 +26,8 @@ logging.level:
2026
org.hibernate.search.elasticsearch.client.request: DEBUG
2127
org.hibernate.search.backend.lucene: DEBUG
2228

23-
# since atomikos connection pool has a max size set to 1 ...
24-
# we will not be able to execute more than one transaction at a time, leading to errors in tests
2529
spring:
2630
jta:
27-
atomikos:
28-
datasource:
29-
bean-name: hsearch-datasource
30-
min-pool-size: 2
31-
max-pool-size: 10
32-
31+
enabled: true
32+
narayana:
33+
log-dir: target/transaction-logs

pom.xml

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1378,20 +1378,6 @@
13781378
</properties>
13791379
</profile>
13801380

1381-
<profile>
1382-
<id>testWithJdk23</id>
1383-
<activation>
1384-
<property>
1385-
<name>java-version.test.release</name>
1386-
<value>23</value>
1387-
</property>
1388-
</activation>
1389-
<properties>
1390-
<!-- Spring Boot 3 isn't ready for JDK23 yet -->
1391-
<failsafe.spring.skip>true</failsafe.spring.skip>
1392-
</properties>
1393-
</profile>
1394-
13951381
<profile>
13961382
<id>testWithJdk24</id>
13971383
<activation>

0 commit comments

Comments
 (0)