You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ma...@apache.org on 2021/08/09 16:21:21 UTC

[nifi] branch main updated: NIFI-8753: Expose flowfile repository implementation configuration

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

mattyb149 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git


The following commit(s) were added to refs/heads/main by this push:
     new 34ab0d8  NIFI-8753: Expose flowfile repository implementation configuration
34ab0d8 is described below

commit 34ab0d8c2560a4e08e1e77c2580c61a3ae9d0159
Author: Mauro Riva <le...@gmail.com>
AuthorDate: Sat Jul 3 11:31:44 2021 +0200

    NIFI-8753: Expose flowfile repository implementation configuration
    
    NIFI-8753: Fixed implementation in test to VolatileFlowFileRepository
    Signed-off-by: Matthew Burgess <ma...@apache.org>
    
    This closes #5196
---
 .../minifi/bootstrap/util/ConfigTransformer.java   |   2 +-
 .../bootstrap/util/ConfigTransformerTest.java      |  25 +++++
 .../src/test/resources/NIFI-8753/config.yml}       |  84 +++++++-------
 .../resources/NIFI-8753/nifi.properties.before     | 121 +++++++++++++++++++++
 .../commons/schema/FlowFileRepositorySchema.java   |  10 ++
 .../src/test/resources/1.5_RPG_Handling.yml        |   1 +
 .../src/test/resources/CsvToJson.yml               |   1 +
 .../test/resources/DecompressionCircularFlow.yml   |   1 +
 .../resources/InvokeHttpMiNiFiTemplateTest.yml     |   1 +
 .../resources/MINIFI-521_1.3_TemplateEncoding.yml  |   1 +
 .../src/test/resources/MultipleRelationships.yml   |   1 +
 .../src/test/resources/MultipleUriRPG.yml          |   1 +
 .../test/resources/NestedControllerServices.yml    |   1 +
 .../test/resources/NoTemplateEncodingVersion.yml   |   1 +
 .../ProcessGroupsAndRemoteProcessGroups-v2.yml     |   1 +
 .../ProcessGroupsAndRemoteProcessGroups.yml        |   1 +
 ...aceTextExpressionLanguageCSVReformatting-v1.yml |   1 +
 ...eplaceTextExpressionLanguageCSVReformatting.yml |   1 +
 .../test/resources/SimpleRPGToLogAttributes.yml    |   1 +
 .../src/test/resources/SimpleTailFileToRPG-v1.yml  |   1 +
 .../src/test/resources/SimpleTailFileToRPG-v2.yml  |   1 +
 .../src/test/resources/SimpleTailFileToRPG.yml     |   1 +
 .../src/test/resources/StressTestFramework-v1.yml  |   1 +
 .../src/test/resources/StressTestFramework.yml     |   1 +
 .../test/resources/StressTestFrameworkFunnel.yml   |   1 +
 .../resources/VersionedFlowSnapshot-Simple.yml     |   1 +
 26 files changed, 217 insertions(+), 46 deletions(-)

