nifi-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From markap14 <...@git.apache.org>
Subject [GitHub] nifi pull request: NIFI-1164 decreased the chances of race conditi...
Date Mon, 16 Nov 2015 20:06:25 GMT
Github user markap14 commented on a diff in the pull request:

    https://github.com/apache/nifi/pull/126#discussion_r44975323
  
    --- Diff: nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/service/StandardControllerServiceProvider.java
---
    @@ -545,23 +546,16 @@ public void enableReferencingServices(final ControllerServiceNode
serviceNode) {
         }
     
         private void enableReferencingServices(final ControllerServiceNode serviceNode, final
List<ControllerServiceNode> recursiveReferences) {
    -        if (serviceNode.getState() != ControllerServiceState.ENABLED && serviceNode.getState()
!= ControllerServiceState.ENABLING) {
    +        if (serviceNode.getState() != ControllerServiceState.ENABLING && serviceNode.getState()
!= ControllerServiceState.ENABLED) {
                 serviceNode.verifyCanEnable(new HashSet<>(recursiveReferences));
             }
     
             final Set<ControllerServiceNode> ifEnabled = new HashSet<>();
    -        final List<ControllerServiceNode> toEnable = findRecursiveReferences(serviceNode,
ControllerServiceNode.class);
    -        for (final ControllerServiceNode nodeToEnable : toEnable) {
    +        for (final ControllerServiceNode nodeToEnable : recursiveReferences) {
                 final ControllerServiceState state = nodeToEnable.getState();
    -            if (state != ControllerServiceState.ENABLED && state != ControllerServiceState.ENABLING)
{
    +            if (state != ControllerServiceState.ENABLING && state != ControllerServiceState.ENABLED)
{
                     nodeToEnable.verifyCanEnable(ifEnabled);
                     ifEnabled.add(nodeToEnable);
    -            }
    -        }
    -
    -        for (final ControllerServiceNode nodeToEnable : toEnable) {
    --- End diff --
    
    @olegz - I agree with all of the changes made except for this. Previously, we iterated
over the list twice, because the first time we want to verify that all services can be enabled.
If any service cannot be enabled, then we want to enable none of them (all or nothing). With
the change here, we could enable a few services, and then find that the next service cannot
be enabled and throw an Exception, having enabled just a few of them. 


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

Mime
View raw message