From ddda602620053dd578cf2b96d7733538bc67a82a Mon Sep 17 00:00:00 2001 From: Mike Moser Date: Fri, 13 Jan 2017 22:17:36 +0000 Subject: [PATCH] NIFI-3350 optimized documentation extraction to reduce startup time Signed-off-by: James Wing This closes #1416. --- .../java/org/apache/nifi/nar/NarUnpacker.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-nar-utils/src/main/java/org/apache/nifi/nar/NarUnpacker.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-nar-utils/src/main/java/org/apache/nifi/nar/NarUnpacker.java index 69aac84fa6..1e9ac4723c 100644 --- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-nar-utils/src/main/java/org/apache/nifi/nar/NarUnpacker.java +++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-nar-utils/src/main/java/org/apache/nifi/nar/NarUnpacker.java @@ -92,7 +92,7 @@ public final class NarUnpacker { if (!narFiles.isEmpty()) { final long startTime = System.nanoTime(); - logger.info("Expanding " + narFiles.size() + " NAR files with all processors... It can take few minutes."); + logger.info("Expanding " + narFiles.size() + " NAR files with all processors..."); for (File narFile : narFiles) { logger.debug("Expanding NAR file: " + narFile.getAbsolutePath()); @@ -264,7 +264,9 @@ public final class NarUnpacker { private static void unpackDocumentation(final File jar, final File docsDirectory, final ExtensionMapping extensionMapping) throws IOException { // determine the components that may have documentation - determineDocumentedNiFiComponents(jar, extensionMapping); + if (!determineDocumentedNiFiComponents(jar, extensionMapping)) { + return; + } // look for all documentation related to each component try (final JarFile jarFile = new JarFile(jar)) { @@ -303,7 +305,10 @@ public final class NarUnpacker { } } - private static void determineDocumentedNiFiComponents(final File jar, + /* + * Returns true if this jar file contains a NiFi component + */ + private static boolean determineDocumentedNiFiComponents(final File jar, final ExtensionMapping extensionMapping) throws IOException { try (final JarFile jarFile = new JarFile(jar)) { final JarEntry processorEntry = jarFile @@ -313,12 +318,17 @@ public final class NarUnpacker { final JarEntry controllerServiceEntry = jarFile .getJarEntry("META-INF/services/org.apache.nifi.controller.ControllerService"); + if (processorEntry==null && reportingTaskEntry==null && controllerServiceEntry==null) { + return false; + } + extensionMapping.addAllProcessors(determineDocumentedNiFiComponents(jarFile, processorEntry)); extensionMapping.addAllReportingTasks(determineDocumentedNiFiComponents(jarFile, reportingTaskEntry)); extensionMapping.addAllControllerServices(determineDocumentedNiFiComponents(jarFile, controllerServiceEntry)); + return true; } }