codeconsole commented on PR #15744:
URL: https://github.com/apache/grails-core/pull/15744#issuecomment-4896586989

   Done in 973747bdff — added a "Retry Semantics" section to the Multi-Document 
Transactions docs in `advancedConfig.adoc`.
   
   It documents both halves of the boundary explicitly:
   
   - **`UnknownTransactionCommitResult`** — GORM retries the commit 
automatically (up to 3 times), since the commit may have already succeeded and 
MongoDB guarantees re-issuing it will not double-apply the writes.
   - **`TransientTransactionError`** — deliberately *not* retried. Re-running 
the transaction body re-runs its side effects (email, HTTP calls, messaging), 
which is only safe when the body is idempotent — something only the application 
can know. This matches the line Spring Data MongoDB's `MongoTransactionManager` 
draws, and relational GORM behaves the same way for transient 
serialization/deadlock errors.
   
   The docs also include a worked example of an application-level retry loop 
using `MongoException.TRANSIENT_TRANSACTION_ERROR_LABEL`, plus a pointer to 
Spring Retry's `@Retryable` as the declarative alternative. The 
`MongoTransaction` javadoc already covered the rationale at the code level, so 
this fills the user-facing gap.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to