# 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:
  content claim max appendable size: 10 MB
  content claim max flow files: 100
  always sync: false
Provenance Repository:
  provenance rollover time: 1 min
  implementation: org.apache.nifi.provenance.MiNiFiPersistentProvenanceRepository
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: {}