The GitHub Actions job "CI" on 
grails-core.git/fix/gorm-transaction-attribute-copy has failed.
Run started by GitHub user borinquenkid (triggered by borinquenkid).

Head commit for run:
42faa33664748d53ad33d304d8efa13718a6c54c / Walter Duque de Estrada 
<[email protected]>
fix: preserve full transaction attribute state in GrailsTransactionAttribute 
copy constructors

The TransactionAttribute and TransactionDefinition overloads previously
copied only the five TransactionDefinition fields (propagation, isolation,
timeout, readOnly, name), silently dropping rollback rules, qualifier,
labels, descriptor and timeoutString. The RuleBasedTransactionAttribute
overload delegated to super(other), which carries the rules but still
loses the attribute-level state because Spring 7's
DefaultTransactionAttribute(TransactionAttribute) copy constructor only
copies the TransactionDefinition fields.

The TransactionAttribute overload now delegates to the
TransactionDefinition overload, which recovers the dynamic type via
instanceof and snapshots rollback rules through a temporary
RuleBasedTransactionAttribute copy - reading the source's rule field
without invoking its lazy getRollbackRules(), which would mutate the
source by assigning a new list into it. All paths now explicitly carry
descriptor, timeoutString, qualifier and labels (defensively copied,
since setLabels stores the given reference), plus inheritRollbackOnly
when the source is a GrailsTransactionAttribute.

Mirrors the CustomizableRollbackTransactionAttribute fix split out of
the GormRegistry consolidation per review on #15779.

Covered by GrailsTransactionAttributeSpec (copy independence and state
preservation for every constructor dispatch path, including the
statically dispatched TransactionDefinition/TransactionAttribute
entries).

Co-Authored-By: Claude Fable 5 <[email protected]>

Report URL: https://github.com/apache/grails-core/actions/runs/30473832179

With regards,
GitHub Actions via GitBox

Reply via email to