Fix potential Invalid state. Transaction has already started
in RepositoryMetaAnalyzerTask
#2678
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
The task works in such a way that a single
QueryManager
(and thus DNExecutionContext
and associated transaction) is shared across analyses of multiple components. Failure to analyze one component does not abort the overall analysis for all components.Due to missing transaction rollbacks, the
RepositoryMetaAnalyzerTask
could end up in a situation where theQueryManager
s active transaction failed to commit for one component, such that persisting of results for all following components would fail withNucleusTransactionException: Invalid state. Transaction has already started
.This fix is a mere workaround for the missing rollback of the
persist
method. #2677 has been raised to address this for the entire application.Addressed Issue
Relates to #2677.
Additional Details
N/A
Checklist
This PR fixes a defect, and I have provided tests to verify that the fix is effectiveThis PR implements an enhancement, and I have provided tests to verify that it works as intendedThis PR introduces changes to the database model, and I have added corresponding update logicThis PR introduces new or alters existing behavior, and I have updated the documentation accordingly