NIFI-16286 - Prevent stale Parameter Context provenance from breaking context retrieval - #11618
Conversation
… context retrieval
exceptionfactory
left a comment
There was a problem hiding this comment.
Thanks for addressing this behavior of Parameter Contexts @pvillard31. The functional changes look straightforward, but I'm concerned about the test approach that attempts to capture System.err, as well as synchronizing on System.class. I would rather not assert any kind output than implement that kind of output capture strategy for expecting logs. One possibility could be pulling the behavior out to some kind of utility class, but on balance, it may be simpler and cleaner to just remove the capture and assert checks altogether.
|
Thanks for the review @exceptionfactory - pushed a commit to address your feedback |
exceptionfactory
left a comment
There was a problem hiding this comment.
Thanks for adjusting the tests @pvillard31, the latest version looks good.
Summary
NIFI-16286 - Prevent stale Parameter Context provenance from breaking context retrieval
Parameter Context update requests can round-trip effective Parameter DTOs containing source-context metadata and incorrectly persist that client-supplied context ID on a locally accepted Parameter. If the referenced source context is later deleted, the stale provenance can cause Parameter Context listing, detail retrieval, or effective-update analysis to fail with
ResourceNotFoundException. Normalize locally accepted Parameters so ownership is determined by the target context, preserve valid inherited provenance, and make DTO rendering and update analysis tolerate missing or concurrently removed source contexts with value-safe warning diagnostics. Add unit, standalone, and clustered regression coverage for local, provided, asset-backed, inherited, missing-source, and concurrent-removal scenarios.Explanations for the changes:
StandardParameterContextDAONormalize the provenance of Parameters accepted as local definitions instead of copying
ParameterDTO.parameterContext.idfrom the request. This prevents response metadata round-tripped by a client from creating a local Parameter that incorrectly references another, potentially deleted, Parameter Context, while preserving values, sensitivity, descriptions, provider status, and asset references.DtoFactoryResolve a Parameter’s source through the inheritance graph first, then consult the global lookup only when the source is known to exist. If the source is missing or disappears during lookup, report the Parameter as locally defined and emit a value-safe warning instead of allowing
ResourceNotFoundExceptionto break Parameter Context listing or detail retrieval.StandardNiFiServiceFacadeApply the same missing-source containment while calculating effective Parameter updates and affected components. Valid inherited provenance remains unchanged, but an unresolved or concurrently removed source now falls back to the current context with a diagnostic warning rather than failing the update-analysis request.
Tracking
Please complete the following tracking steps prior to pull request creation.
Issue Tracking
Pull Request Tracking
NIFI-00000NIFI-00000VerifiedstatusPull Request Formatting
mainbranchVerification
Please indicate the verification steps performed prior to pull request creation.
Build
./mvnw clean install -P contrib-checkLicensing
LICENSEandNOTICEfilesDocumentation