You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by al...@apache.org on 2017/06/27 00:00:46 UTC
nifi git commit: NIFI-3716 Created flow analyzer in NiFi Toolkit.
Repository: nifi
Updated Branches:
refs/heads/master 24e298101 -> 7314066b6
NIFI-3716 Created flow analyzer in NiFi Toolkit.
This closes #1747.
Signed-off-by: Andy LoPresto <al...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/7314066b
Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/7314066b
Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/7314066b
Branch: refs/heads/master
Commit: 7314066b6a2d5716e00884e9b6992ad60823d4a3
Parents: 24e2981
Author: Eric <x1...@gmail.com>
Authored: Sun Apr 30 21:33:12 2017 -0400
Committer: Andy LoPresto <al...@apache.org>
Committed: Mon Jun 26 15:24:30 2017 -0700
----------------------------------------------------------------------
nifi-toolkit/nifi-toolkit-assembly/pom.xml | 4 +
.../src/main/resources/bin/flow-analyzer.bat | 39 +++++
.../src/main/resources/bin/flow-analyzer.sh | 120 ++++++++++++++
nifi-toolkit/nifi-toolkit-flowanalyzer/pom.xml | 43 +++++
.../flowanalyzer/FlowAnalyzerDriver.java | 165 +++++++++++++++++++
.../nifi/toolkit/FlowAnalyzerDriverTest.java | 61 +++++++
nifi-toolkit/pom.xml | 1 +
pom.xml | 5 +
8 files changed, 438 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/nifi/blob/7314066b/nifi-toolkit/nifi-toolkit-assembly/pom.xml
----------------------------------------------------------------------
diff --git a/nifi-toolkit/nifi-toolkit-assembly/pom.xml b/nifi-toolkit/nifi-toolkit-assembly/pom.xml
index cee7c36..9286455 100644
--- a/nifi-toolkit/nifi-toolkit-assembly/pom.xml
+++ b/nifi-toolkit/nifi-toolkit-assembly/pom.xml
@@ -80,6 +80,10 @@ language governing permissions and limitations under the License. -->
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-toolkit-zookeeper-migrator</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.nifi</groupId>
+ <artifactId>nifi-toolkit-flowanalyzer</artifactId>
+ </dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
http://git-wip-us.apache.org/repos/asf/nifi/blob/7314066b/nifi-toolkit/nifi-toolkit-assembly/src/main/resources/bin/flow-analyzer.bat
----------------------------------------------------------------------
diff --git a/nifi-toolkit/nifi-toolkit-assembly/src/main/resources/bin/flow-analyzer.bat b/nifi-toolkit/nifi-toolkit-assembly/src/main/resources/bin/flow-analyzer.bat
new file mode 100644
index 0000000..4c7e738
--- /dev/null
+++ b/nifi-toolkit/nifi-toolkit-assembly/src/main/resources/bin/flow-analyzer.bat
@@ -0,0 +1,39 @@
+@echo off
+rem
+rem Licensed to the Apache Software Foundation (ASF) under one or more
+rem contributor license agreements. See the NOTICE file distributed with
+rem this work for additional information regarding copyright ownership.
+rem The ASF licenses this file to You under the Apache License, Version 2.0
+rem (the "License"); you may not use this file except in compliance with
+rem the License. You may obtain a copy of the License at
+rem
+rem http://www.apache.org/licenses/LICENSE-2.0
+rem
+rem Unless required by applicable law or agreed to in writing, software
+rem distributed under the License is distributed on an "AS IS" BASIS,
+rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+rem See the License for the specific language governing permissions and
+rem limitations under the License.
+rem
+
+rem Use JAVA_HOME if it's set; otherwise, just use java
+
+if "%JAVA_HOME%" == "" goto noJavaHome
+if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome
+set JAVA_EXE=%JAVA_HOME%\bin\java.exe
+goto startConfig
+
+:noJavaHome
+echo The JAVA_HOME environment variable is not defined correctly.
+echo Instead the PATH will be used to find the java executable.
+echo.
+set JAVA_EXE=java
+goto startConfig
+
+:startConfig
+set LIB_DIR=%~dp0..\classpath;%~dp0..\lib
+
+SET JAVA_PARAMS=-cp %LIB_DIR%\* -Xms12m -Xmx24m %JAVA_ARGS% org.apache.nifi.toolkit.flowanalyzer.FlowAnalyzerDriver
+
+cmd.exe /C ""%JAVA_EXE%" %JAVA_PARAMS% %* ""
+
http://git-wip-us.apache.org/repos/asf/nifi/blob/7314066b/nifi-toolkit/nifi-toolkit-assembly/src/main/resources/bin/flow-analyzer.sh
----------------------------------------------------------------------
diff --git a/nifi-toolkit/nifi-toolkit-assembly/src/main/resources/bin/flow-analyzer.sh b/nifi-toolkit/nifi-toolkit-assembly/src/main/resources/bin/flow-analyzer.sh
new file mode 100755
index 0000000..1ef1842
--- /dev/null
+++ b/nifi-toolkit/nifi-toolkit-assembly/src/main/resources/bin/flow-analyzer.sh
@@ -0,0 +1,120 @@
+#!/bin/sh
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#
+
+# Script structure inspired from Apache Karaf and other Apache projects with similar startup approaches
+
+SCRIPT_DIR=$(dirname "$0")
+SCRIPT_NAME=$(basename "$0")
+NIFI_TOOLKIT_HOME=$(cd "${SCRIPT_DIR}" && cd .. && pwd)
+PROGNAME=$(basename "$0")
+
+
+warn() {
+ (>&2 echo "${PROGNAME}: $*")
+}
+
+die() {
+ warn "$*"
+ exit 1
+}
+
+detectOS() {
+ # OS specific support (must be 'true' or 'false').
+ cygwin=false;
+ aix=false;
+ os400=false;
+ darwin=false;
+ case "$(uname)" in
+ CYGWIN*)
+ cygwin=true
+ ;;
+ AIX*)
+ aix=true
+ ;;
+ OS400*)
+ os400=true
+ ;;
+ Darwin)
+ darwin=true
+ ;;
+ esac
+ # For AIX, set an environment variable
+ if ${aix}; then
+ export LDR_CNTRL=MAXDATA=0xB0000000@DSA
+ echo ${LDR_CNTRL}
+ fi
+}
+
+locateJava() {
+ # Setup the Java Virtual Machine
+ if $cygwin ; then
+ [ -n "${JAVA}" ] && JAVA=$(cygpath --unix "${JAVA}")
+ [ -n "${JAVA_HOME}" ] && JAVA_HOME=$(cygpath --unix "${JAVA_HOME}")
+ fi
+
+ if [ "x${JAVA}" = "x" ] && [ -r /etc/gentoo-release ] ; then
+ JAVA_HOME=$(java-config --jre-home)
+ fi
+ if [ "x${JAVA}" = "x" ]; then
+ if [ "x${JAVA_HOME}" != "x" ]; then
+ if [ ! -d "${JAVA_HOME}" ]; then
+ die "JAVA_HOME is not valid: ${JAVA_HOME}"
+ fi
+ JAVA="${JAVA_HOME}/bin/java"
+ else
+ warn "JAVA_HOME not set; results may vary"
+ JAVA=$(type java)
+ JAVA=$(expr "${JAVA}" : '.* \(/.*\)$')
+ if [ "x${JAVA}" = "x" ]; then
+ die "java command not found"
+ fi
+ fi
+ fi
+}
+
+init() {
+ # Determine if there is special OS handling we must perform
+ detectOS
+
+ # Locate the Java VM to execute
+ locateJava "$1"
+}
+
+run() {
+ LIBS="${NIFI_TOOLKIT_HOME}/lib/*"
+
+ sudo_cmd_prefix=""
+ if $cygwin; then
+ NIFI_TOOLKIT_HOME=$(cygpath --path --windows "${NIFI_TOOLKIT_HOME}")
+ CLASSPATH="$NIFI_TOOLKIT_HOME/classpath;$(cygpath --path --windows "${LIBS}")"
+ else
+ CLASSPATH="$NIFI_TOOLKIT_HOME/classpath:${LIBS}"
+ fi
+
+ export JAVA_HOME="$JAVA_HOME"
+ export NIFI_TOOLKIT_HOME="$NIFI_TOOLKIT_HOME"
+
+ umask 0077
+ "${JAVA}" -cp "${CLASSPATH}" -Xms12m -Xmx24m org.apache.nifi.toolkit.flowanalyzer.FlowAnalyzerDriver "$@"
+ return $?
+}
+
+
+init "$1"
+run "$@"
http://git-wip-us.apache.org/repos/asf/nifi/blob/7314066b/nifi-toolkit/nifi-toolkit-flowanalyzer/pom.xml
----------------------------------------------------------------------
diff --git a/nifi-toolkit/nifi-toolkit-flowanalyzer/pom.xml b/nifi-toolkit/nifi-toolkit-flowanalyzer/pom.xml
new file mode 100644
index 0000000..eb6b93e
--- /dev/null
+++ b/nifi-toolkit/nifi-toolkit-flowanalyzer/pom.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>nifi-toolkit-flowanalyzer</artifactId>
+
+ <parent>
+ <groupId>org.apache.nifi</groupId>
+ <artifactId>nifi-toolkit</artifactId>
+ <version>1.3.0-SNAPSHOT</version>
+ </parent>
+
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.rat</groupId>
+ <artifactId>apache-rat-plugin</artifactId>
+ <configuration>
+ <excludes combine.children="append">
+ <exclude>src/test/resources/test-data.json</exclude>
+ <exclude>src/test/resources/test-data-user-pass.json</exclude>
+ </excludes>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/nifi/blob/7314066b/nifi-toolkit/nifi-toolkit-flowanalyzer/src/main/java/org/apache/nifi/toolkit/flowanalyzer/FlowAnalyzerDriver.java
----------------------------------------------------------------------
diff --git a/nifi-toolkit/nifi-toolkit-flowanalyzer/src/main/java/org/apache/nifi/toolkit/flowanalyzer/FlowAnalyzerDriver.java b/nifi-toolkit/nifi-toolkit-flowanalyzer/src/main/java/org/apache/nifi/toolkit/flowanalyzer/FlowAnalyzerDriver.java
new file mode 100644
index 0000000..216f2bd
--- /dev/null
+++ b/nifi-toolkit/nifi-toolkit-flowanalyzer/src/main/java/org/apache/nifi/toolkit/flowanalyzer/FlowAnalyzerDriver.java
@@ -0,0 +1,165 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.toolkit.flowanalyzer;
+
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.zip.GZIPInputStream;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+public class FlowAnalyzerDriver {
+ final static String CONST_BYTES_GB_CONV = "1000000000";
+ final static String CONST_BYTES_MB_CONV = "1000000";
+ final static String CONST_BYTES_KB_CONV = "1000";
+ final static int DIVIDE_SCALE = 9;
+ final static String CONST_XMLNODE_CONNECTION = "connection";
+
+ private static void printUsage() {
+ System.out.println("This application seeks to produce a report to analyze the flow.xml.gz file");
+ System.out.println(
+ "Currently the reports supported by this application are Total Storage for all queues " +
+ "backpressure, average storage of all queues backpressure, and min and max of all queues " +
+ "backpressure over the entire flow.");
+ System.out.println("\n\n\n");
+ System.out.println("Usage: flow-analyzer.sh <path to flow.xml.gz>");
+ }
+
+ public static void main(String[] args) throws Exception {
+ BigDecimal totalDataSize = new BigDecimal("0.0");
+ BigDecimal max = new BigDecimal("0.0");
+ BigDecimal min = new BigDecimal("0.0");
+ BigDecimal avg = new BigDecimal("0.0");
+ long maxQueueSize = 0L;
+ long minQueueSize = 0L;
+ long totalQueueSize = 0L;
+
+ int numberOfConnections = 0;
+
+ if (helpRequested(args)) {
+ printUsage();
+ return;
+ }
+
+ String input = args[0];
+ if (!input.contains("xml.gz"))
+ input = input + "/flow.xml.gz";
+
+ InputStream fileStream = new FileInputStream(input);
+ InputStream gzipStream = new GZIPInputStream(fileStream);
+
+ System.out.println("Using flow=" + input);
+
+ DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder documentBuilder;
+ try {
+ documentBuilder = documentBuilderFactory.newDocumentBuilder();
+ Document document = documentBuilder.parse(gzipStream);
+ NodeList connectionNode = document.getElementsByTagName(CONST_XMLNODE_CONNECTION);
+
+ for (int x = 0; x < connectionNode.getLength(); x++) {
+ Node nNode = connectionNode.item(x);
+ if (nNode.getNodeType() == Node.ELEMENT_NODE) {
+ Element maxWorkQueueSize = (Element) nNode;
+ String maxDataSize = maxWorkQueueSize.getElementsByTagName("maxWorkQueueDataSize").item(0)
+ .getTextContent();
+ BigDecimal byteValue = (convertSizeToByteValue(maxDataSize)) != null
+ ? convertSizeToByteValue(maxDataSize) : new BigDecimal("0.0");
+ numberOfConnections++;
+ avg = avg.add(byteValue);
+ String dataQueueSize = maxWorkQueueSize.getElementsByTagName("maxWorkQueueSize").item(0)
+ .getTextContent();
+ Long dataQueueSizeL = new Long(dataQueueSize);
+ totalQueueSize = dataQueueSizeL + totalQueueSize;
+ if(dataQueueSizeL > maxQueueSize)
+ maxQueueSize = dataQueueSizeL;
+ if(dataQueueSizeL < minQueueSize || minQueueSize == 0)
+ minQueueSize = dataQueueSizeL;
+ if (max.compareTo(byteValue) < 0)
+ max = byteValue;
+
+ if (byteValue.compareTo(min) < 0 || min.compareTo(new BigDecimal("0.0")) == 0)
+ min = byteValue;
+
+ totalDataSize = totalDataSize.add(byteValue);
+ }
+
+ }
+
+ System.out.println("Total Bytes Utilized by System=" + convertBytesToGB(totalDataSize).toPlainString()
+ + " GB\nMax Back Pressure Size=" + convertBytesToGB(max).toPlainString()
+ + " GB\nMin Back Pressure Size=" + convertBytesToGB(min).toPlainString()
+ + " GB\nAverage Back Pressure Size="
+ + convertBytesToGB(avg.divide(new BigDecimal(numberOfConnections), DIVIDE_SCALE, RoundingMode.HALF_UP)) + " GB");
+ System.out.println("Max Flowfile Queue Size=" + maxQueueSize + "\nMin Flowfile Queue Size=" + minQueueSize
+ + "\nAvg Flowfile Queue Size=" + new BigDecimal(totalQueueSize).divide(new BigDecimal(numberOfConnections), DIVIDE_SCALE, RoundingMode.HALF_UP));
+ gzipStream.close();
+ fileStream.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ System.out.println("Exception occurred while attempting to parse flow.xml.gz. Cause: " + e.getCause());
+ }
+
+ }
+
+ private static boolean helpRequested(String[] args) {
+ return args.length == 0 || (args.length > 0 && (args[0].equalsIgnoreCase("-h") || args[0].equalsIgnoreCase("--help")));
+ }
+
+ /**
+ *
+ * @param value to convert to bytes
+ * @return BigDecimal Byte size
+ */
+ public static BigDecimal convertSizeToByteValue(String value) {
+ BigDecimal size = null;
+
+ if (value.contains("GB")) {
+ String numericValue = value.substring(0, value.indexOf("G") - 1);
+ size = new BigDecimal(numericValue).multiply(new BigDecimal(CONST_BYTES_GB_CONV));
+ }
+
+ if (value.contains("MB")) {
+ String numericValue = value.substring(0, value.indexOf("M") - 1);
+ size = new BigDecimal(numericValue).multiply(new BigDecimal(CONST_BYTES_MB_CONV));
+ }
+
+ if (value.contains("KB")) {
+ String numericValue = value.substring(0, value.indexOf("K") - 1);
+ size = new BigDecimal(numericValue).multiply(new BigDecimal(CONST_BYTES_KB_CONV));
+ }
+
+ return size;
+ }
+
+ /**
+ * @param bytes to convert to GB
+ * @return BigDecimal bytes to GB
+ */
+ public static BigDecimal convertBytesToGB(BigDecimal bytes) {
+ return bytes.divide(new BigDecimal(CONST_BYTES_GB_CONV), DIVIDE_SCALE, RoundingMode.HALF_UP).stripTrailingZeros();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/nifi/blob/7314066b/nifi-toolkit/nifi-toolkit-flowanalyzer/src/test/java/org/apache/nifi/toolkit/FlowAnalyzerDriverTest.java
----------------------------------------------------------------------
diff --git a/nifi-toolkit/nifi-toolkit-flowanalyzer/src/test/java/org/apache/nifi/toolkit/FlowAnalyzerDriverTest.java b/nifi-toolkit/nifi-toolkit-flowanalyzer/src/test/java/org/apache/nifi/toolkit/FlowAnalyzerDriverTest.java
new file mode 100644
index 0000000..9f1243b
--- /dev/null
+++ b/nifi-toolkit/nifi-toolkit-flowanalyzer/src/test/java/org/apache/nifi/toolkit/FlowAnalyzerDriverTest.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.toolkit;
+
+import static org.junit.Assert.assertEquals;
+
+import java.math.BigDecimal;
+
+import org.apache.nifi.toolkit.flowanalyzer.FlowAnalyzerDriver;
+import org.junit.Test;
+
+public class FlowAnalyzerDriverTest {
+
+ @Test
+ public void testConvertSizeToValue() {
+
+ String gbTest = "13 GB";
+ String kbTest = "103 KB";
+ String mbTest = "20 MB";
+
+ BigDecimal gbBigDecimal = FlowAnalyzerDriver.convertSizeToByteValue(gbTest);
+ assertEquals(gbBigDecimal.toPlainString(), "13000000000");
+
+ BigDecimal kbBigDecimal = FlowAnalyzerDriver.convertSizeToByteValue(kbTest);
+ assertEquals(kbBigDecimal.toPlainString(), "103000");
+
+ BigDecimal mbBigDecimal = FlowAnalyzerDriver.convertSizeToByteValue(mbTest);
+ assertEquals(mbBigDecimal.toPlainString(), "20000000");
+ }
+
+ @Test
+ public void convertBytesToGB() {
+
+ BigDecimal gbBigDecimal = new BigDecimal("13000000000");
+ BigDecimal kbBigDecimal = new BigDecimal("103000");
+ BigDecimal mbBigDecimal = new BigDecimal("20000000");
+
+ BigDecimal result = FlowAnalyzerDriver.convertBytesToGB(gbBigDecimal);
+ assertEquals("13", result.stripTrailingZeros().toPlainString());
+
+ result = FlowAnalyzerDriver.convertBytesToGB(mbBigDecimal);
+ assertEquals("0.02", result.stripTrailingZeros().toPlainString());
+
+ result = FlowAnalyzerDriver.convertBytesToGB(kbBigDecimal);
+ assertEquals("0.000103", result.stripTrailingZeros().toPlainString());
+ }
+}
http://git-wip-us.apache.org/repos/asf/nifi/blob/7314066b/nifi-toolkit/pom.xml
----------------------------------------------------------------------
diff --git a/nifi-toolkit/pom.xml b/nifi-toolkit/pom.xml
index c2f6846..5a6b0dc 100644
--- a/nifi-toolkit/pom.xml
+++ b/nifi-toolkit/pom.xml
@@ -30,6 +30,7 @@
<module>nifi-toolkit-zookeeper-migrator</module>
<module>nifi-toolkit-flowfile-repo</module>
<module>nifi-toolkit-assembly</module>
+ <module>nifi-toolkit-flowanalyzer</module>
</modules>
<dependencyManagement>
<dependencies>
http://git-wip-us.apache.org/repos/asf/nifi/blob/7314066b/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 9aa9b88..e79d1f6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -947,6 +947,11 @@
</dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
+ <artifactId>nifi-toolkit-flowanalyzer</artifactId>
+ <version>1.3.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.nifi</groupId>
<artifactId>nifi-registry-service</artifactId>
<version>1.4.0-SNAPSHOT</version>
</dependency>