You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ad...@apache.org on 2021/10/26 09:57:48 UTC

[nifi-minifi-cpp] 01/02: MINIFICPP-1671 Load the extensions earlier

This is an automated email from the ASF dual-hosted git repository.

adebreceni pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git

commit a024b778f59f78bf9efd2b7e35f73b8320292041
Author: Ferenc Gerlits <fg...@gmail.com>
AuthorDate: Tue Oct 26 11:54:48 2021 +0200

    MINIFICPP-1671 Load the extensions earlier
    
    Signed-off-by: Adam Debreceni <ad...@apache.org>
    
    This closes #1206
---
 controller/Controller.h                                     | 3 +++
 docker/test/integration/features/core_functionality.feature | 7 +++++++
 libminifi/src/core/FlowConfiguration.cpp                    | 5 ++---
 main/MiNiFiMain.cpp                                         | 4 ++--
 4 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/controller/Controller.h b/controller/Controller.h
index 3bb5b85..5d8a39a 100644
--- a/controller/Controller.h
+++ b/controller/Controller.h
@@ -20,6 +20,7 @@
 
 #include "core/RepositoryFactory.h"
 #include "core/ConfigurationFactory.h"
+#include "core/extension/ExtensionManager.h"
 #include "io/ClientSocket.h"
 #include "c2/ControllerSocketProtocol.h"
 #include "utils/gsl.h"
@@ -238,6 +239,8 @@ std::shared_ptr<core::controller::ControllerService> getControllerService(const
   std::string nifi_configuration_class_name = "yamlconfiguration";
   std::string content_repo_class = "filesystemrepository";
 
+  minifi::core::extension::ExtensionManager::get().initialize(configuration);
+
   configuration->get(minifi::Configure::nifi_provenance_repository_class_name, prov_repo_class);
   // Create repos for flow record and provenance
   std::shared_ptr<core::Repository> prov_repo = core::createRepository(prov_repo_class, true, "provenance");
diff --git a/docker/test/integration/features/core_functionality.feature b/docker/test/integration/features/core_functionality.feature
index 0a98d8f..b29a537 100644
--- a/docker/test/integration/features/core_functionality.feature
+++ b/docker/test/integration/features/core_functionality.feature
@@ -22,3 +22,10 @@ Feature: Core flow functionalities
 
     Then at least one flowfile with the content "first_custom_text" is placed in the monitored directory in less than 20 seconds
     And at least one flowfile with the content "second_custom_text" is placed in the monitored directory in less than 20 seconds
+
+
+  Scenario: The default configuration uses RocksDB for both the flow file and content repositories
+    Given a GenerateFlowFile processor with the "Data Format" property set to "Text"
+    When the MiNiFi instance starts up
+    Then the Minifi logs contain the following message: "Using plaintext FlowFileRepository" in less than 5 seconds
+    And the Minifi logs contain the following message: "Using plaintext DatabaseContentRepository" in less than 1 second
diff --git a/libminifi/src/core/FlowConfiguration.cpp b/libminifi/src/core/FlowConfiguration.cpp
index c097f80..d6ebd1b 100644
--- a/libminifi/src/core/FlowConfiguration.cpp
+++ b/libminifi/src/core/FlowConfiguration.cpp
@@ -17,13 +17,14 @@
  */
 
 #include "core/FlowConfiguration.h"
+
 #include <memory>
 #include <vector>
 #include <string>
+
 #include "core/ClassLoader.h"
 #include "utils/StringUtils.h"
 #include "processors/ProcessorUtils.h"
-#include "core/extension/ExtensionManager.h"
 
 namespace org {
 namespace apache {
@@ -60,8 +61,6 @@ FlowConfiguration::FlowConfiguration(
     }
     checksum_calculator_.setFileLocation(*config_path_);
   }
-
-  extension::ExtensionManager::get().initialize(configuration_);
 }
 
 static_initializers &get_static_functions() {
diff --git a/main/MiNiFiMain.cpp b/main/MiNiFiMain.cpp
index 4e1414a..c0228f6 100644
--- a/main/MiNiFiMain.cpp
+++ b/main/MiNiFiMain.cpp
@@ -218,14 +218,14 @@ int main(int argc, char **argv) {
   configure->setHome(minifiHome);
   configure->loadConfigureFile(DEFAULT_NIFI_PROPERTIES_FILE);
 
+  minifi::core::extension::ExtensionManager::get().initialize(configure);
+
   if (argc >= 3 && std::string("docs") == argv[1]) {
     if (utils::file::FileUtils::create_dir(argv[2]) != 0) {
       std::cerr << "Working directory doesn't exist and cannot be created: " << argv[2] << std::endl;
       exit(1);
     }
 
-    minifi::core::extension::ExtensionManager::get().initialize(configure);
-
     std::cerr << "Dumping docs to " << argv[2] << std::endl;
     if (argc == 4) {
       std::string filepath, filename;