OctaviusSessionSynchronization

internal class OctaviusSessionSynchronization(holder: OctaviusSessionHolder, key: OctaviusSessionKey, springTransaction: Boolean) : ResourceHolderSynchronization<OctaviusSessionHolder, OctaviusSessionKey>

Ends the transaction-scoped session at the right point in Spring's completion sequence.

ResourceHolderSynchronization unbinds it over a suspension, so a REQUIRES_NEW transaction inside another does not find the outer one's session.

Constructors

Link copied to clipboard
constructor(holder: OctaviusSessionHolder, key: OctaviusSessionKey, springTransaction: Boolean)

Properties

Link copied to clipboard
open override val order: Int

Functions

Link copied to clipboard
open fun afterCommit()
Link copied to clipboard
open fun afterCompletion(status: Int)
Link copied to clipboard
open fun beforeCommit(readOnly: Boolean)
Link copied to clipboard
open fun beforeCompletion()
Link copied to clipboard
protected open fun cleanupResource(resourceHolder: OctaviusSessionHolder?, resourceKey: OctaviusSessionKey?, committed: Boolean)
Link copied to clipboard
open fun flush()
Link copied to clipboard
protected open fun flushResource(resourceHolder: OctaviusSessionHolder?)
Link copied to clipboard
open override fun getOrder(): Int

Ahead of Spring's own connection synchronization, which releases the connection at DataSourceUtils.CONNECTION_SYNCHRONIZATION_ORDER. Ending the session runs statements on that connection, so it has to come first.

Link copied to clipboard
protected open fun processResourceAfterCommit(resourceHolder: OctaviusSessionHolder?)
Link copied to clipboard
protected open override fun releaseResource(resourceHolder: OctaviusSessionHolder, resourceKey: OctaviusSessionKey)
Link copied to clipboard
open fun resume()
Link copied to clipboard
open fun savepoint(savepoint: Any?)
Link copied to clipboard
open fun savepointRollback(savepoint: Any?)
Link copied to clipboard
protected open fun shouldReleaseAfterCompletion(resourceHolder: OctaviusSessionHolder?): Boolean
Link copied to clipboard
protected open override fun shouldReleaseBeforeCompletion(): Boolean

Moves the release of a session in a transaction Spring began from beforeCompletion to afterCompletion. Before completion a failed transaction is still failed, every statement gets 25P02, and a session that cannot reset its connection gives it up - one connection for every transaction that failed on the server. After completion the connection answers again, and Spring has not released it yet.

Link copied to clipboard
protected open fun shouldUnbindAtCompletion(): Boolean
Link copied to clipboard
open fun suspend()