# 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.
MiNiFi Config Version: 3
Flow Controller:
  name: MiNiFi2
  comment: ''
Core Properties:
  flow controller graceful shutdown period: 10 sec
  flow service write delay interval: 500 ms
  administrative yield duration: 30 sec
  bored yield duration: 10 millis
  max concurrent threads: 1
  variable registry properties: ''
FlowFile Repository:
  partitions: 256
  checkpoint interval: 2 mins
  always sync: false
  Swap:
    threshold: 20000
    in period: 5 sec
    in threads: 1
    out period: 5 sec
    out threads: 4
Content Repository:
  implementation: org.apache.nifi.controller.repository.FileSystemRepository
  content claim max appendable size: 10 MB
  content claim max flow files: 100
  always sync: false
  content repository archive max retention period: 12 hours
  content repository archive max usage percentage: 50%
  content repository archive enabled: false
Provenance Repository:
  provenance rollover time: 1 min
  implementation: org.apache.nifi.provenance.MiNiFiPersistentProvenanceRepository
  provenance max storage time: 24 hours
  provenance max storage size: 1 GB
  provenance index shard size: 500 MB
  provenance buffer size: 10000
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: ''
  Sensitive Props:
    key:
    algorithm: PBEWITHMD5AND256BITAES-CBC-OPENSSL
    provider: BC
Processors: []
Controller Services: []
Process Groups:
  - id: e544a343-e2f0-3112-0000-000000000000
    name: MiNiFi
    Processors:
      - id: 246f7d78-f8e1-3c88-0000-000000000000
        name: TailFile
        class: org.apache.nifi.processors.standard.TailFile
        max concurrent tasks: 1
        scheduling strategy: TIMER_DRIVEN
        scheduling period: 0 sec
        penalization period: 30 sec
        yield period: 1 sec
        run duration nanos: 0
        auto-terminated relationships list: []
        Properties:
          File Location: Local
          File to Tail: /opt/minifi/minifi_test_dir
          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'
    Controller Services: []
    Process Groups: []
    Input Ports: []
    Output Ports: []
    Funnels: []
    Connections:
      - id: 10de7342-41ef-37a5-0000-000000000000
        name: TailFile/success/dadd7f29-016e-1000-3c91-89495c813674
        source id: 246f7d78-f8e1-3c88-0000-000000000000
        source relationship names:
          - success
        destination id: dadd7f29-016e-1000-3c91-89495c813674
        max work queue size: 10000
        max work queue data size: 1 GB
        flowfile expiration: 0 sec
        queue prioritizer class: ''
    Remote Process Groups:
      - id: 1e18bdb9-7df3-3fba-0000-000000000000
        name: ''
        url: http://nifi-server:8080/nifi
        comment: ''
        timeout: 30 sec
        yield period: 10 sec
        transport protocol: RAW
        proxy host: ''
        proxy port: ''
        proxy user: ''
        proxy password: ''
        local network interface: ''
        Input Ports:
          - id: dadd7f29-016e-1000-3c91-89495c813674
            name: input_minifi
            comment: ''
            max concurrent tasks: 1
            use compression: false
        Output Ports: []
Input Ports: []
Output Ports: []
Funnels: []
Connections: []
Remote Process Groups: []
NiFi Properties Overrides: {}