diff --git a/minifi/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/util/ConfigTransformer.java b/minifi/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/util/ConfigTransformer.java
index fd1aa07..c99881f 100644
--- a/minifi/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/util/ConfigTransformer.java
+++ b/minifi/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/util/ConfigTransformer.java
@@ -209,7 +209,7 @@ public final class ConfigTransformer {
 
             orderedProperties.setProperty("nifi.database.directory", "./database_repository", System.lineSeparator() + "# H2 Settings");
             orderedProperties.setProperty("nifi.h2.url.append", ";LOCK_TIMEOUT=25000;WRITE_DELAY=0;AUTO_SERVER=FALSE");
-            orderedProperties.setProperty("nifi.flowfile.repository.implementation", "org.apache.nifi.controller.repository.WriteAheadFlowFileRepository",
+            orderedProperties.setProperty("nifi.flowfile.repository.implementation", String.valueOf(flowfileRepoSchema.getFlowFileRepository()),
                     System.lineSeparator() + "# FlowFile Repository");
             orderedProperties.setProperty("nifi.flowfile.repository.directory", "./flowfile_repository");
             orderedProperties.setProperty("nifi.flowfile.repository.partitions", String.valueOf(flowfileRepoSchema.getPartitions()));
diff --git a/minifi/minifi-bootstrap/src/test/java/org/apache/nifi/minifi/bootstrap/util/ConfigTransformerTest.java b/minifi/minifi-bootstrap/src/test/java/org/apache/nifi/minifi/bootstrap/util/ConfigTransformerTest.java
index a0cea58..7c621cb 100644
--- a/minifi/minifi-bootstrap/src/test/java/org/apache/nifi/minifi/bootstrap/util/ConfigTransformerTest.java
+++ b/minifi/minifi-bootstrap/src/test/java/org/apache/nifi/minifi/bootstrap/util/ConfigTransformerTest.java
@@ -719,6 +719,31 @@ public class ConfigTransformerTest {
     }
 
     @Test
+    public void testFlowFileRepoOverride() throws IOException, ConfigurationChangeException, SchemaLoaderException {
+        Properties pre216Properties = new Properties();
+        try (InputStream pre216PropertiesStream = ConfigTransformerTest.class.getClassLoader().getResourceAsStream("NIFI-8753/nifi.properties.before")) {
+            pre216Properties.load(pre216PropertiesStream);
+        }
+        pre216Properties.setProperty(ConfigTransformer.NIFI_VERSION_KEY, ConfigTransformer.NIFI_VERSION);
+
+        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+        try (InputStream configStream = ConfigTransformerTest.class.getClassLoader().getResourceAsStream("NIFI-8753/config.yml")) {
+            ConfigTransformer.writeNiFiProperties(SchemaLoader.loadConfigSchemaFromYaml(configStream), outputStream);
+        }
+        Properties properties = new Properties();
+        properties.load(new ByteArrayInputStream(outputStream.toByteArray()));
+
+        for (String name : pre216Properties.stringPropertyNames()) {
+            // Verify the Content Repo property was overridden
+            if("nifi.flowfile.repository.implementation".equals(name)) {
+                assertNotEquals("Property key " + name + " was not overridden.", pre216Properties.getProperty(name), properties.getProperty(name));
+            } else {
+                assertEquals("Property key " + name + " doesn't match.", pre216Properties.getProperty(name), properties.getProperty(name));
+            }
+        }
+    }
+
+    @Test
     public void testNullSensitiveKey() throws IOException, ConfigurationChangeException, SchemaLoaderException {
         final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
         try (final InputStream configStream = ConfigTransformerTest.class.getClassLoader().getResourceAsStream("MINIFI-537/config.yml")) {
diff --git a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/SimpleTailFileToRPG-v2.yml b/minifi/minifi-bootstrap/src/test/resources/NIFI-8753/config.yml
similarity index 62%
copy from minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/SimpleTailFileToRPG-v2.yml
copy to minifi/minifi-bootstrap/src/test/resources/NIFI-8753/config.yml
index c70a018..b911228 100644
--- a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/SimpleTailFileToRPG-v2.yml
+++ b/minifi/minifi-bootstrap/src/test/resources/NIFI-8753/config.yml
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-MiNiFi Config Version: 2
+MiNiFi Config Version: 3
 Flow Controller:
-  name: Simple TailFile To RPG
+  name: MiNiFi Flow
   comment: ''
 Core Properties:
   flow controller graceful shutdown period: 10 sec
@@ -24,6 +24,7 @@ Core Properties:
   bored yield duration: 10 millis
   max concurrent threads: 1
 FlowFile Repository:
+  implementation: org.apache.nifi.controller.repository.VolatileFlowFileRepository
   partitions: 256
   checkpoint interval: 2 mins
   always sync: false
@@ -43,20 +44,20 @@ Component Status Repository:
   buffer size: 1440
   snapshot frequency: 1 min
 Security Properties:
-  keystore: ''
-  keystore type: ''
-  keystore password: ''
-  key password: ''
-  truststore: ''
-  truststore type: ''
-  truststore password: ''
-  ssl protocol: ''
+  keystore: /tmp/ssl/localhost-ks.jks
+  keystore type: JKS
+  keystore password: localtest
+  key password: localtest
+  truststore: /tmp/ssl/localhost-ts.jks
+  truststore type: JKS
+  truststore password: localtest
+  ssl protocol: TLS
   Sensitive Props:
-    key:
+    key: ''
     algorithm: PBEWITHMD5AND256BITAES-CBC-OPENSSL
     provider: BC
 Processors:
-- id: b0c04f28-0158-1000-0000-000000000000
+- id: 94b8e610-b4ed-3ec9-b26f-c839931bf3e2
   name: TailFile
   class: org.apache.nifi.processors.standard.TailFile
   max concurrent tasks: 1
@@ -67,47 +68,40 @@ Processors:
   run duration nanos: 0
   auto-terminated relationships list: []
   Properties:
-    File Location: Local
-    File to Tail: ./logs/minifi-app.log
+    File to Tail: logs/minifi-app.log
     Initial Start Position: Beginning of File
-    Rolling Filename Pattern:
-    tail-base-directory:
-    tail-mode: Single file
-    tailfile-lookup-frequency: 10 minutes
-    tailfile-maximum-age: 24 hours
-    tailfile-recursive-lookup: 'false'
-    tailfile-rolling-strategy: Fixed name
-Process Groups: []
-Input Ports: []
-Output Ports: []
-Funnels: []
+    Rolling Filename Pattern: minifi-app*
 Connections:
-- id: b0c0c3cc-0158-1000-0000-000000000000
-  name: TailFile/success/ac0e798c-0158-1000-0588-cda9b944e011
-  source id: b0c04f28-0158-1000-0000-000000000000
+- id: f6cef9b0-8982-391c-8d70-76f33917ac12
+  name: TailToS2S
+  source id: 94b8e610-b4ed-3ec9-b26f-c839931bf3e2
   source relationship names:
   - success
-  destination id: ac0e798c-0158-1000-0588-cda9b944e011
-  max work queue size: 10000
-  max work queue data size: 1 GB
-  flowfile expiration: 0 sec
-  queue prioritizer class: ''
+  destination id: 8644cbcc-a45c-40e0-964d-5e536e2ada61
+  max work queue size: 0
+  max work queue data size: 1 MB
+  flowfile expiration: 60 sec
+  queue prioritizer class: org.apache.nifi.prioritizer.NewestFlowFileFirstPrioritizer
 Remote Process Groups:
-- id: b0c09ff0-0158-1000-0000-000000000000
-  name: ''
-  url: http://localhost:8080/nifi
+- id: 94b8e610-b4ed-3ec9-b26f-c839931bf3e3
+  name: NiFi Flow
+  url: https://localhost:8090/nifi
   comment: ''
-  timeout: 30 sec
+  timeout: 30 secs
   yield period: 10 sec
-  transport protocol: RAW
   Input Ports:
-  - id: aca664f8-0158-1000-a139-92485891d349
-    name: test2
-    comment: ''
-    max concurrent tasks: 1
-    use compression: false
-  - id: ac0e798c-0158-1000-0588-cda9b944e011
-    name: test
+  - id: 8644cbcc-a45c-40e0-964d-5e536e2ada61
+    name: tailed log
     comment: ''
     max concurrent tasks: 1
     use compression: false
+Provenance Reporting:
+  comment: ''
+  scheduling strategy: TIMER_DRIVEN
+  scheduling period: 30 sec
+  destination url: https://localhost:8090/
+  port name: provenance
+  originating url: http://${hostname(true)}:8081/nifi
+  use compression: true
+  timeout: 30 secs
+  batch size: 1000
diff --git a/minifi/minifi-bootstrap/src/test/resources/NIFI-8753/nifi.properties.before b/minifi/minifi-bootstrap/src/test/resources/NIFI-8753/nifi.properties.before
new file mode 100644
index 0000000..b6271f3
--- /dev/null
+++ b/minifi/minifi-bootstrap/src/test/resources/NIFI-8753/nifi.properties.before
@@ -0,0 +1,121 @@
+# 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.
+
+# Core Properties #
+
+nifi.version=1.1.0
+nifi.flow.configuration.file=./conf/flow.xml.gz
+nifi.flow.configuration.archive.enabled=false
+nifi.flow.configuration.archive.dir=./conf/archive/
+nifi.flowcontroller.autoResumeState=true
+nifi.flowcontroller.graceful.shutdown.period=10 sec
+nifi.flowservice.writedelay.interval=500 ms
+nifi.administrative.yield.duration=30 sec
+# If a component has no work to do (is "bored"), how long should we wait before checking again for work?
+nifi.bored.yield.duration=10 millis
+
+nifi.authority.provider.configuration.file=./conf/authority-providers.xml
+nifi.login.identity.provider.configuration.file=./conf/login-identity-providers.xml
+nifi.templates.directory=./conf/templates
+nifi.ui.banner.text= 
+nifi.ui.autorefresh.interval=30 sec
+nifi.nar.library.directory=./lib
+nifi.nar.working.directory=./work/nar/
+nifi.documentation.working.directory=./work/docs/components
+
+####################
+# State Management #
+####################
+nifi.state.management.configuration.file=./conf/state-management.xml
+# The ID of the local state provider
+nifi.state.management.provider.local=local-provider
+
+# H2 Settings
+nifi.database.directory=./database_repository
+nifi.h2.url.append=;LOCK_TIMEOUT=25000;WRITE_DELAY=0;AUTO_SERVER=FALSE
+
+# FlowFile Repository
+nifi.flowfile.repository.implementation=org.apache.nifi.controller.repository.WriteAheadFlowFileRepository
+nifi.flowfile.repository.directory=./flowfile_repository
+nifi.flowfile.repository.partitions=256
+nifi.flowfile.repository.checkpoint.interval=2 mins
+nifi.flowfile.repository.always.sync=false
+
+nifi.swap.manager.implementation=org.apache.nifi.controller.FileSystemSwapManager
+nifi.queue.swap.threshold=20000
+nifi.swap.in.period=5 sec
+nifi.swap.in.threads=1
+nifi.swap.out.period=5 sec
+nifi.swap.out.threads=4
+
+# Content Repository
+nifi.content.repository.implementation=org.apache.nifi.controller.repository.FileSystemRepository
+nifi.content.claim.max.appendable.size=10 MB
+nifi.content.claim.max.flow.files=100
+nifi.content.repository.archive.max.retention.period=12 hours
+nifi.content.repository.archive.max.usage.percentage=50%
+nifi.content.repository.archive.enabled=false
+nifi.content.repository.directory.default=./content_repository
+nifi.content.repository.always.sync=false
+
+# Provenance Repository Properties
+nifi.provenance.repository.implementation=org.apache.nifi.provenance.WriteAheadProvenanceRepository
+nifi.provenance.repository.rollover.time=1 min
+
+# Volatile Provenance Respository Properties
+nifi.provenance.repository.buffer.size=10000
+
+# Component Status Repository
+nifi.components.status.repository.implementation=org.apache.nifi.controller.status.history.VolatileComponentStatusRepository
+nifi.components.status.repository.buffer.size=1440
+nifi.components.status.snapshot.frequency=1 min
+
+# web properties #
+nifi.web.war.directory=./lib
+nifi.web.http.host=
+nifi.web.http.port=8081
+nifi.web.https.host=
+nifi.web.https.port=
+nifi.web.jetty.working.directory=./work/jetty
+nifi.web.jetty.threads=200
+
+# security properties #
+nifi.sensitive.props.key=
+nifi.sensitive.props.algorithm=PBEWITHMD5AND256BITAES-CBC-OPENSSL
+nifi.sensitive.props.provider=BC
+
+nifi.security.keystore=/tmp/ssl/localhost-ks.jks
+nifi.security.keystoreType=JKS
+nifi.security.keystorePasswd=localtest
+nifi.security.keyPasswd=localtest
+nifi.security.truststore=/tmp/ssl/localhost-ts.jks
+nifi.security.truststoreType=JKS
+nifi.security.truststorePasswd=localtest
+nifi.security.needClientAuth=
+nifi.security.user.credential.cache.duration=24 hours
+nifi.security.user.authority.provider=file-provider
+nifi.security.user.login.identity.provider=
+nifi.security.support.new.account.requests=
+# Valid Authorities include: ROLE_MONITOR,ROLE_DFM,ROLE_ADMIN,ROLE_PROVENANCE,ROLE_NIFI
+nifi.security.anonymous.authorities=
+nifi.security.ocsp.responder.url=
+nifi.security.ocsp.responder.certificate=
+
+
+# cluster node properties (only configure for cluster nodes) #
+nifi.cluster.is.node=false
+
+# cluster manager properties (only configure for cluster manager) #
+nifi.cluster.is.manager=false
diff --git a/minifi/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/FlowFileRepositorySchema.java b/minifi/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/FlowFileRepositorySchema.java
index bf94e4d..fbb3d72 100644
--- a/minifi/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/FlowFileRepositorySchema.java
+++ b/minifi/minifi-commons/minifi-commons-schema/src/main/java/org/apache/nifi/minifi/commons/schema/FlowFileRepositorySchema.java
@@ -30,13 +30,16 @@ import static org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys.SW
  *
  */
 public class FlowFileRepositorySchema extends BaseSchema implements WritableSchema {
+    public static final String FLOWFILE_REPOSITORY_IMPLEMENTATION = "implementation";
     public static final String PARTITIONS_KEY = "partitions";
     public static final String CHECKPOINT_INTERVAL_KEY = "checkpoint interval";
+    public static final String DEFAULT_FLOWFILE_REPOSITORY_IMPLEMENTATION = "org.apache.nifi.controller.repository.WriteAheadFlowFileRepository";
     public static final int DEFAULT_PARTITIONS = 256;
     public static final String DEFAULT_CHECKPOINT_INTERVAL = "2 mins";
     public static final boolean DEFAULT_ALWAYS_SYNC = false;
 
     private Number partitions = DEFAULT_PARTITIONS;
+    private String flowFileRepository = DEFAULT_FLOWFILE_REPOSITORY_IMPLEMENTATION;
     private String checkpointInterval = DEFAULT_CHECKPOINT_INTERVAL;
     private Boolean alwaysSync = DEFAULT_ALWAYS_SYNC;
     private SwapSchema swapProperties;
@@ -46,6 +49,8 @@ public class FlowFileRepositorySchema extends BaseSchema implements WritableSche
     }
 
     public FlowFileRepositorySchema(Map map) {
+        flowFileRepository = getOptionalKeyAsType(map, FLOWFILE_REPOSITORY_IMPLEMENTATION, String.class,
+        FLOWFILE_REPO_KEY, DEFAULT_FLOWFILE_REPOSITORY_IMPLEMENTATION);
         partitions = getOptionalKeyAsType(map, PARTITIONS_KEY, Number.class, FLOWFILE_REPO_KEY, DEFAULT_PARTITIONS);
         checkpointInterval = getOptionalKeyAsType(map, CHECKPOINT_INTERVAL_KEY, String.class, FLOWFILE_REPO_KEY, DEFAULT_CHECKPOINT_INTERVAL);
         alwaysSync = getOptionalKeyAsType(map, ALWAYS_SYNC_KEY, Boolean.class, FLOWFILE_REPO_KEY, DEFAULT_ALWAYS_SYNC);
@@ -57,6 +62,7 @@ public class FlowFileRepositorySchema extends BaseSchema implements WritableSche
     @Override
     public Map<String, Object> toMap() {
         Map<String, Object> result = mapSupplier.get();
+        result.put(FLOWFILE_REPOSITORY_IMPLEMENTATION, flowFileRepository);
         result.put(PARTITIONS_KEY, partitions);
         result.put(CHECKPOINT_INTERVAL_KEY, checkpointInterval);
         result.put(ALWAYS_SYNC_KEY, alwaysSync);
@@ -64,6 +70,10 @@ public class FlowFileRepositorySchema extends BaseSchema implements WritableSche
         return result;
     }
 
+    public String getFlowFileRepository() {
+        return flowFileRepository;
+    }
+
     public Number getPartitions() {
         return partitions;
     }
diff --git a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/1.5_RPG_Handling.yml b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/1.5_RPG_Handling.yml
index b3b3409..f47bc8e 100644
--- a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/1.5_RPG_Handling.yml
+++ b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/1.5_RPG_Handling.yml
@@ -25,6 +25,7 @@ Core Properties:
   max concurrent threads: 1
   variable registry properties: ''
 FlowFile Repository:
+  implementation: org.apache.nifi.controller.repository.WriteAheadFlowFileRepository
   partitions: 256
   checkpoint interval: 2 mins
   always sync: false
diff --git a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/CsvToJson.yml b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/CsvToJson.yml
index 25509f9..0efcfab 100644
--- a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/CsvToJson.yml
+++ b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/CsvToJson.yml
@@ -25,6 +25,7 @@ Core Properties:
   max concurrent threads: 1
   variable registry properties: ''
 FlowFile Repository:
+  implementation: org.apache.nifi.controller.repository.WriteAheadFlowFileRepository
   partitions: 256
   checkpoint interval: 2 mins
   always sync: false
diff --git a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/DecompressionCircularFlow.yml b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/DecompressionCircularFlow.yml
index 274d1a7..981ef5d 100644
--- a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/DecompressionCircularFlow.yml
+++ b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/DecompressionCircularFlow.yml
@@ -25,6 +25,7 @@ Core Properties:
   max concurrent threads: 1
   variable registry properties: ''
 FlowFile Repository:
+  implementation: org.apache.nifi.controller.repository.WriteAheadFlowFileRepository
   partitions: 256
   checkpoint interval: 2 mins
   always sync: false
diff --git a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/InvokeHttpMiNiFiTemplateTest.yml b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/InvokeHttpMiNiFiTemplateTest.yml
index 2d5d635..e60ad9f 100644
--- a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/InvokeHttpMiNiFiTemplateTest.yml
+++ b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/InvokeHttpMiNiFiTemplateTest.yml
@@ -25,6 +25,7 @@ Core Properties:
   max concurrent threads: 1
   variable registry properties: ''
 FlowFile Repository:
+  implementation: org.apache.nifi.controller.repository.WriteAheadFlowFileRepository
   partitions: 256
   checkpoint interval: 2 mins
   always sync: false
diff --git a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/MINIFI-521_1.3_TemplateEncoding.yml b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/MINIFI-521_1.3_TemplateEncoding.yml
index 39d1a8c..ac0c206 100644
--- a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/MINIFI-521_1.3_TemplateEncoding.yml
+++ b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/MINIFI-521_1.3_TemplateEncoding.yml
@@ -24,6 +24,7 @@ Core Properties:
   max concurrent threads: 1
   variable registry properties: ''
 FlowFile Repository:
+  implementation: org.apache.nifi.controller.repository.WriteAheadFlowFileRepository
   partitions: 256
   checkpoint interval: 2 mins
   always sync: false
diff --git a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/MultipleRelationships.yml b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/MultipleRelationships.yml
index 00341d0..7916248 100644
--- a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/MultipleRelationships.yml
+++ b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/MultipleRelationships.yml
@@ -25,6 +25,7 @@ Core Properties:
   max concurrent threads: 1
   variable registry properties: ''
 FlowFile Repository:
+  implementation: org.apache.nifi.controller.repository.WriteAheadFlowFileRepository
   partitions: 256
   checkpoint interval: 2 mins
   always sync: false
diff --git a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/MultipleUriRPG.yml b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/MultipleUriRPG.yml
index cc9b40a..18782fe 100644
--- a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/MultipleUriRPG.yml
+++ b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/MultipleUriRPG.yml
@@ -25,6 +25,7 @@ Core Properties:
   max concurrent threads: 1
   variable registry properties: ''
 FlowFile Repository:
+  implementation: org.apache.nifi.controller.repository.WriteAheadFlowFileRepository
   partitions: 256
   checkpoint interval: 2 mins
   always sync: false
diff --git a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/NestedControllerServices.yml b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/NestedControllerServices.yml
index c18096f..66080fa 100644
--- a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/NestedControllerServices.yml
+++ b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/NestedControllerServices.yml
@@ -25,6 +25,7 @@ Core Properties:
   max concurrent threads: 1
   variable registry properties: ''
 FlowFile Repository:
+  implementation: org.apache.nifi.controller.repository.WriteAheadFlowFileRepository
   partitions: 256
   checkpoint interval: 2 mins
   always sync: false
diff --git a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/NoTemplateEncodingVersion.yml b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/NoTemplateEncodingVersion.yml
index 813f637..fc815bc 100644
--- a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/NoTemplateEncodingVersion.yml
+++ b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/NoTemplateEncodingVersion.yml
@@ -25,6 +25,7 @@ Core Properties:
   max concurrent threads: 1
   variable registry properties: ''
 FlowFile Repository:
+  implementation: org.apache.nifi.controller.repository.WriteAheadFlowFileRepository
   partitions: 256
   checkpoint interval: 2 mins
   always sync: false
diff --git a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/ProcessGroupsAndRemoteProcessGroups-v2.yml b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/ProcessGroupsAndRemoteProcessGroups-v2.yml
index 1d5c880..239820b 100644
--- a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/ProcessGroupsAndRemoteProcessGroups-v2.yml
+++ b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/ProcessGroupsAndRemoteProcessGroups-v2.yml
@@ -24,6 +24,7 @@ Core Properties:
   bored yield duration: 10 millis
   max concurrent threads: 1
 FlowFile Repository:
+  implementation: org.apache.nifi.controller.repository.WriteAheadFlowFileRepository
   partitions: 256
   checkpoint interval: 2 mins
   always sync: false
diff --git a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/ProcessGroupsAndRemoteProcessGroups.yml b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/ProcessGroupsAndRemoteProcessGroups.yml
index 3e1c6f8..10f4e19 100644
--- a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/ProcessGroupsAndRemoteProcessGroups.yml
+++ b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/ProcessGroupsAndRemoteProcessGroups.yml
@@ -25,6 +25,7 @@ Core Properties:
   max concurrent threads: 1
   variable registry properties: ''
 FlowFile Repository:
+  implementation: org.apache.nifi.controller.repository.WriteAheadFlowFileRepository
   partitions: 256
   checkpoint interval: 2 mins
   always sync: false
diff --git a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/ReplaceTextExpressionLanguageCSVReformatting-v1.yml b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/ReplaceTextExpressionLanguageCSVReformatting-v1.yml
index d0f1d66..3aca1b7 100644
--- a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/ReplaceTextExpressionLanguageCSVReformatting-v1.yml
+++ b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/ReplaceTextExpressionLanguageCSVReformatting-v1.yml
@@ -23,6 +23,7 @@ Core Properties:
   bored yield duration: 10 millis
   max concurrent threads: 1
 FlowFile Repository:
+  implementation: org.apache.nifi.controller.repository.WriteAheadFlowFileRepository
   partitions: 256
   checkpoint interval: 2 mins
   always sync: false
diff --git a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/ReplaceTextExpressionLanguageCSVReformatting.yml b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/ReplaceTextExpressionLanguageCSVReformatting.yml
index 0275041..a8873a4 100644
--- a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/ReplaceTextExpressionLanguageCSVReformatting.yml
+++ b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/ReplaceTextExpressionLanguageCSVReformatting.yml
@@ -25,6 +25,7 @@ Core Properties:
   max concurrent threads: 1
   variable registry properties: ''
 FlowFile Repository:
+  implementation: org.apache.nifi.controller.repository.WriteAheadFlowFileRepository
   partitions: 256
   checkpoint interval: 2 mins
   always sync: false
diff --git a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/SimpleRPGToLogAttributes.yml b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/SimpleRPGToLogAttributes.yml
index 3e317c7..184f7ac 100644
--- a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/SimpleRPGToLogAttributes.yml
+++ b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/SimpleRPGToLogAttributes.yml
@@ -25,6 +25,7 @@ Core Properties:
   max concurrent threads: 1
   variable registry properties: ''
 FlowFile Repository:
+  implementation: org.apache.nifi.controller.repository.WriteAheadFlowFileRepository
   partitions: 256
   checkpoint interval: 2 mins
   always sync: false
diff --git a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/SimpleTailFileToRPG-v1.yml b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/SimpleTailFileToRPG-v1.yml
index 183d891..3807f9b 100644
--- a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/SimpleTailFileToRPG-v1.yml
+++ b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/SimpleTailFileToRPG-v1.yml
@@ -23,6 +23,7 @@ Core Properties:
   bored yield duration: 10 millis
   max concurrent threads: 1
 FlowFile Repository:
+  implementation: org.apache.nifi.controller.repository.WriteAheadFlowFileRepository
   partitions: 256
   checkpoint interval: 2 mins
   always sync: false
diff --git a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/SimpleTailFileToRPG-v2.yml b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/SimpleTailFileToRPG-v2.yml
index c70a018..5476812 100644
--- a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/SimpleTailFileToRPG-v2.yml
+++ b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/SimpleTailFileToRPG-v2.yml
@@ -24,6 +24,7 @@ Core Properties:
   bored yield duration: 10 millis
   max concurrent threads: 1
 FlowFile Repository:
+  implementation: org.apache.nifi.controller.repository.WriteAheadFlowFileRepository
   partitions: 256
   checkpoint interval: 2 mins
   always sync: false
diff --git a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/SimpleTailFileToRPG.yml b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/SimpleTailFileToRPG.yml
index 813f637..fc815bc 100644
--- a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/SimpleTailFileToRPG.yml
+++ b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/SimpleTailFileToRPG.yml
@@ -25,6 +25,7 @@ Core Properties:
   max concurrent threads: 1
   variable registry properties: ''
 FlowFile Repository:
+  implementation: org.apache.nifi.controller.repository.WriteAheadFlowFileRepository
   partitions: 256
   checkpoint interval: 2 mins
   always sync: false
diff --git a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/StressTestFramework-v1.yml b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/StressTestFramework-v1.yml
index 970552b..c30c9d4 100644
--- a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/StressTestFramework-v1.yml
+++ b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/StressTestFramework-v1.yml
@@ -23,6 +23,7 @@ Core Properties:
   bored yield duration: 10 millis
   max concurrent threads: 1
 FlowFile Repository:
+  implementation: org.apache.nifi.controller.repository.WriteAheadFlowFileRepository
   partitions: 256
   checkpoint interval: 2 mins
   always sync: false
diff --git a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/StressTestFramework.yml b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/StressTestFramework.yml
index f6e2fbd..3003750 100644
--- a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/StressTestFramework.yml
+++ b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/StressTestFramework.yml
@@ -25,6 +25,7 @@ Core Properties:
   max concurrent threads: 1
   variable registry properties: ''
 FlowFile Repository:
+  implementation: org.apache.nifi.controller.repository.WriteAheadFlowFileRepository
   partitions: 256
   checkpoint interval: 2 mins
   always sync: false
diff --git a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/StressTestFrameworkFunnel.yml b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/StressTestFrameworkFunnel.yml
index 66d190b..df2d0bf 100644
--- a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/StressTestFrameworkFunnel.yml
+++ b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/StressTestFrameworkFunnel.yml
@@ -25,6 +25,7 @@ Core Properties:
   max concurrent threads: 1
   variable registry properties: ''
 FlowFile Repository:
+  implementation: org.apache.nifi.controller.repository.WriteAheadFlowFileRepository
   partitions: 256
   checkpoint interval: 2 mins
   always sync: false
diff --git a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/VersionedFlowSnapshot-Simple.yml b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/VersionedFlowSnapshot-Simple.yml
index af1a759..c68d8a2 100644
--- a/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/VersionedFlowSnapshot-Simple.yml
+++ b/minifi/minifi-toolkit/minifi-toolkit-configuration/src/test/resources/VersionedFlowSnapshot-Simple.yml
@@ -25,6 +25,7 @@ Core Properties:
   max concurrent threads: 1
   variable registry properties: ''
 FlowFile Repository:
+  implementation: org.apache.nifi.controller.repository.WriteAheadFlowFileRepository
   partitions: 256
   checkpoint interval: 2 mins
   always sync: false