[
https://issues.apache.org/jira/browse/NIFI-5034?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16422860#comment-16422860
]
Mark Bean commented on NIFI-5034:
---------------------------------
[~mcgilman] That stack trace was useful! The NPE was from
ControllerServiceEntityMerger.java:215 (NiFI 1.4.0)
nodeEntity.getComponent().getDescriptors().values().steram().forEach(propertyDescriptor
-> {
propertyDescriptorMap.computerIfAbsent(proertyDescriptor.getName(),
nodeIdToPropertyDescriptor -> new HashMap<>()).put(nodeIdentifier,
propertyDescriptor);
});
ControllerServiceReferencingComponentDTO.java is used to get the property
descriptors. The custom controller service contains ONLY dynamic property
support, i.e. zero PropertyDescriptors and therefore no
getSupportedPropertyDescriptor method. Somehow, these seems to be causing the
NPE. When I put in a dummy standard/non-dynamic property, I no longer receive
the error from the UI. (Unfortunately, there is another NPE to tackle, but I
think this update is honing in on the problem.)
> Error in Controller Service with dynamic property in Cluster environment
> ------------------------------------------------------------------------
>
> Key: NIFI-5034
> URL: https://issues.apache.org/jira/browse/NIFI-5034
> Project: Apache NiFi
> Issue Type: Bug
> Components: Core Framework
> Affects Versions: 1.4.0, 1.5.0
> Reporter: Mark Bean
> Priority: Major
>
> Environment: Controller Service provides a lookup service to other Controller
> Services. To configure, the lookup CS uses dynamic properties where the key
> is an arbitrary name and the value is an existing Controller Service.
> In a cluster environment only (this is not an issue for stand-alone
> environment), the UI displays returns "An unexpected error has occurred" due
> to http 500 return code. This occurs when attempting to configure the
> controller service with the dynamic property. Additionally, it throws the
> same error (http 500) when trying to configure the process group owning the
> lookup controller service. (The property on the controller service is created
> despite the 500 return code.)
> Diving into the code a bit, the fact of being a "cluster only" issue is in
> FlowResource.java:400.
> if (isReplicateRequest()) {
> return replicate(HttpMethod.GET);
> }
> The problem is the return value is null even when controller services exist.
> Ultimately, ApplicationResource.java:288 parses a map of http servlet
> parameters. The controller service should be a parameter. Yet, this map is
> empty.
> for (final Map.Entry<String, String[]> entry :
> httpServletRequest.getParameterMap().entrySet()) \{ ... }
> This problem is preventing the implementation of a Controller Service with
> dynamic properties (whose property values are other Controller Services) in a
> cluster environment.
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)