spring-data icon indicating copy to clipboard operation
spring-data copied to clipboard

[DE-771] stream transactions mapping

Open rashtao opened this issue 1 year ago • 5 comments

This PR fixes the resolution of linked entities ( eg. referenced in fields annotated with @From, @To, @Ref… ) within a stream transaction. The linked entities are resolved using the same stream transaction used to retrieve the container entity (if any).

This applies to entities retrieved using repositories, template operations as well as using the underlying Java driver directly.

Lazy relations are also resolved using the same transaction. If the transaction has been already committed or aborted when the proxy is resolved, then an exception will be thrown. The user is responsible to initialize all the lazy associations prior to committing or aborting the transaction.


fixes #298

rashtao avatar Apr 10 '24 14:04 rashtao

This looks like a good baseline to implement #80, will rebase afterwards!

aburmeis avatar Apr 10 '24 15:04 aburmeis

not sure, but looking into ArangoResultConverter there seems to be a break. Maybe adding the stream transaction id to the ArangoExtCursor (if cursor of that type) could help to pass a tx-context to the converter in buildGeoResult()?

aburmeis avatar Apr 10 '24 15:04 aburmeis

@aburmeis thanks for the feedback. This is still WIP, ArangoResultConverter#buildGeoResult() code paths are indeed not covered yet.

rashtao avatar Apr 15 '24 08:04 rashtao

Blocked by BTS-1859

rashtao avatar Apr 22 '24 08:04 rashtao

This PR is currently on hold, since use of stream transactions in Spring Data is constrained by a limitation in ArangoDB affecting AQL cursors within stream transactions (BTS-1859). Currently, a AQL cursor not consumed completely (i.e. a stream cursor or a cursor returning multiple batches) blocks other requests using the same transaction. For example, it blocks mapper requests to fetch linked entities.

The issue has been internally reported and is now being scoped and prioritized.

See https://github.com/arangodb/spring-data/pull/303/files#diff-e1d2b6243110880918936e9a2f935bd6bf28cc7eef693ab5a9fbe9fe7ecbf179L17-L21

rashtao avatar Jul 20 '24 08:07 rashtao