Spring PROPAGATION_REQUIRES_NEW, how is it paused? How many transactions are executed / suspended under the same thread?

I'm having some transaction problems. I do not use JTA.

It is possible that I am starting a new transaction, although it’s already in the transaction, resulting in this exception:

java.lang.Thread.run(Thread.java:745)
    org.postgresql.util.PSQLException: The connection attempt failed.
    org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:233)
    org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:64)
    org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:144)
    org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:29)
    org.postgresql.jdbc3g.AbstractJdbc3gConnection.<init>(AbstractJdbc3gConnection.java:21)
    org.postgresql.jdbc4.AbstractJdbc4Connection.<init>(AbstractJdbc4Connection.java:31)

java.lang.Thread.run(Thread.java:745)
    java.net.NoRouteToHostException: Cannot assign requested address
    java.net.PlainSocketImpl.socketConnect(Native Method)
    java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)
    java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    java.net.Socket.connect(Socket.java:589)
    org.postgresql.core.PGStream.<init>(PGStream.java:61)
    org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:109)
    org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:64)
    org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:144)
    org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:29)
    org.postgresql.jdbc3g.AbstractJdbc3gConnection.<init>(AbstractJdbc3gConnection.java:21)
    org.postgresql.jdbc4.AbstractJdbc4Connection.<init>(AbstractJdbc4Connection.java:31)
    org.postgresql.jdbc4.Jdbc4Connection.<init>(Jdbc4Connection.java:24)
    org.postgresql.Driver.makeConnection(Driver.java:410)
    org.postgresql.Driver.connect(Driver.java:280)
    java.sql.DriverManager.getConnection(DriverManager.java:664)
    java.sql.DriverManager.getConnection(DriverManager.java:208)

I read here that when the JTA is not in use, the way it pauses and creates a new transaction, a new connection is created, possibly explaining the above exception.

How does transaction suspension work in Spring?

My code must create and complete transactions before creating a new one, however I am not sure.

I have 8 threads filling data, and each thread in the loop creates a new transaction, runs, intercepts, again and again.

, "" ?

TransactionSynchronizationManager , , , , .

, , , .

+4
1

PROPAGATION_REQUIRED, , , . , . , PROPAGATION_REQUIRED .

.

+2

All Articles