A transaction may expire while processing an update that takes longer than 'sesame.server.txn.registry.timeout' seconds

Description

If a remote transaction takes longer to process, the transaction connection is removed from the registry

It is a problem with the ActiveTransactionRegistry.java where a timeout is used to remove from the registry connections which are 'inactive' longer thatn a pedefined timeout.

When an update is processed by the TransactionController, the connection is retrieved and locked but that does not prevent it from being removed from the cache once the timeout expires.

This may cause unexpected RepositoryExceptions in the remote code when the transaction is about to be removed via a dedicated 'DELETE' request (from remote sesame session instance that initiate the commit) Subsequently, its transactionURL member is not cleared in the session and it became unusable (the Sesame session instance that initiated the commit())

Environment

any

Assignee

Jeen Broekstra

Reporter

Damyan Ognyanov

Labels

None

Components

Affects versions

Priority

Major
Configure