Program: 132115
Project: 132115
Buggy source:
@Override public void onDataChanged(final AsyncDataChangeEvent<InstanceIdentifier<?>,DataObject> change){
  printTraceStart(LOG);
  Map<InstanceIdentifier<?>,DataObject> dataOriginalDataObject=change.getOriginalData();
  for (  Map.Entry<InstanceIdentifier<?>,DataObject> entry : dataOriginalDataObject.entrySet()) {
    if (entry.getValue() instanceof Node) {
      Node originalNode=(Node)entry.getValue();
      LOG.debug("String_Node_Str",originalNode.toString());
    }
  }
  Map<InstanceIdentifier<?>,DataObject> dataCreatedObject=change.getCreatedData();
  for (  Map.Entry<InstanceIdentifier<?>,DataObject> entry : dataCreatedObject.entrySet()) {
    if (entry.getValue() instanceof Node) {
      Node createdNode=(Node)entry.getValue();
      LOG.debug("String_Node_Str",createdNode.toString());
      ServiceFunctionForwarder serviceFunctionForwarder=SfcOvsToSffMappingAPI.buildServiceFunctionForwarderFromNode(createdNode);
      if ((serviceFunctionForwarder != null) && SfcProviderServiceForwarderAPI.putServiceFunctionForwarderExecutor(serviceFunctionForwarder)) {
        LOG.info("String_Node_Str",serviceFunctionForwarder.getName());
      }
    }
  }
  Map<InstanceIdentifier<?>,DataObject> dataUpdatedObject=change.getUpdatedData();
  for (  Map.Entry<InstanceIdentifier<?>,DataObject> entry : dataUpdatedObject.entrySet()) {
    if ((entry.getValue() instanceof Node) && (!dataCreatedObject.containsKey(entry.getKey()))) {
      Node updatedNode=(Node)entry.getValue();
      LOG.debug("String_Node_Str",updatedNode.toString());
      ServiceFunctionForwarder serviceFunctionForwarder=SfcOvsToSffMappingAPI.buildServiceFunctionForwarderFromNode(updatedNode);
      if ((serviceFunctionForwarder != null) && SfcProviderServiceForwarderAPI.updateServiceFunctionForwarderExecutor(serviceFunctionForwarder)) {
        LOG.info("String_Node_Str",serviceFunctionForwarder.getName());
      }
    }
  }
  Set<InstanceIdentifier<?>> dataRemovedConfigurationIID=change.getRemovedPaths();
  for (  InstanceIdentifier instanceIdentifier : dataRemovedConfigurationIID) {
    DataObject dataObject=dataOriginalDataObject.get(instanceIdentifier);
    if (dataObject instanceof Node) {
      Node deletedNode=(Node)dataObject;
      LOG.debug("String_Node_Str",deletedNode.toString());
      String sffName=SfcOvsToSffMappingAPI.getServiceForwarderNameFromNode(deletedNode);
      if (SfcProviderServiceForwarderAPI.deleteServiceFunctionForwarderExecutor(sffName)) {
        LOG.info("String_Node_Str",sffName);
      }
    }
 else     if (dataObject instanceof OvsdbBridgeAugmentation) {
      OvsdbBridgeAugmentation deletedBridge=(OvsdbBridgeAugmentation)dataObject;
      LOG.error("String_Node_Str",deletedBridge.toString());
      KeyedInstanceIdentifier keyedInstanceIdentifier=(KeyedInstanceIdentifier)instanceIdentifier.firstIdentifierOf(Node.class);
      if (keyedInstanceIdentifier != null) {
        NodeKey nodeKey=(NodeKey)keyedInstanceIdentifier.getKey();
        String nodeId=nodeKey.getNodeId().getValue();
        if (SfcProviderServiceForwarderAPI.deleteServiceFunctionForwarderExecutor(nodeId)) {
          LOG.info("String_Node_Str",nodeId);
        }
      }
    }
 else     if (dataObject instanceof OvsdbTerminationPointAugmentation) {
      OvsdbTerminationPointAugmentation deletedTerminationPoint=(OvsdbTerminationPointAugmentation)dataObject;
      LOG.error("String_Node_Str",deletedTerminationPoint.toString());
      KeyedInstanceIdentifier keyedInstanceIdentifier=(KeyedInstanceIdentifier)instanceIdentifier.firstIdentifierOf(Node.class);
      if (keyedInstanceIdentifier != null) {
        NodeKey nodeKey=(NodeKey)keyedInstanceIdentifier.getKey();
        String nodeId=nodeKey.getNodeId().getValue();
        if (SfcProviderServiceForwarderAPI.deleteSffDataPlaneLocatorExecutor(nodeId,deletedTerminationPoint.getName())) {
          LOG.info("String_Node_Str",deletedTerminationPoint.getName());
        }
      }
    }
  }
  printTraceStop(LOG);
}

Fixed version (ground truth):
@Override public void onDataChanged(final AsyncDataChangeEvent<InstanceIdentifier<?>,DataObject> change){
  printTraceStart(LOG);
  Map<InstanceIdentifier<?>,DataObject> dataOriginalDataObject=change.getOriginalData();
  for (  Map.Entry<InstanceIdentifier<?>,DataObject> entry : dataOriginalDataObject.entrySet()) {
    if (entry.getValue() instanceof Node) {
      Node originalNode=(Node)entry.getValue();
      LOG.debug("String_Node_Str",originalNode.toString());
    }
  }
  Map<InstanceIdentifier<?>,DataObject> dataCreatedObject=change.getCreatedData();
  for (  Map.Entry<InstanceIdentifier<?>,DataObject> entry : dataCreatedObject.entrySet()) {
    if (entry.getValue() instanceof Node) {
      Node createdNode=(Node)entry.getValue();
      LOG.debug("String_Node_Str",createdNode.toString());
      OvsdbNodeAugmentation ovsdbNodeAugmentation=createdNode.getAugmentation(OvsdbNodeAugmentation.class);
      if (ovsdbNodeAugmentation != null) {
        final ConnectionInfo connectionInfo=ovsdbNodeAugmentation.getConnectionInfo();
        if (connectionInfo != null) {
          CheckedFuture<Optional<ServiceFunctionForwarders>,ReadFailedException> exitsingSffs=readServiceFunctionForwarders();
          Futures.addCallback(exitsingSffs,new FutureCallback<Optional<ServiceFunctionForwarders>>(){
            @Override public void onSuccess(            Optional<ServiceFunctionForwarders> optionalSffs){
              if (optionalSffs.isPresent()) {
                ServiceFunctionForwarder sff=findSffByIp(optionalSffs.get(),connectionInfo.getRemoteIp());
                if (sff != null) {
                  SfcOvsSffEntryDataListener.addOvsdbAugmentations(sff,opendaylightSfc.getExecutor());
                }
              }
            }
            @Override public void onFailure(            Throwable t){
              LOG.error("String_Node_Str");
            }
          }
);
        }
      }
    }
  }
  printTraceStop(LOG);
}