<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
  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.
-->
<configuration>

    <!-- ************************** VERY IMPORTANT  ************************** -->
    <!-- This file is in the Oozie configuration directory only for reference. -->
    <!-- It is not loaded by Oozie, Oozie uses its own privatecopy.            -->
    <!-- ************************** VERY IMPORTANT  ************************** -->

    <property>
        <name>oozie.output.compression.codec</name>
        <value>gz</value>
        <description>
            The name of the compression codec to use.
            The implementation class for the codec needs to be specified through another property oozie.compression.codecs.
            You can specify a comma separated list of 'Codec_name'='Codec_class' for oozie.compression.codecs
            where codec class implements the interface org.apache.oozie.compression.CompressionCodec.
            If oozie.compression.codecs is not specified, gz codec implementation is used by default.
        </description>
    </property>

    <property>
        <name>oozie.external_monitoring.enable</name>
        <value>false</value>
        <description>
            If the oozie functional metrics needs to be exposed to the metrics-server backend, set it to true
            If set to true, the following properties has to be specified : oozie.metrics.server.name,
            oozie.metrics.host, oozie.metrics.prefix, oozie.metrics.report.interval.sec, oozie.metrics.port
        </description>
    </property>

    <property>
        <name>oozie.external_monitoring.type</name>
        <value>graphite</value>
        <description>
            The name of the server to which we want to send the metrics, would be graphite or ganglia.
        </description>
    </property>

    <property>
        <name>oozie.external_monitoring.address</name>
        <value>http://localhost:2020</value>
    </property>

    <property>
        <name>oozie.external_monitoring.metricPrefix</name>
        <value>oozie</value>
    </property>

    <property>
        <name>oozie.external_monitoring.reporterIntervalSecs</name>
        <value>60</value>
    </property>

    <property>
        <name>oozie.jmx_monitoring.enable</name>
        <value>false</value>
        <description>
            If the oozie functional metrics needs to be exposed via JMX interface, set it to true.
        </description>
    </property>

    <property>
        <name>oozie.action.mapreduce.uber.jar.enable</name>
        <value>false</value>
        <description>
            If true, enables the oozie.mapreduce.uber.jar mapreduce workflow configuration property, which is used to specify an
            uber jar in HDFS.  Submitting a workflow with an uber jar requires at least Hadoop 2.2.0 or 1.2.0.  If false, workflows
            which specify the oozie.mapreduce.uber.jar configuration property will fail.
        </description>
    </property>

    <property>
        <name>oozie.action.dependency.deduplicate</name>
        <value>false</value>
        <description>
            If true, then Oozie will remove all the duplicates from the list of dependencies when they are passed to
            the jobtracker. Higher priority dependencies will remain as the following:
            Original list: "/a/a.jar#a.jar,/a/b.jar#b.jar,/b/a.jar,/b/b.jar,/c/d.jar"
            Deduplicated list: "/a/a.jar#a.jar,/a/b.jar#b.jar,/c/d.jar"
            With other words, priority order is: action jar > user workflow libs > action libs > system lib,
            where dependency with greater prio is used.
        </description>
    </property>

    <property>
        <name>oozie.processing.timezone</name>
        <value>UTC</value>
        <description>
            Oozie server timezone. Valid values are UTC and GMT(+/-)####, for example 'GMT+0530' would be India
            timezone. All dates parsed and genered dates by Oozie Coordinator/Bundle will be done in the specified
            timezone. The default value of 'UTC' should not be changed under normal circumstances. If for any reason
            is changed, note that GMT(+/-)#### timezones do not observe DST changes.
        </description>
    </property>

    <!-- Base Oozie URL: <SCHEME>://<HOST>:<PORT>/<CONTEXT> -->

    <property>
        <name>oozie.base.url</name>
        <value>http://${oozie.http.hostname}:${oozie.http.port}/oozie</value>
        <description>
             Base Oozie URL.
        </description>
    </property>

    <!-- Services -->

    <property>
        <name>oozie.system.id</name>
        <value>oozie-${user.name}</value>
        <description>
            The Oozie system ID.
        </description>
    </property>

    <property>
        <name>oozie.systemmode</name>
        <value>NORMAL</value>
        <description>
            System mode for  Oozie at startup.
        </description>
    </property>

    <property>
        <name>oozie.delete.runtime.dir.on.shutdown</name>
        <value>true</value>
        <description>
            If the runtime directory should be kept after Oozie shutdowns down.
        </description>
    </property>

    <property>
        <name>oozie.services</name>
        <value>
            org.apache.oozie.service.SchedulerService,
            org.apache.oozie.service.MetricsInstrumentationService,
            org.apache.oozie.service.MemoryLocksService,
            org.apache.oozie.service.UUIDService,
            org.apache.oozie.service.ELService,
            org.apache.oozie.service.AuthorizationService,
            org.apache.oozie.service.UserGroupInformationService,
            org.apache.oozie.service.HadoopAccessorService,
            org.apache.oozie.service.JobsConcurrencyService,
            org.apache.oozie.service.URIHandlerService,
            org.apache.oozie.service.DagXLogInfoService,
            org.apache.oozie.service.SchemaService,
            org.apache.oozie.service.LiteWorkflowAppService,
            org.apache.oozie.service.JPAService,
            org.apache.oozie.service.StoreService,
            org.apache.oozie.service.DBLiteWorkflowStoreService,
            org.apache.oozie.service.CallbackService,
            org.apache.oozie.service.ActionService,
            org.apache.oozie.service.ShareLibService,
            org.apache.oozie.service.CallableQueueService,
            org.apache.oozie.service.ActionCheckerService,
            org.apache.oozie.service.RecoveryService,
            org.apache.oozie.service.PurgeService,
            org.apache.oozie.service.CoordinatorEngineService,
            org.apache.oozie.service.BundleEngineService,
            org.apache.oozie.service.DagEngineService,
            org.apache.oozie.service.CoordMaterializeTriggerService,
            org.apache.oozie.service.StatusTransitService,
            org.apache.oozie.service.PauseTransitService,
            org.apache.oozie.service.GroupsService,
            org.apache.oozie.service.ProxyUserService,
            org.apache.oozie.service.XLogStreamingService,
            org.apache.oozie.service.JvmPauseMonitorService,
            org.apache.oozie.service.SparkConfigurationService,
            org.apache.oozie.service.SchemaCheckerService
        </value>
        <description>
            All services to be created and managed by Oozie Services singleton.
            Class names must be separated by commas.
        </description>
    </property>

    <property>
        <name>oozie.services.ext</name>
        <value> </value>
        <description>
            To add/replace services defined in 'oozie.services' with custom implementations.
            Class names must be separated by commas.
        </description>
    </property>

    <property>
        <name>oozie.service.XLogStreamingService.buffer.len</name>
        <value>4096</value>
        <description>4K buffer for streaming the logs progressively
        </description>
    </property>
    <property>
        <name>oozie.service.XLogStreamingService.error.buffer.len</name>
        <value>2048</value>
        <description>2K buffer for streaming the error logs
            progressively
        </description>
    </property>

    <property>
        <name>oozie.service.XLogStreamingService.audit.buffer.len</name>
        <value>3</value>
        <description>Number of lines for streaming the audit logs
            progressively
        </description>
    </property>

 <!-- HCatAccessorService -->
   <property>
        <name>oozie.service.HCatAccessorService.jmsconnections</name>
        <value>
        default=java.naming.factory.initial#org.apache.activemq.jndi.ActiveMQInitialContextFactory;java.naming.provider.url#tcp://localhost:61616;connectionFactoryNames#ConnectionFactory
        </value>
        <description>
        Specify the map  of endpoints to JMS configuration properties. In general, endpoint
        identifies the HCatalog server URL. "default" is used if no endpoint is mentioned
        in the query. If some JMS property is not defined, the system will use the property
        defined jndi.properties. jndi.properties files is retrieved from the application classpath.
        Mapping rules can also be provided for mapping Hcatalog servers to corresponding JMS providers.
        hcat://${1}.${2}.server.com:8020=java.naming.factory.initial#Dummy.Factory;java.naming.provider.url#tcp://broker.${2}:61616
        </description>
   </property>

 <!-- HCatAccessorService -->
   <property>
        <name>oozie.service.HCatAccessorService.jms.use.canonical.hostname</name>
        <value>false</value>
        <description>The JMS messages published from a HCat server usually contains the canonical hostname of the HCat server
        in standalone mode or the canonical name of the VIP in a case of multiple nodes in a HA setup. This setting is used
        to translate the HCat server hostname or its aliases specified by the user in the HCat URIs of the coordinator dependencies
        to its canonical name so that they can be exactly matched with the JMS dependency availability notifications.
        </description>
   </property>

    <!-- TopicService -->

   <property>
        <name>oozie.service.JMSTopicService.topic.name</name>
        <value>
        default=${username}
        </value>
        <description>
        Topic options are ${username} or ${jobId} or a fixed string which can be specified as default or for a
        particular job type.
        For e.g To have a fixed string topic for workflows, coordinators and bundles,
        specify in the following comma-separated format: {jobtype1}={some_string1}, {jobtype2}={some_string2}
        where job type can be WORKFLOW, COORDINATOR or BUNDLE.
        e.g. Following defines topic for workflow job, workflow action, coordinator job, coordinator action,
        bundle job and bundle action
        WORKFLOW=workflow,
        COORDINATOR=coordinator,
        BUNDLE=bundle
        For jobs with no defined topic, default topic will be ${username}
        </description>
    </property>

    <!-- JMS Producer connection -->
    <property>
        <name>oozie.jms.producer.connection.properties</name>
        <value>java.naming.factory.initial#org.apache.activemq.jndi.ActiveMQInitialContextFactory;java.naming.provider.url#tcp://localhost:61616;connectionFactoryNames#ConnectionFactory</value>
    </property>

 <!-- JMSAccessorService -->
    <property>
        <name>oozie.service.JMSAccessorService.connectioncontext.impl</name>
        <value>
        org.apache.oozie.jms.DefaultConnectionContext
        </value>
        <description>
        Specifies the Connection Context implementation
        </description>
    </property>


    <!-- ConfigurationService -->

    <property>
        <name>oozie.service.ConfigurationService.ignore.system.properties</name>
        <value>
            oozie.service.AuthorizationService.security.enabled
        </value>
        <description>
            Specifies "oozie.*" properties to cannot be overridden via Java system properties.
            Property names must be separated by commas.
        </description>
    </property>

    <property>
        <name>oozie.service.ConfigurationService.verify.available.properties</name>
        <value>true</value>
        <description>
            Specifies whether the available configurations check is enabled or not.
        </description>
    </property>

    <!-- SchedulerService -->

    <property>
        <name>oozie.service.SchedulerService.threads</name>
        <value>10</value>
        <description>
            The number of threads to be used by the SchedulerService to run deamon tasks.
            If maxed out, scheduled daemon tasks will be queued up and delayed until threads become available.
        </description>
    </property>

    <!--  AuthorizationService -->

    <property>
        <name>oozie.service.AuthorizationService.authorization.enabled</name>
        <value>false</value>
        <description>
            Specifies whether security (user name/admin role) is enabled or not.
            If disabled any user can manage Oozie system and manage any job.
        </description>
    </property>

    <property>
        <name>oozie.service.AuthorizationService.default.group.as.acl</name>
        <value>false</value>
        <description>
            Enables old behavior where the User's default group is the job's ACL.
        </description>
    </property>

    <property>
        <name>oozie.serviceAuthorizationService.admin.users</name>
        <value></value>
        <description>
            Comma separated list of users with admin access for the Authorization service.
        </description>
    </property>

    <property>
        <name>oozie.service.AuthorizationService.system.info.authorized.users</name>
        <value></value>
        <description>
            Comma separated list of users authorized for web service calls to get system configuration.
        </description>
    </property>

    <!-- InstrumentationService -->

    <property>
        <name>oozie.service.InstrumentationService.logging.interval</name>
        <value>60</value>
        <description>
            Interval, in seconds, at which instrumentation should be logged by the InstrumentationService.
            If set to 0 it will not log instrumentation data.
        </description>
    </property>

    <!-- PurgeService -->
    <property>
        <name>oozie.service.PurgeService.older.than</name>
        <value>30</value>
        <description>
            Completed workflow jobs older than this value, in days, will be purged by the PurgeService.
        </description>
    </property>

    <property>
        <name>oozie.service.PurgeService.coord.older.than</name>
        <value>7</value>
        <description>
            Completed coordinator jobs older than this value, in days, will be purged by the PurgeService.
        </description>
    </property>

    <property>
        <name>oozie.service.PurgeService.bundle.older.than</name>
        <value>7</value>
        <description>
            Completed bundle jobs older than this value, in days, will be purged by the PurgeService.
        </description>
    </property>

    <property>
        <name>oozie.service.PurgeService.purge.old.coord.action</name>
        <value>false</value>
        <description>
            Whether to purge completed workflows and their corresponding coordinator actions
            of long running coordinator jobs if the completed workflow jobs are older than the value
            specified in oozie.service.PurgeService.older.than.
        </description>
    </property>

    <property>
        <name>oozie.service.PurgeService.purge.limit</name>
        <value>100</value>
        <description>
            Batch size of individual DB operations used for building the list of items
            to be purged and performing actual purge.
        </description>
    </property>

    <property>
        <name>oozie.service.PurgeService.purge.interval</name>
        <value>3600</value>
        <description>
            Interval at which the purge service will run, in seconds.
        </description>
    </property>

    <property>
        <name>oozie.service.PurgeService.enable.command.line</name>
        <value>true</value>
        <description>
            Enable/Disable oozie admin purge command. By default, it is enabled.
        </description>
    </property>

    <!-- RecoveryService -->

    <property>
        <name>oozie.service.RecoveryService.wf.actions.older.than</name>
        <value>120</value>
        <description>
            Age of the actions which are eligible to be queued for recovery, in seconds.
        </description>
    </property>

    <property>
        <name>oozie.service.RecoveryService.wf.actions.created.time.interval</name>
        <value>7</value>
        <description>
        Created time period of the actions which are eligible to be queued for recovery in days.
        </description>
    </property>

    <property>
        <name>oozie.service.RecoveryService.callable.batch.size</name>
        <value>10</value>
        <description>
            This value determines the number of callable which will be batched together
            to be executed by a single thread.
        </description>
    </property>

    <property>
        <name>oozie.service.RecoveryService.push.dependency.interval</name>
        <value>200</value>
        <description>
            This value determines the delay for push missing dependency command queueing
            in Recovery Service
        </description>
    </property>

    <property>
        <name>oozie.service.RecoveryService.interval</name>
        <value>60</value>
        <description>
            Interval at which the RecoverService will run, in seconds.
        </description>
    </property>

    <property>
        <name>oozie.service.RecoveryService.coord.older.than</name>
        <value>600</value>
        <description>
            Age of the Coordinator jobs or actions which are eligible to be queued for recovery, in seconds.
        </description>
    </property>

    <property>
        <name>oozie.service.RecoveryService.bundle.older.than</name>
        <value>600</value>
        <description>
            Age of the Bundle jobs which are eligible to be queued for recovery, in seconds.
        </description>
    </property>

    <!-- CallableQueueService -->

    <property>
        <name>oozie.service.CallableQueueService.queue.size</name>
        <value>10000</value>
        <description>Max callable queue size</description>
    </property>

    <property>
        <name>oozie.service.CallableQueueService.threads</name>
        <value>10</value>
        <description>Number of threads used for executing callables</description>
    </property>

    <property>
        <name>oozie.service.CallableQueueService.delayedcallable.threads</name>
        <value>1</value>
        <description>
            The number of threads where delayed tasks are executed. Upon expiration, the tasks are immediately
            inserted into the main queue to properly handle priorities. This means that no actual business logic
            is executed in this thread pool, so under normal circumstances, this value can be set to a low number.

            Note that this property is completely unrelated to oozie.service.SchedulerService.threads which
            tells how many scheduled background tasks can run in parallel at the same time (like PurgeService,
            StatusTransitService, etc).
        </description>
    </property>

    <property>
        <name>oozie.service.CallableQueueService.queue.newImpl</name>
        <value>true</value>
        <description>
            If set to true, then CallableQueueService will use a faster, less CPU-intensive queuing mechanism to execute
            asynchronous tasks internally.
            The old implementation generates noticeable CPU load even if Oozie is completely idle, especially when
            oozie.service.CallableQueueService.threads is set to a large number. The previous queuing mechanism is kept as a
            fallback option.
            This is an experimental feature in Oozie 5.1.0 that needs to be re-evaluated upon an upcoming minor release,
            meaning the old implementation and this feature flag will also be removed.
        </description>
    </property>

    <property>
        <name>oozie.service.CallableQueueService.queue.awaitTermination.timeout.seconds</name>
        <value>30</value>
        <description>
            Number of seconds while awaiting termination of ThreadPoolExecutor instances when CallableQueueService#destroy()
            is called, in seconds.
            The more elements you tend to have in your callable queue, the more you want CallableQueueService to wait
            before shutting down its thread pools.
        </description>
    </property>

    <property>
        <name>oozie.service.CallableQueueService.callable.concurrency</name>
        <value>3</value>
        <description>
            Maximum concurrency for a given callable type.
            Each command is a callable type (submit, start, run, signal, job, jobs, suspend,resume, etc).
            Each action type is a callable type (Map-Reduce, Pig, SSH, FS, sub-workflow, etc).
            All commands that use action executors (action-start, action-end, action-kill and action-check) use
            the action type as the callable type.
        </description>
    </property>

    <property>
        <name>oozie.service.CallableQueueService.callable.next.eligible</name>
        <value>true</value>
        <description>
            If true, when a callable in the queue has already reached max concurrency,
            Oozie continuously find next one which has not yet reach max concurrency.
        </description>
    </property>

    <property>
        <name>oozie.service.CallableQueueService.InterruptMapMaxSize</name>
        <value>500</value>
        <description>
            Maximum Size of the Interrupt Map, the interrupt element will not be inserted in the map if exceeded the size.
        </description>
    </property>

    <property>
        <name>oozie.service.CallableQueueService.InterruptTypes</name>
        <value>kill,resume,suspend,bundle_kill,bundle_resume,bundle_suspend,coord_kill,coord_change,coord_resume,coord_suspend</value>
        <description>
            Getting the types of XCommands that are considered to be of Interrupt type
        </description>
    </property>

    <!--  CoordMaterializeTriggerService -->

    <property>
        <name>oozie.service.CoordMaterializeTriggerService.lookup.interval
        </name>
        <value>300</value>
        <description> Coordinator Job Lookup interval.(in seconds).
        </description>
    </property>

    <!-- Enable this if you want different scheduling interval for CoordMaterializeTriggerService.
    By default it will use lookup interval as scheduling interval
    <property>
        <name>oozie.service.CoordMaterializeTriggerService.scheduling.interval
        </name>
        <value>300</value>
        <description> The frequency at which the CoordMaterializeTriggerService will run.</description>
    </property>
    -->

    <property>
        <name>oozie.service.CoordMaterializeTriggerService.materialization.window
        </name>
        <value>3600</value>
        <description> Coordinator Job Lookup command materialized each
            job for this next "window" duration
        </description>
    </property>

    <property>
        <name>oozie.service.CoordMaterializeTriggerService.callable.batch.size</name>
        <value>10</value>
        <description>
            This value determines the number of callable which will be batched together
            to be executed by a single thread.
        </description>
    </property>

    <property>
        <name>oozie.service.CoordMaterializeTriggerService.materialization.system.limit</name>
        <value>50</value>
        <description>
            This value determines the number of coordinator jobs to be materialized at a given time.
        </description>
    </property>

    <property>
        <name>oozie.service.coord.normal.default.timeout
        </name>
        <value>120</value>
        <description>Default timeout for a coordinator action input check (in minutes) for normal job.
            -1 means infinite timeout</description>
    </property>

    <property>
        <name>oozie.service.coord.default.max.timeout
        </name>
        <value>86400</value>
        <description>Default maximum timeout for a coordinator action input check (in minutes). 86400= 60days
        </description>
    </property>

    <property>
        <name>oozie.service.coord.input.check.requeue.interval
        </name>
        <value>60000</value>
        <description>Command re-queue interval for coordinator data input check (in millisecond).
        </description>
    </property>

    <property>
        <name>oozie.service.coord.input.check.requeue.interval.additional.delay</name>
        <value>0</value>
        <description>This value (in seconds) will be added into oozie.service.coord.input.check.requeue.interval and resulting value
will be the requeue interval for the actions which are waiting for a long time without any input.
        </description>
    </property>

    <property>
        <name>oozie.service.coord.push.check.requeue.interval
        </name>
        <value>600000</value>
        <description>Command re-queue interval for push dependencies (in millisecond).
        </description>
    </property>

    <property>
        <name>oozie.service.coord.default.concurrency
        </name>
        <value>1</value>
        <description>Default concurrency for a coordinator job to determine how many maximum action should
        be executed at the same time. -1 means infinite concurrency.</description>
    </property>

    <property>
        <name>oozie.service.coord.default.throttle
        </name>
        <value>12</value>
        <description>Default throttle for a coordinator job to determine how many maximum action should
         be in WAITING state at the same time.</description>
    </property>

    <property>
        <name>oozie.service.coord.materialization.throttling.factor
        </name>
        <value>0.05</value>
        <description>Determine how many maximum actions should be in WAITING state for a single job at any time. The value is calculated by
         this factor X the total queue size.</description>
    </property>

    <property>
        <name>oozie.service.coord.check.maximum.frequency</name>
        <value>true</value>
        <description>
            When true, Oozie will reject any coordinators with a frequency faster than 5 minutes.  It is not recommended to disable
            this check or submit coordinators with frequencies faster than 5 minutes: doing so can cause unintended behavior and
            additional system stress.
        </description>
    </property>

    <!-- ELService -->
    <!--  List of supported groups for ELService -->
    <property>
        <name>oozie.service.ELService.groups</name>
        <value>job-submit,workflow,wf-sla-submit,coord-job-submit-freq,coord-job-submit-nofuncs,coord-job-submit-data,coord-job-submit-instances,coord-sla-submit,coord-action-create,coord-action-create-inst,coord-sla-create,coord-action-start,coord-job-wait-timeout,bundle-submit,coord-job-submit-initial-instance</value>
        <description>List of groups for different ELServices</description>
    </property>

    <property>
        <name>oozie.service.ELService.constants.job-submit</name>
        <value>
        </value>
        <description>
            EL constant declarations, separated by commas, format is [PREFIX:]NAME=CLASS#CONSTANT.
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.functions.job-submit</name>
        <value>
        </value>
        <description>
          EL functions declarations, separated by commas, format is [PREFIX:]NAME=CLASS#METHOD.
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.ext.constants.job-submit</name>
        <value> </value>
        <description>
            EL constant declarations, separated by commas, format is [PREFIX:]NAME=CLASS#CONSTANT.
            This property is a convenience property to add extensions without having to include all the built in ones.
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.ext.functions.job-submit</name>
        <value> </value>
        <description>
            EL functions declarations, separated by commas, format is [PREFIX:]NAME=CLASS#METHOD.
            This property is a convenience property to add extensions without having to include all the built in ones.
        </description>
    </property>

<!-- Workflow specifics -->
    <property>
        <name>oozie.service.ELService.constants.workflow</name>
        <value>
            KB=org.apache.oozie.util.ELConstantsFunctions#KB,
            MB=org.apache.oozie.util.ELConstantsFunctions#MB,
            GB=org.apache.oozie.util.ELConstantsFunctions#GB,
            TB=org.apache.oozie.util.ELConstantsFunctions#TB,
            PB=org.apache.oozie.util.ELConstantsFunctions#PB,
            RECORDS=org.apache.oozie.action.hadoop.HadoopELFunctions#RECORDS,
            MAP_IN=org.apache.oozie.action.hadoop.HadoopELFunctions#MAP_IN,
            MAP_OUT=org.apache.oozie.action.hadoop.HadoopELFunctions#MAP_OUT,
            REDUCE_IN=org.apache.oozie.action.hadoop.HadoopELFunctions#REDUCE_IN,
            REDUCE_OUT=org.apache.oozie.action.hadoop.HadoopELFunctions#REDUCE_OUT,
            GROUPS=org.apache.oozie.action.hadoop.HadoopELFunctions#GROUPS
        </value>
        <description>
            EL constant declarations, separated by commas, format is [PREFIX:]NAME=CLASS#CONSTANT.
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.ext.constants.workflow</name>
        <value> </value>
        <description>
            EL constant declarations, separated by commas, format is [PREFIX:]NAME=CLASS#CONSTANT.
            This property is a convenience property to add extensions to the built in executors without having to
            include all the built in ones.
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.functions.workflow</name>
        <value>
            firstNotNull=org.apache.oozie.util.ELConstantsFunctions#firstNotNull,
            concat=org.apache.oozie.util.ELConstantsFunctions#concat,
            replaceAll=org.apache.oozie.util.ELConstantsFunctions#replaceAll,
            appendAll=org.apache.oozie.util.ELConstantsFunctions#appendAll,
            trim=org.apache.oozie.util.ELConstantsFunctions#trim,
            timestamp=org.apache.oozie.util.ELConstantsFunctions#timestamp,
            urlEncode=org.apache.oozie.util.ELConstantsFunctions#urlEncode,
            toJsonStr=org.apache.oozie.util.ELConstantsFunctions#toJsonStr,
            toPropertiesStr=org.apache.oozie.util.ELConstantsFunctions#toPropertiesStr,
            toConfigurationStr=org.apache.oozie.util.ELConstantsFunctions#toConfigurationStr,
            wf:id=org.apache.oozie.DagELFunctions#wf_id,
            wf:name=org.apache.oozie.DagELFunctions#wf_name,
            wf:appPath=org.apache.oozie.DagELFunctions#wf_appPath,
            wf:conf=org.apache.oozie.DagELFunctions#wf_conf,
            wf:user=org.apache.oozie.DagELFunctions#wf_user,
            wf:group=org.apache.oozie.DagELFunctions#wf_group,
            wf:callback=org.apache.oozie.DagELFunctions#wf_callback,
            wf:transition=org.apache.oozie.DagELFunctions#wf_transition,
            wf:lastErrorNode=org.apache.oozie.DagELFunctions#wf_lastErrorNode,
            wf:errorCode=org.apache.oozie.DagELFunctions#wf_errorCode,
            wf:errorMessage=org.apache.oozie.DagELFunctions#wf_errorMessage,
            wf:run=org.apache.oozie.DagELFunctions#wf_run,
            wf:actionData=org.apache.oozie.DagELFunctions#wf_actionData,
            wf:actionExternalId=org.apache.oozie.DagELFunctions#wf_actionExternalId,
            wf:actionTrackerUri=org.apache.oozie.DagELFunctions#wf_actionTrackerUri,
            wf:actionExternalStatus=org.apache.oozie.DagELFunctions#wf_actionExternalStatus,
            hadoop:counters=org.apache.oozie.action.hadoop.HadoopELFunctions#hadoop_counters,
            hadoop:conf=org.apache.oozie.action.hadoop.HadoopELFunctions#hadoop_conf,
            fs:exists=org.apache.oozie.action.hadoop.FsELFunctions#fs_exists,
            fs:isDir=org.apache.oozie.action.hadoop.FsELFunctions#fs_isDir,
            fs:dirSize=org.apache.oozie.action.hadoop.FsELFunctions#fs_dirSize,
            fs:fileSize=org.apache.oozie.action.hadoop.FsELFunctions#fs_fileSize,
            fs:blockSize=org.apache.oozie.action.hadoop.FsELFunctions#fs_blockSize,
            hcat:exists=org.apache.oozie.coord.HCatELFunctions#hcat_exists
        </value>
        <description>
            EL functions declarations, separated by commas, format is [PREFIX:]NAME=CLASS#METHOD.
        </description>
    </property>

    <property>
        <name>oozie.service.WorkflowAppService.WorkflowDefinitionMaxLength</name>
        <value>100000</value>
        <description>
            The maximum length of the workflow definition in bytes
            An error will be reported if the length exceeds the given maximum
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.ext.functions.workflow</name>
        <value>
        </value>
        <description>
            EL functions declarations, separated by commas, format is [PREFIX:]NAME=CLASS#METHOD.
            This property is a convenience property to add extensions to the built in executors without having to
            include all the built in ones.
        </description>
    </property>

    <!-- Resolve SLA information during Workflow job submission -->
    <property>
        <name>oozie.service.ELService.constants.wf-sla-submit</name>
        <value>
            MINUTES=org.apache.oozie.util.ELConstantsFunctions#SUBMIT_MINUTES,
            HOURS=org.apache.oozie.util.ELConstantsFunctions#SUBMIT_HOURS,
            DAYS=org.apache.oozie.util.ELConstantsFunctions#SUBMIT_DAYS
            </value>
        <description>
            EL constant declarations, separated by commas, format is [PREFIX:]NAME=CLASS#CONSTANT.
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.ext.constants.wf-sla-submit</name>
        <value> </value>
        <description>
            EL constant declarations, separated by commas, format is [PREFIX:]NAME=CLASS#CONSTANT.
            This property is a convenience property to add extensions to the built in executors without having to
            include all the built in ones.
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.functions.wf-sla-submit</name>
        <value> </value>
        <description>
            EL functions declarations, separated by commas, format is [PREFIX:]NAME=CLASS#METHOD.
        </description>
    </property>
    <property>
        <name>oozie.service.ELService.ext.functions.wf-sla-submit</name>
        <value>
        </value>
        <description>
            EL functions declarations, separated by commas, format is [PREFIX:]NAME=CLASS#METHOD.
            This property is a convenience property to add extensions to the built in executors without having to
            include all the built in ones.
        </description>
    </property>

<!-- Coordinator specifics -->l
<!-- Phase 1 resolution during job submission -->
<!-- EL Evalautor setup to resolve mainly frequency tags -->
    <property>
        <name>oozie.service.ELService.constants.coord-job-submit-freq</name>
        <value> </value>
        <description>
            EL constant declarations, separated by commas, format is [PREFIX:]NAME=CLASS#CONSTANT.
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.ext.constants.coord-job-submit-freq</name>
        <value> </value>
        <description>
            EL constant declarations, separated by commas, format is [PREFIX:]NAME=CLASS#CONSTANT.
            This property is a convenience property to add extensions to the built in executors without having to
            include all the built in ones.
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.functions.coord-job-submit-freq</name>
        <value>
            coord:days=org.apache.oozie.coord.CoordELFunctions#ph1_coord_days,
            coord:months=org.apache.oozie.coord.CoordELFunctions#ph1_coord_months,
            coord:hours=org.apache.oozie.coord.CoordELFunctions#ph1_coord_hours,
            coord:minutes=org.apache.oozie.coord.CoordELFunctions#ph1_coord_minutes,
            coord:endOfDays=org.apache.oozie.coord.CoordELFunctions#ph1_coord_endOfDays,
            coord:endOfMonths=org.apache.oozie.coord.CoordELFunctions#ph1_coord_endOfMonths,
            coord:endOfWeeks=org.apache.oozie.coord.CoordELFunctions#ph1_coord_endOfWeeks,
            coord:conf=org.apache.oozie.coord.CoordELFunctions#coord_conf,
            coord:user=org.apache.oozie.coord.CoordELFunctions#coord_user,
            hadoop:conf=org.apache.oozie.action.hadoop.HadoopELFunctions#hadoop_conf
        </value>
        <description>
            EL functions declarations, separated by commas, format is [PREFIX:]NAME=CLASS#METHOD.
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.functions.coord-job-submit-initial-instance</name>
        <value>
            ${oozie.service.ELService.functions.coord-job-submit-nofuncs},
            coord:dateOffset=org.apache.oozie.coord.CoordELFunctions#ph2_coord_dateOffset,
            coord:dateTzOffset=org.apache.oozie.coord.CoordELFunctions#ph2_coord_dateTzOffset
        </value>
        <description>
            EL functions for coord job submit initial instance, separated by commas, format is [PREFIX:]NAME=CLASS#METHOD.
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.ext.functions.coord-job-submit-freq</name>
        <value>
        </value>
        <description>
            EL functions declarations, separated by commas, format is [PREFIX:]NAME=CLASS#METHOD.
            This property is a convenience property to add extensions to the built in executors without having to
            include all the built in ones.
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.constants.coord-job-wait-timeout</name>
        <value> </value>
        <description>
            EL functions declarations, separated by commas, format is [PREFIX:]NAME=CLASS#METHOD.
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.ext.constants.coord-job-wait-timeout</name>
        <value> </value>
        <description>
            EL functions declarations, separated by commas, format is [PREFIX:]NAME=CLASS#METHOD.
            This property is a convenience property to add extensions without having to include all the built in ones.
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.functions.coord-job-wait-timeout</name>
        <value>
            coord:days=org.apache.oozie.coord.CoordELFunctions#ph1_coord_days,
            coord:months=org.apache.oozie.coord.CoordELFunctions#ph1_coord_months,
            coord:hours=org.apache.oozie.coord.CoordELFunctions#ph1_coord_hours,
            coord:minutes=org.apache.oozie.coord.CoordELFunctions#ph1_coord_minutes,
            hadoop:conf=org.apache.oozie.action.hadoop.HadoopELFunctions#hadoop_conf
        </value>
        <description>
            EL functions declarations, separated by commas, format is [PREFIX:]NAME=CLASS#METHOD.
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.ext.functions.coord-job-wait-timeout</name>
        <value> </value>
        <description>
            EL functions declarations, separated by commas, format is [PREFIX:]NAME=CLASS#METHOD.
            This property is a convenience property to add extensions without having to include all the built in ones.
        </description>
    </property>

<!-- EL Evalautor setup to resolve mainly all constants/variables - no EL functions is resolved -->
    <property>
        <name>oozie.service.ELService.constants.coord-job-submit-nofuncs</name>
        <value>
            MINUTE=org.apache.oozie.coord.CoordELConstants#SUBMIT_MINUTE,
            HOUR=org.apache.oozie.coord.CoordELConstants#SUBMIT_HOUR,
            DAY=org.apache.oozie.coord.CoordELConstants#SUBMIT_DAY,
            MONTH=org.apache.oozie.coord.CoordELConstants#SUBMIT_MONTH,
            YEAR=org.apache.oozie.coord.CoordELConstants#SUBMIT_YEAR
        </value>
        <description>
            EL constant declarations, separated by commas, format is [PREFIX:]NAME=CLASS#CONSTANT.
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.ext.constants.coord-job-submit-nofuncs</name>
        <value> </value>
        <description>
            EL constant declarations, separated by commas, format is [PREFIX:]NAME=CLASS#CONSTANT.
            This property is a convenience property to add extensions to the built in executors without having to
            include all the built in ones.
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.functions.coord-job-submit-nofuncs</name>
        <value>
            coord:conf=org.apache.oozie.coord.CoordELFunctions#coord_conf,
            coord:user=org.apache.oozie.coord.CoordELFunctions#coord_user,
            hadoop:conf=org.apache.oozie.action.hadoop.HadoopELFunctions#hadoop_conf
        </value>
        <description>
            EL functions declarations, separated by commas, format is [PREFIX:]NAME=CLASS#METHOD.
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.ext.functions.coord-job-submit-nofuncs</name>
        <value> </value>
        <description>
            EL functions declarations, separated by commas, format is [PREFIX:]NAME=CLASS#METHOD.
            This property is a convenience property to add extensions to the built in executors without having to
            include all the built in ones.
        </description>
    </property>

<!-- EL Evalautor setup to **check** whether instances/start-instance/end-instances are valid
 no EL functions will be resolved -->
    <property>
        <name>oozie.service.ELService.constants.coord-job-submit-instances</name>
        <value> </value>
        <description>
            EL constant declarations, separated by commas, format is [PREFIX:]NAME=CLASS#CONSTANT.
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.ext.constants.coord-job-submit-instances</name>
        <value> </value>
        <description>
            EL constant declarations, separated by commas, format is [PREFIX:]NAME=CLASS#CONSTANT.
            This property is a convenience property to add extensions to the built in executors without having to
            include all the built in ones.
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.functions.coord-job-submit-instances</name>
        <value>
            coord:hoursInDay=org.apache.oozie.coord.CoordELFunctions#ph1_coord_hoursInDay_echo,
            coord:daysInMonth=org.apache.oozie.coord.CoordELFunctions#ph1_coord_daysInMonth_echo,
            coord:tzOffset=org.apache.oozie.coord.CoordELFunctions#ph1_coord_tzOffset_echo,
            coord:current=org.apache.oozie.coord.CoordELFunctions#ph1_coord_current_echo,
            coord:currentRange=org.apache.oozie.coord.CoordELFunctions#ph1_coord_currentRange_echo,
            coord:offset=org.apache.oozie.coord.CoordELFunctions#ph1_coord_offset_echo,
            coord:latest=org.apache.oozie.coord.CoordELFunctions#ph1_coord_latest_echo,
            coord:latestRange=org.apache.oozie.coord.CoordELFunctions#ph1_coord_latestRange_echo,
            coord:future=org.apache.oozie.coord.CoordELFunctions#ph1_coord_future_echo,
            coord:futureRange=org.apache.oozie.coord.CoordELFunctions#ph1_coord_futureRange_echo,
            coord:formatTime=org.apache.oozie.coord.CoordELFunctions#ph1_coord_formatTime_echo,
            coord:epochTime=org.apache.oozie.coord.CoordELFunctions#ph1_coord_epochTime_echo,
            coord:conf=org.apache.oozie.coord.CoordELFunctions#coord_conf,
            coord:user=org.apache.oozie.coord.CoordELFunctions#coord_user,
            coord:absolute=org.apache.oozie.coord.CoordELFunctions#ph1_coord_absolute_echo,
            coord:endOfMonths=org.apache.oozie.coord.CoordELFunctions#ph1_coord_endOfMonths_echo,
            coord:endOfWeeks=org.apache.oozie.coord.CoordELFunctions#ph1_coord_endOfWeeks_echo,
            coord:endOfDays=org.apache.oozie.coord.CoordELFunctions#ph1_coord_endOfDays_echo,
            hadoop:conf=org.apache.oozie.action.hadoop.HadoopELFunctions#hadoop_conf,
            coord:dateOffset=org.apache.oozie.coord.CoordELFunctions#ph1_coord_dateOffset_echo,
            coord:dateTzOffset=org.apache.oozie.coord.CoordELFunctions#ph1_coord_dateTzOffset_echo
        </value>
        <description>
            EL functions declarations, separated by commas, format is [PREFIX:]NAME=CLASS#METHOD.
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.ext.functions.coord-job-submit-instances</name>
        <value>
        </value>
        <description>
            EL functions declarations, separated by commas, format is [PREFIX:]NAME=CLASS#METHOD.
            This property is a convenience property to add extensions to the built in executors without having to
            include all the built in ones.
        </description>
    </property>

<!-- EL Evalautor setup to **check** whether dataIn and dataOut are valid
 no EL functions will be resolved -->

    <property>
        <name>oozie.service.ELService.constants.coord-job-submit-data</name>
        <value> </value>
        <description>
            EL constant declarations, separated by commas, format is [PREFIX:]NAME=CLASS#CONSTANT.
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.ext.constants.coord-job-submit-data</name>
        <value> </value>
        <description>
            EL constant declarations, separated by commas, format is [PREFIX:]NAME=CLASS#CONSTANT.
            This property is a convenience property to add extensions to the built in executors without having to
            include all the built in ones.
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.functions.coord-job-submit-data</name>
        <value>
            coord:dataIn=org.apache.oozie.coord.CoordELFunctions#ph1_coord_dataIn_echo,
            coord:dataOut=org.apache.oozie.coord.CoordELFunctions#ph1_coord_dataOut_echo,
            coord:nominalTime=org.apache.oozie.coord.CoordELFunctions#ph1_coord_nominalTime_echo_wrap,
            coord:actualTime=org.apache.oozie.coord.CoordELFunctions#ph1_coord_actualTime_echo_wrap,
            coord:dateOffset=org.apache.oozie.coord.CoordELFunctions#ph1_coord_dateOffset_echo,
            coord:dateTzOffset=org.apache.oozie.coord.CoordELFunctions#ph1_coord_dateTzOffset_echo,
            coord:formatTime=org.apache.oozie.coord.CoordELFunctions#ph1_coord_formatTime_echo,
            coord:epochTime=org.apache.oozie.coord.CoordELFunctions#ph1_coord_epochTime_echo,
            coord:actionId=org.apache.oozie.coord.CoordELFunctions#ph1_coord_actionId_echo,
            coord:name=org.apache.oozie.coord.CoordELFunctions#ph1_coord_name_echo,
            coord:conf=org.apache.oozie.coord.CoordELFunctions#coord_conf,
            coord:user=org.apache.oozie.coord.CoordELFunctions#coord_user,
            coord:databaseIn=org.apache.oozie.coord.HCatELFunctions#ph1_coord_databaseIn_echo,
            coord:databaseOut=org.apache.oozie.coord.HCatELFunctions#ph1_coord_databaseOut_echo,
            coord:tableIn=org.apache.oozie.coord.HCatELFunctions#ph1_coord_tableIn_echo,
            coord:tableOut=org.apache.oozie.coord.HCatELFunctions#ph1_coord_tableOut_echo,
            coord:dataInPartitionFilter=org.apache.oozie.coord.HCatELFunctions#ph1_coord_dataInPartitionFilter_echo,
            coord:dataInPartitionMin=org.apache.oozie.coord.HCatELFunctions#ph1_coord_dataInPartitionMin_echo,
            coord:dataInPartitionMax=org.apache.oozie.coord.HCatELFunctions#ph1_coord_dataInPartitionMax_echo,
            coord:dataInPartitions=org.apache.oozie.coord.HCatELFunctions#ph1_coord_dataInPartitions_echo,
            coord:dataOutPartitions=org.apache.oozie.coord.HCatELFunctions#ph1_coord_dataOutPartitions_echo,
            coord:dataOutPartitionValue=org.apache.oozie.coord.HCatELFunctions#ph1_coord_dataOutPartitionValue_echo,
            hadoop:conf=org.apache.oozie.action.hadoop.HadoopELFunctions#hadoop_conf
        </value>
        <description>
            EL functions declarations, separated by commas, format is [PREFIX:]NAME=CLASS#METHOD.
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.ext.functions.coord-job-submit-data</name>
        <value>
        </value>
        <description>
            EL functions declarations, separated by commas, format is [PREFIX:]NAME=CLASS#METHOD.
            This property is a convenience property to add extensions to the built in executors without having to
            include all the built in ones.
        </description>
    </property>

    <!-- Resolve SLA information during Coordinator job submission -->
    <property>
        <name>oozie.service.ELService.constants.coord-sla-submit</name>
        <value>
            MINUTES=org.apache.oozie.coord.CoordELConstants#SUBMIT_MINUTES,
            HOURS=org.apache.oozie.coord.CoordELConstants#SUBMIT_HOURS,
            DAYS=org.apache.oozie.coord.CoordELConstants#SUBMIT_DAYS
            </value>
        <description>
            EL constant declarations, separated by commas, format is [PREFIX:]NAME=CLASS#CONSTANT.
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.ext.constants.coord-sla-submit</name>
        <value> </value>
        <description>
            EL constant declarations, separated by commas, format is [PREFIX:]NAME=CLASS#CONSTANT.
            This property is a convenience property to add extensions to the built in executors without having to
            include all the built in ones.
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.functions.bundle-submit</name>
        <value>bundle:conf=org.apache.oozie.bundle.BundleELFunctions#bundle_conf</value>
    </property>

    <property>
        <name>oozie.service.ELService.functions.coord-sla-submit</name>
        <value>
            coord:dataOut=org.apache.oozie.coord.CoordELFunctions#ph1_coord_dataOut_echo,
            coord:nominalTime=org.apache.oozie.coord.CoordELFunctions#ph1_coord_nominalTime_echo_fixed,
            coord:actualTime=org.apache.oozie.coord.CoordELFunctions#ph1_coord_actualTime_echo_wrap,
            coord:dateOffset=org.apache.oozie.coord.CoordELFunctions#ph1_coord_dateOffset_echo,
            coord:dateTzOffset=org.apache.oozie.coord.CoordELFunctions#ph1_coord_dateTzOffset_echo,
            coord:formatTime=org.apache.oozie.coord.CoordELFunctions#ph1_coord_formatTime_echo,
            coord:epochTime=org.apache.oozie.coord.CoordELFunctions#ph1_coord_epochTime_echo,
            coord:actionId=org.apache.oozie.coord.CoordELFunctions#ph1_coord_actionId_echo,
            coord:name=org.apache.oozie.coord.CoordELFunctions#ph1_coord_name_echo,
            coord:conf=org.apache.oozie.coord.CoordELFunctions#coord_conf,
            coord:user=org.apache.oozie.coord.CoordELFunctions#coord_user,
            coord:databaseOut=org.apache.oozie.coord.HCatELFunctions#ph1_coord_databaseOut_echo,
            coord:tableOut=org.apache.oozie.coord.HCatELFunctions#ph1_coord_tableOut_echo,
            coord:dataOutPartitions=org.apache.oozie.coord.HCatELFunctions#ph1_coord_dataOutPartitions_echo,
            coord:dataOutPartitionValue=org.apache.oozie.coord.HCatELFunctions#ph1_coord_dataOutPartitionValue_echo,
            hadoop:conf=org.apache.oozie.action.hadoop.HadoopELFunctions#hadoop_conf
        </value>
        <description>
            EL functions declarations, separated by commas, format is [PREFIX:]NAME=CLASS#METHOD.
        </description>
    </property>
    <property>
        <name>oozie.service.ELService.ext.functions.coord-sla-submit</name>
        <value>
        </value>
        <description>
            EL functions declarations, separated by commas, format is [PREFIX:]NAME=CLASS#METHOD.
            This property is a convenience property to add extensions to the built in executors without having to
            include all the built in ones.
        </description>
    </property>

 <!--  Action creation for coordinator -->
<property>
        <name>oozie.service.ELService.constants.coord-action-create</name>
        <value>
        </value>
        <description>
            EL constant declarations, separated by commas, format is [PREFIX:]NAME=CLASS#CONSTANT.
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.ext.constants.coord-action-create</name>
        <value> </value>
        <description>
            EL constant declarations, separated by commas, format is [PREFIX:]NAME=CLASS#CONSTANT.
            This property is a convenience property to add extensions to the built in executors without having to
            include all the built in ones.
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.functions.coord-action-create</name>
        <value>
            coord:hoursInDay=org.apache.oozie.coord.CoordELFunctions#ph2_coord_hoursInDay,
            coord:daysInMonth=org.apache.oozie.coord.CoordELFunctions#ph2_coord_daysInMonth,
            coord:tzOffset=org.apache.oozie.coord.CoordELFunctions#ph2_coord_tzOffset,
            coord:current=org.apache.oozie.coord.CoordELFunctions#ph2_coord_current,
            coord:currentRange=org.apache.oozie.coord.CoordELFunctions#ph2_coord_currentRange,
            coord:offset=org.apache.oozie.coord.CoordELFunctions#ph2_coord_offset,
            coord:latest=org.apache.oozie.coord.CoordELFunctions#ph2_coord_latest_echo,
            coord:latestRange=org.apache.oozie.coord.CoordELFunctions#ph2_coord_latestRange_echo,
            coord:future=org.apache.oozie.coord.CoordELFunctions#ph2_coord_future_echo,
            coord:futureRange=org.apache.oozie.coord.CoordELFunctions#ph2_coord_futureRange_echo,
            coord:actionId=org.apache.oozie.coord.CoordELFunctions#ph2_coord_actionId,
            coord:name=org.apache.oozie.coord.CoordELFunctions#ph2_coord_name,
            coord:formatTime=org.apache.oozie.coord.CoordELFunctions#ph2_coord_formatTime,
            coord:epochTime=org.apache.oozie.coord.CoordELFunctions#ph2_coord_epochTime,
            coord:conf=org.apache.oozie.coord.CoordELFunctions#coord_conf,
            coord:user=org.apache.oozie.coord.CoordELFunctions#coord_user,
            coord:absolute=org.apache.oozie.coord.CoordELFunctions#ph2_coord_absolute_echo,
            coord:endOfMonths=org.apache.oozie.coord.CoordELFunctions#ph2_coord_endOfMonths_echo,
            coord:endOfWeeks=org.apache.oozie.coord.CoordELFunctions#ph2_coord_endOfWeeks_echo,
            coord:endOfDays=org.apache.oozie.coord.CoordELFunctions#ph2_coord_endOfDays_echo,
            coord:absoluteRange=org.apache.oozie.coord.CoordELFunctions#ph2_coord_absolute_range,
            hadoop:conf=org.apache.oozie.action.hadoop.HadoopELFunctions#hadoop_conf
        </value>
        <description>
            EL functions declarations, separated by commas, format is [PREFIX:]NAME=CLASS#METHOD.
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.ext.functions.coord-action-create</name>
        <value>
        </value>
        <description>
            EL functions declarations, separated by commas, format is [PREFIX:]NAME=CLASS#METHOD.
            This property is a convenience property to add extensions to the built in executors without having to
            include all the built in ones.
        </description>
    </property>


 <!--  Action creation for coordinator used to only evaluate instance number like ${current (daysInMonth())}. current will be echo-ed -->
<property>
        <name>oozie.service.ELService.constants.coord-action-create-inst</name>
        <value>
        </value>
        <description>
            EL constant declarations, separated by commas, format is [PREFIX:]NAME=CLASS#CONSTANT.
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.ext.constants.coord-action-create-inst</name>
        <value> </value>
        <description>
            EL constant declarations, separated by commas, format is [PREFIX:]NAME=CLASS#CONSTANT.
            This property is a convenience property to add extensions to the built in executors without having to
            include all the built in ones.
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.functions.coord-action-create-inst</name>
        <value>
            coord:hoursInDay=org.apache.oozie.coord.CoordELFunctions#ph2_coord_hoursInDay,
            coord:daysInMonth=org.apache.oozie.coord.CoordELFunctions#ph2_coord_daysInMonth,
            coord:tzOffset=org.apache.oozie.coord.CoordELFunctions#ph2_coord_tzOffset,
            coord:current=org.apache.oozie.coord.CoordELFunctions#ph2_coord_current_echo,
            coord:currentRange=org.apache.oozie.coord.CoordELFunctions#ph2_coord_currentRange_echo,
            coord:offset=org.apache.oozie.coord.CoordELFunctions#ph2_coord_offset_echo,
            coord:latest=org.apache.oozie.coord.CoordELFunctions#ph2_coord_latest_echo,
            coord:latestRange=org.apache.oozie.coord.CoordELFunctions#ph2_coord_latestRange_echo,
            coord:future=org.apache.oozie.coord.CoordELFunctions#ph2_coord_future_echo,
            coord:futureRange=org.apache.oozie.coord.CoordELFunctions#ph2_coord_futureRange_echo,
            coord:formatTime=org.apache.oozie.coord.CoordELFunctions#ph2_coord_formatTime,
            coord:epochTime=org.apache.oozie.coord.CoordELFunctions#ph2_coord_epochTime,
            coord:conf=org.apache.oozie.coord.CoordELFunctions#coord_conf,
            coord:user=org.apache.oozie.coord.CoordELFunctions#coord_user,
            coord:absolute=org.apache.oozie.coord.CoordELFunctions#ph2_coord_absolute_echo,
            coord:absoluteRange=org.apache.oozie.coord.CoordELFunctions#ph2_coord_absolute_range,
            coord:endOfMonths=org.apache.oozie.coord.CoordELFunctions#ph2_coord_endOfMonths_echo,
            coord:endOfWeeks=org.apache.oozie.coord.CoordELFunctions#ph2_coord_endOfWeeks_echo,
            coord:endOfDays=org.apache.oozie.coord.CoordELFunctions#ph2_coord_endOfDays_echo,
            hadoop:conf=org.apache.oozie.action.hadoop.HadoopELFunctions#hadoop_conf,
            coord:dateOffset=org.apache.oozie.coord.CoordELFunctions#ph2_coord_dateOffset,
            coord:dateTzOffset=org.apache.oozie.coord.CoordELFunctions#ph2_coord_dateTzOffset
        </value>
        <description>
            EL functions declarations, separated by commas, format is [PREFIX:]NAME=CLASS#METHOD.
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.ext.functions.coord-action-create-inst</name>
        <value>
        </value>
        <description>
            EL functions declarations, separated by commas, format is [PREFIX:]NAME=CLASS#METHOD.
            This property is a convenience property to add extensions to the built in executors without having to
            include all the built in ones.
        </description>
    </property>

        <!-- Resolve SLA information during Action creation/materialization -->
    <property>
        <name>oozie.service.ELService.constants.coord-sla-create</name>
        <value> </value>
        <description>
            EL constant declarations, separated by commas, format is [PREFIX:]NAME=CLASS#CONSTANT.
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.ext.constants.coord-sla-create</name>
        <value>
            MINUTES=org.apache.oozie.coord.CoordELConstants#SUBMIT_MINUTES,
            HOURS=org.apache.oozie.coord.CoordELConstants#SUBMIT_HOURS,
            DAYS=org.apache.oozie.coord.CoordELConstants#SUBMIT_DAYS</value>
        <description>
            EL constant declarations, separated by commas, format is [PREFIX:]NAME=CLASS#CONSTANT.
            This property is a convenience property to add extensions to the built in executors without having to
            include all the built in ones.
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.functions.coord-sla-create</name>
        <value>
            coord:dataOut=org.apache.oozie.coord.CoordELFunctions#ph3_coord_dataOut,
            coord:nominalTime=org.apache.oozie.coord.CoordELFunctions#ph2_coord_nominalTime,
            coord:actualTime=org.apache.oozie.coord.CoordELFunctions#ph2_coord_actualTime,
            coord:dateOffset=org.apache.oozie.coord.CoordELFunctions#ph2_coord_dateOffset,
            coord:dateTzOffset=org.apache.oozie.coord.CoordELFunctions#ph2_coord_dateTzOffset,
            coord:formatTime=org.apache.oozie.coord.CoordELFunctions#ph2_coord_formatTime,
            coord:epochTime=org.apache.oozie.coord.CoordELFunctions#ph2_coord_epochTime,
            coord:actionId=org.apache.oozie.coord.CoordELFunctions#ph2_coord_actionId,
            coord:name=org.apache.oozie.coord.CoordELFunctions#ph2_coord_name,
            coord:conf=org.apache.oozie.coord.CoordELFunctions#coord_conf,
            coord:user=org.apache.oozie.coord.CoordELFunctions#coord_user,
            coord:databaseOut=org.apache.oozie.coord.HCatELFunctions#ph3_coord_databaseOut,
            coord:tableOut=org.apache.oozie.coord.HCatELFunctions#ph3_coord_tableOut,
            coord:dataOutPartitions=org.apache.oozie.coord.HCatELFunctions#ph3_coord_dataOutPartitions,
            coord:dataOutPartitionValue=org.apache.oozie.coord.HCatELFunctions#ph3_coord_dataOutPartitionValue,
            hadoop:conf=org.apache.oozie.action.hadoop.HadoopELFunctions#hadoop_conf
        </value>
        <description>
            EL functions declarations, separated by commas, format is [PREFIX:]NAME=CLASS#METHOD.
        </description>
    </property>
    <property>
        <name>oozie.service.ELService.ext.functions.coord-sla-create</name>
        <value>
        </value>
        <description>
            EL functions declarations, separated by commas, format is [PREFIX:]NAME=CLASS#METHOD.
            This property is a convenience property to add extensions to the built in executors without having to
            include all the built in ones.
        </description>
    </property>

<!--  Action start for coordinator -->
<property>
        <name>oozie.service.ELService.constants.coord-action-start</name>
        <value>
        </value>
        <description>
            EL constant declarations, separated by commas, format is [PREFIX:]NAME=CLASS#CONSTANT.
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.ext.constants.coord-action-start</name>
        <value> </value>
        <description>
            EL constant declarations, separated by commas, format is [PREFIX:]NAME=CLASS#CONSTANT.
            This property is a convenience property to add extensions to the built in executors without having to
            include all the built in ones.
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.functions.coord-action-start</name>
        <value>
            coord:hoursInDay=org.apache.oozie.coord.CoordELFunctions#ph3_coord_hoursInDay,
            coord:daysInMonth=org.apache.oozie.coord.CoordELFunctions#ph3_coord_daysInMonth,
            coord:tzOffset=org.apache.oozie.coord.CoordELFunctions#ph3_coord_tzOffset,
            coord:latest=org.apache.oozie.coord.CoordELFunctions#ph3_coord_latest,
            coord:latestRange=org.apache.oozie.coord.CoordELFunctions#ph3_coord_latestRange,
            coord:future=org.apache.oozie.coord.CoordELFunctions#ph3_coord_future,
            coord:futureRange=org.apache.oozie.coord.CoordELFunctions#ph3_coord_futureRange,
            coord:dataIn=org.apache.oozie.coord.CoordELFunctions#ph3_coord_dataIn,
            coord:dataOut=org.apache.oozie.coord.CoordELFunctions#ph3_coord_dataOut,
            coord:nominalTime=org.apache.oozie.coord.CoordELFunctions#ph3_coord_nominalTime,
            coord:actualTime=org.apache.oozie.coord.CoordELFunctions#ph3_coord_actualTime,
            coord:dateOffset=org.apache.oozie.coord.CoordELFunctions#ph3_coord_dateOffset,
            coord:dateTzOffset=org.apache.oozie.coord.CoordELFunctions#ph3_coord_dateTzOffset,
            coord:formatTime=org.apache.oozie.coord.CoordELFunctions#ph3_coord_formatTime,
            coord:epochTime=org.apache.oozie.coord.CoordELFunctions#ph3_coord_epochTime,
            coord:actionId=org.apache.oozie.coord.CoordELFunctions#ph3_coord_actionId,
            coord:name=org.apache.oozie.coord.CoordELFunctions#ph3_coord_name,
            coord:conf=org.apache.oozie.coord.CoordELFunctions#coord_conf,
            coord:user=org.apache.oozie.coord.CoordELFunctions#coord_user,
            coord:databaseIn=org.apache.oozie.coord.HCatELFunctions#ph3_coord_databaseIn,
            coord:databaseOut=org.apache.oozie.coord.HCatELFunctions#ph3_coord_databaseOut,
            coord:tableIn=org.apache.oozie.coord.HCatELFunctions#ph3_coord_tableIn,
            coord:tableOut=org.apache.oozie.coord.HCatELFunctions#ph3_coord_tableOut,
            coord:dataInPartitionFilter=org.apache.oozie.coord.HCatELFunctions#ph3_coord_dataInPartitionFilter,
            coord:dataInPartitionMin=org.apache.oozie.coord.HCatELFunctions#ph3_coord_dataInPartitionMin,
            coord:dataInPartitionMax=org.apache.oozie.coord.HCatELFunctions#ph3_coord_dataInPartitionMax,
            coord:dataInPartitions=org.apache.oozie.coord.HCatELFunctions#ph3_coord_dataInPartitions,
            coord:dataOutPartitions=org.apache.oozie.coord.HCatELFunctions#ph3_coord_dataOutPartitions,
            coord:dataOutPartitionValue=org.apache.oozie.coord.HCatELFunctions#ph3_coord_dataOutPartitionValue,
            hadoop:conf=org.apache.oozie.action.hadoop.HadoopELFunctions#hadoop_conf
        </value>
        <description>
            EL functions declarations, separated by commas, format is [PREFIX:]NAME=CLASS#METHOD.
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.ext.functions.coord-action-start</name>
        <value>
        </value>
        <description>
            EL functions declarations, separated by commas, format is [PREFIX:]NAME=CLASS#METHOD.
            This property is a convenience property to add extensions to the built in executors without having to
            include all the built in ones.
        </description>
    </property>

    <property>
        <name>oozie.service.ELService.latest-el.use-current-time</name>
        <value>false</value>
        <description>
            Determine whether to use the current time to determine the latest dependency or the action creation time.
            This is for backward compatibility with older oozie behaviour.
        </description>
    </property>

    <!-- UUIDService -->

    <property>
        <name>oozie.service.UUIDService.generator</name>
        <value>counter</value>
        <description>
            random : generated UUIDs will be random strings.
            counter: generated UUIDs generated will be a counter postfixed with the system startup time.
        </description>
    </property>

    <!-- DBLiteWorkflowStoreService -->

    <property>
        <name>oozie.service.DBLiteWorkflowStoreService.status.metrics.collection.interval</name>
        <value>5</value>
        <description> Workflow Status metrics collection interval in minutes.</description>
    </property>

    <property>
        <name>oozie.service.DBLiteWorkflowStoreService.status.metrics.window</name>
        <value>3600</value>
        <description>
            Workflow Status metrics collection window in seconds. Workflow status will be instrumented for the window.
        </description>
    </property>

    <!-- DB Schema Info, used by DBLiteWorkflowStoreService -->

    <property>
        <name>oozie.db.schema.name</name>
        <value>oozie</value>
        <description>
            Oozie DataBase Name
        </description>
    </property>

    <!-- Database import CLI: batch size -->

    <property>
        <name>oozie.db.import.batch.size</name>
        <value>1000</value>
        <description>
            How many entities are imported in a single transaction by the Oozie DB import CLI tool to avoid OutOfMemoryErrors.
        </description>
    </property>

   <!-- StoreService -->

    <property>
        <name>oozie.service.JPAService.create.db.schema</name>
        <value>false</value>
        <description>
            Creates Oozie DB.

            If set to true, it creates the DB schema if it does not exist. If the DB schema exists is a NOP.
            If set to false, it does not create the DB schema. If the DB schema does not exist it fails start up.
        </description>
    </property>

    <property>
        <name>oozie.service.JPAService.validate.db.connection</name>
        <value>true</value>
        <description>
            Validates DB connections from the DB connection pool.
            If the 'oozie.service.JPAService.create.db.schema' property is set to true, this property is ignored.
        </description>
    </property>

    <property>
        <name>oozie.service.JPAService.validate.db.connection.eviction.interval</name>
        <value>300000</value>
        <description>
            Validates DB connections from the DB connection pool.
            When validate db connection 'TestWhileIdle' is true, the number of milliseconds to sleep
             between runs of the idle object evictor thread.
        </description>
    </property>

    <property>
        <name>oozie.service.JPAService.validate.db.connection.eviction.num</name>
        <value>10</value>
        <description>
            Validates DB connections from the DB connection pool.
            When validate db connection 'TestWhileIdle' is true, the number of objects to examine during
            each run of the idle object evictor thread.
        </description>
    </property>


    <property>
        <name>oozie.service.JPAService.connection.data.source</name>
        <value>org.apache.oozie.util.db.BasicDataSourceWrapper</value>
        <description>
            DataSource to be used for connection pooling. If you want the property
            openJpa.connectionProperties="DriverClassName=..." to have a real effect, set this to
            org.apache.oozie.util.db.BasicDataSourceWrapper.
            A DBCP bug (https://issues.apache.org/jira/browse/DBCP-333) prevents otherwise the JDBC driver
            setting to have a real effect while using custom class loader.
        </description>
    </property>

    <property>
        <name>oozie.service.JPAService.connection.properties</name>
        <value> </value>
        <description>
            DataSource connection properties.
        </description>
    </property>

    <property>
        <name>oozie.service.JPAService.jdbc.driver</name>
        <value>org.apache.derby.jdbc.EmbeddedDriver</value>
        <description>
            JDBC driver class.
        </description>
    </property>

    <property>
        <name>oozie.service.JPAService.jdbc.url</name>
        <value>jdbc:derby:${oozie.data.dir}/${oozie.db.schema.name}-db;create=true</value>
        <description>
            JDBC URL.
        </description>
    </property>

    <property>
        <name>oozie.service.JPAService.jdbc.username</name>
        <value>sa</value>
        <description>
            DB user name.
        </description>
    </property>

    <property>
        <name>oozie.service.JPAService.jdbc.password</name>
        <value> </value>
        <description>
            DB user password.

            IMPORTANT: if password is emtpy leave a 1 space string, the service trims the value,
                       if empty Configuration assumes it is NULL.

            IMPORTANT: if the StoreServicePasswordService is active, it will reset this value with the value given in
                       the console.
        </description>
    </property>

    <property>
        <name>oozie.service.JPAService.pool.max.active.conn</name>
        <value>10</value>
        <description>
             Max number of connections.
        </description>
    </property>

    <property>
        <name>oozie.service.JPAService.openjpa.BrokerImpl</name>
        <value>non-finalizing</value>
        <description>
          The default OpenJPAEntityManager implementation automatically closes itself during instance finalization.
          This guards against accidental resource leaks that may occur if a developer fails to explicitly close
          EntityManagers when finished with them, but it also incurs a scalability bottleneck, since the JVM must
          perform synchronization during instance creation, and since the finalizer thread will have more instances to monitor.
          To avoid this overhead, set the openjpa.BrokerImpl configuration property to non-finalizing.
          To use default implementation set it to empty space.
       </description>
    </property>

    <property>
        <name>oozie.service.JPAService.retry.initial-wait-time.ms</name>
        <value>100</value>
        <description>
          Initial wait time in milliseconds between the first failed database operation and the re-attempted operation. The wait
          time is doubled at each retry.
       </description>
    </property>

    <property>
        <name>oozie.service.JPAService.retry.maximum-wait-time.ms</name>
        <value>30000</value>
        <description>
          Maximum wait time between database retry attempts.
       </description>
    </property>

    <property>
        <name>oozie.service.JPAService.retry.max-retries</name>
        <value>10</value>
        <description>
          Maximum number of retries for a failed database operation.
       </description>
    </property>

   <!-- SchemaService -->

    <property>
        <name>oozie.service.SchemaService.wf.schemas</name>
        <value>
            oozie-common-1.0.xsd,
            oozie-workflow-0.1.xsd,oozie-workflow-0.2.xsd,oozie-workflow-0.2.5.xsd,oozie-workflow-0.3.xsd,oozie-workflow-0.4.xsd,
            oozie-workflow-0.4.5.xsd,oozie-workflow-0.5.xsd,oozie-workflow-1.0.xsd,
            shell-action-0.1.xsd,shell-action-0.2.xsd,shell-action-0.3.xsd,shell-action-1.0.xsd,
            email-action-0.1.xsd,email-action-0.2.xsd,
            hive-action-0.2.xsd,hive-action-0.3.xsd,hive-action-0.4.xsd,hive-action-0.5.xsd,hive-action-0.6.xsd,hive-action-1.0.xsd,
            sqoop-action-0.2.xsd,sqoop-action-0.3.xsd,sqoop-action-0.4.xsd,sqoop-action-1.0.xsd,
            ssh-action-0.1.xsd,ssh-action-0.2.xsd,
            distcp-action-0.1.xsd,distcp-action-0.2.xsd,distcp-action-1.0.xsd,
            oozie-sla-0.1.xsd,oozie-sla-0.2.xsd,
            hive2-action-0.1.xsd,hive2-action-0.2.xsd,hive2-action-1.0.xsd,
            spark-action-0.1.xsd,spark-action-0.2.xsd,spark-action-1.0.xsd,
            git-action-1.0.xsd
        </value>
        <description>
            List of schemas for workflows (separated by commas).
        </description>
    </property>

    <property>
        <name>oozie.service.SchemaService.wf.ext.schemas</name>
        <value> </value>
        <description>
            List of additional schemas for workflows (separated by commas).
        </description>
    </property>

    <property>
        <name>oozie.service.SchemaService.coord.schemas</name>
        <value>
            oozie-coordinator-0.1.xsd,oozie-coordinator-0.2.xsd,oozie-coordinator-0.3.xsd,oozie-coordinator-0.4.xsd,
            oozie-coordinator-0.5.xsd,oozie-sla-0.1.xsd,oozie-sla-0.2.xsd
        </value>
        <description>
            List of schemas for coordinators (separated by commas).
        </description>
    </property>

    <property>
        <name>oozie.service.SchemaService.coord.ext.schemas</name>
        <value> </value>
        <description>
            List of additional schemas for coordinators (separated by commas).
        </description>
    </property>

    <property>
        <name>oozie.service.SchemaService.bundle.schemas</name>
        <value>
            oozie-bundle-0.1.xsd,oozie-bundle-0.2.xsd
        </value>
        <description>
            List of schemas for bundles (separated by commas).
        </description>
    </property>

    <property>
        <name>oozie.service.SchemaService.bundle.ext.schemas</name>
        <value> </value>
        <description>
            List of additional schemas for bundles (separated by commas).
        </description>
    </property>

    <property>
        <name>oozie.service.SchemaService.sla.schemas</name>
        <value>
            gms-oozie-sla-0.1.xsd,oozie-sla-0.2.xsd
        </value>
        <description>
            List of schemas for semantic validation for GMS SLA (separated by commas).
        </description>
    </property>

    <property>
        <name>oozie.service.SchemaService.sla.ext.schemas</name>
        <value> </value>
        <description>
            List of additional schemas for semantic validation for GMS SLA (separated by commas).
        </description>
    </property>

    <!-- CallbackService -->

    <property>
        <name>oozie.service.CallbackService.base.url</name>
        <value>${oozie.base.url}/callback</value>
        <description>
             Base callback URL used by ActionExecutors.
        </description>
    </property>

    <property>
        <name>oozie.service.CallbackService.early.requeue.max.retries</name>
        <value>5</value>
        <description>
            If Oozie receives a callback too early (while the action is in PREP state), it will requeue the command this many times
            to give the action time to transition to RUNNING.
        </description>
    </property>

    <!-- CallbackServlet -->

    <property>
        <name>oozie.servlet.CallbackServlet.max.data.len</name>
        <value>2048</value>
        <description>
            Max size in characters for the action completion data output.
        </description>
    </property>

    <!-- External stats-->

    <property>
        <name>oozie.external.stats.max.size</name>
        <value>-1</value>
        <description>
            Max size in bytes for action stats. -1 means infinite value.
        </description>
    </property>

    <!-- JobCommand -->

    <property>
        <name>oozie.JobCommand.job.console.url</name>
        <value>${oozie.base.url}?job=</value>
        <description>
             Base console URL for a workflow job.
        </description>
    </property>


    <!-- ActionService -->

    <property>
        <name>oozie.service.ActionService.executor.classes</name>
        <value>
            org.apache.oozie.action.decision.DecisionActionExecutor,
            org.apache.oozie.action.hadoop.JavaActionExecutor,
            org.apache.oozie.action.hadoop.FsActionExecutor,
            org.apache.oozie.action.hadoop.MapReduceActionExecutor,
            org.apache.oozie.action.hadoop.PigActionExecutor,
            org.apache.oozie.action.hadoop.HiveActionExecutor,
            org.apache.oozie.action.hadoop.ShellActionExecutor,
            org.apache.oozie.action.hadoop.SqoopActionExecutor,
            org.apache.oozie.action.hadoop.DistcpActionExecutor,
            org.apache.oozie.action.hadoop.Hive2ActionExecutor,
            org.apache.oozie.action.ssh.SshActionExecutor,
            org.apache.oozie.action.oozie.SubWorkflowActionExecutor,
            org.apache.oozie.action.email.EmailActionExecutor,
            org.apache.oozie.action.hadoop.SparkActionExecutor,
            org.apache.oozie.action.hadoop.GitActionExecutor
        </value>
        <description>
            List of ActionExecutors classes (separated by commas).
            Only action types with associated executors can be used in workflows.
        </description>
    </property>

    <property>
        <name>oozie.service.ActionService.executor.ext.classes</name>
        <value> </value>
        <description>
            List of ActionExecutors extension classes (separated by commas). Only action types with associated
            executors can be used in workflows. This property is a convenience property to add extensions to the built
            in executors without having to include all the built in ones.
        </description>
    </property>

    <!-- ActionCheckerService -->

    <property>
        <name>oozie.service.ActionCheckerService.action.check.interval</name>
        <value>60</value>
        <description>
            The frequency at which the ActionCheckService will run.
        </description>
    </property>

     <property>
        <name>oozie.service.ActionCheckerService.action.check.delay</name>
        <value>600</value>
        <description>
            The time, in seconds, between an ActionCheck for the same action.
        </description>
    </property>

    <property>
        <name>oozie.service.ActionCheckerService.callable.batch.size</name>
        <value>10</value>
        <description>
            This value determines the number of actions which will be batched together
            to be executed by a single thread.
        </description>
    </property>

    <!-- StatusTransitService -->
    <property>
        <name>oozie.service.StatusTransitService.statusTransit.interval</name>
        <value>60</value>
        <description>
            The frequency in seconds at which the StatusTransitService will run.
        </description>
    </property>

    <property>
        <name>oozie.service.StatusTransitService.backward.support.for.coord.status</name>
        <value>false</value>
        <description>
            true, if coordinator job submits using 'uri:oozie:coordinator:0.1' and wants to keep Oozie 2.x status transit.
            if set true,
            1. SUCCEEDED state in coordinator job means materialization done.
            2. No DONEWITHERROR state in coordinator job
            3. No PAUSED or PREPPAUSED state in coordinator job
            4. PREPSUSPENDED becomes SUSPENDED in coordinator job
        </description>
    </property>

    <property>
        <name>oozie.service.StatusTransitService.backward.support.for.states.without.error</name>
        <value>true</value>
        <description>
            true, if you want to keep Oozie 3.2 status transit.
            Change it to false for Oozie 4.x releases.
            if set true,
            No states like RUNNINGWITHERROR, SUSPENDEDWITHERROR and PAUSEDWITHERROR
            for coordinator and bundle
        </description>
    </property>

    <!-- PauseTransitService -->
    <property>
        <name>oozie.service.PauseTransitService.PauseTransit.interval</name>
        <value>60</value>
        <description>
            The frequency in seconds at which the PauseTransitService will run.
        </description>
    </property>

    <!-- LauncherAMUtils -->
    <property>
        <name>oozie.action.max.output.data</name>
        <value>2048</value>
        <description>
            Max size in characters for output data.
        </description>
    </property>

    <property>
        <name>oozie.action.fs.glob.max</name>
        <value>50000</value>
        <description>
            Maximum number of globbed files.
        </description>
    </property>

    <!-- JavaActionExecutor -->
    <!-- This is common to the subclasses of action executors for Java (e.g. map-reduce, pig, hive, java, etc) -->

    <property>
        <name>oozie.action.launcher.am.restart.kill.childjobs</name>
        <value>true</value>
        <description>
            Multiple instances of launcher jobs can happen due to RM non-work preserving recovery on RM restart, AM recovery
            due to crashes or AM network connectivity loss. This could also lead to orphaned child jobs of the old AM attempts
            leading to conflicting runs. This kills child jobs of previous attempts using YARN application tags.
        </description>
    </property>

    <property>
        <name>oozie.action.spark.setup.hadoop.conf.dir</name>
        <value>false</value>
        <description>
            Oozie action.xml (oozie.action.conf.xml) contains all the hadoop configuration and user provided configurations.
            This property will allow users to copy Oozie action.xml as hadoop *-site configurations files. The advantage is,
            user need not to manage these files into spark sharelib. If user wants to manage the hadoop configurations
            themselves, it should should disable it.
        </description>
    </property>

    <property>
        <name>oozie.action.shell.setup.hadoop.conf.dir</name>
        <value>false</value>
        <description>
            The Shell action is commonly used to run programs that rely on HADOOP_CONF_DIR (e.g. hive, beeline, sqoop, etc).  With
            YARN, HADOO_CONF_DIR is set to the NodeManager's copies of Hadoop's *-site.xml files, which can be problematic because
            (a) they are for meant for the NM, not necessarily clients, and (b) they won't have any of the configs that Oozie, or
            the user through Oozie, sets.  When this property is set to true, The Shell action will prepare the *-site.xml files
            based on the correct config and set HADOOP_CONF_DIR to point to it.  Setting it to false will make Oozie leave
            HADOOP_CONF_DIR alone.  This can also be set at the Action level by putting it in the Shell Action's configuration
            section, which also has priorty.  That all said, it's recommended to use the appropriate action type when possible.
        </description>
    </property>

    <property>
        <name>oozie.action.shell.setup.hadoop.conf.dir.write.log4j.properties</name>
        <value>true</value>
        <description>
            Toggle to control if a log4j.properties file should be written into the configuration directory prepared when
            oozie.action.shell.setup.hadoop.conf.dir is enabled. This is used to control logging behavior of log4j using commands
            run within the shell action script, and to ensure logging does not impact output data capture if leaked to stdout.
            Content of the written file is determined by the value of oozie.action.shell.setup.hadoop.conf.dir.log4j.content.
        </description>
    </property>

    <property>
        <name>oozie.action.shell.setup.hadoop.conf.dir.log4j.content</name>
        <value>
            log4j.rootLogger=INFO,console
            log4j.appender.console=org.apache.log4j.ConsoleAppender
            log4j.appender.console.target=System.err
            log4j.appender.console.layout=org.apache.log4j.PatternLayout
            log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n
        </value>
        <description>
            The value to write into a log4j.properties file under the config directory created when
            oozie.action.shell.setup.hadoop.conf.dir and oozie.action.shell.setup.hadoop.conf.dir.write.log4j.properties
            properties are both enabled. The values must be properly newline separated and in format expected by Log4J.
            Trailing and preceding whitespaces will be trimmed when reading this property.
            This is used to control logging behavior of log4j using commands run within the shell action script.
        </description>
    </property>

    <property>
        <name>oozie.action.shell.max-print-size-kb</name>
        <value>128</value>
        <description>
            When an oozie shell action starts, the shell script will be printed. Scripts larger than the size configured here
            (in KiB) will not be printed. If this value is less than or equal to zero, the script will not be printed.
        </description>
    </property>

    <property>
        <name>oozie.action.launcher.yarn.timeline-service.enabled</name>
        <value>false</value>
        <description>
            Enables/disables getting delegation tokens for ATS for the launcher job in
            YARN/Hadoop 2.6 (no effect in Hadoop 1) for all action types by default if tez-site.xml is present in
            distributed cache.
            This can be overridden on a per-action basis by setting
            oozie.launcher.yarn.timeline-service.enabled in an action's configuration section in a workflow.
        </description>
    </property>

    <property>
        <name>oozie.action.pig.log.expandedscript</name>
        <value>true</value>
        <description>
            Log the expanded pig script in launcher stdout log
        </description>
    </property>

    <property>
        <name>oozie.action.rootlogger.log.level</name>
        <value>INFO</value>
        <description>
            Logging level for root logger
        </description>
    </property>

    <!-- HadoopActionExecutor -->
    <!-- This is common to the subclasses action executors for map-reduce and pig -->

    <property>
        <name>oozie.action.retries.max</name>
        <value>3</value>
        <description>
           The number of retries for executing an action in case of failure
        </description>
    </property>

    <property>
        <name>oozie.action.retry.interval</name>
        <value>10</value>
        <description>
            The interval between retries of an action in case of failure
        </description>
    </property>

    <property>
        <name>oozie.action.retry.policy</name>
        <value>periodic</value>
        <description>
            Retry policy of an action in case of failure. Possible values are periodic/exponential
        </description>
    </property>

    <!-- SshActionExecutor -->

    <property>
        <name>oozie.action.ssh.delete.remote.tmp.dir</name>
        <value>true</value>
        <description>
            If set to true, it will delete temporary directory at the end of execution of ssh action.
        </description>
    </property>

    <property>
        <name>oozie.action.ssh.http.command</name>
        <value>curl</value>
        <description>
            Command to use for callback to oozie, normally is 'curl' or 'wget'.
            The command must available in PATH environment variable of the USER@HOST box shell.
        </description>
    </property>

    <property>
        <name>oozie.action.ssh.http.command.post.options</name>
        <value>--data-binary @#stdout --request POST --header "content-type:text/plain"</value>
        <description>
            The callback command POST options.
            Used when the ouptut of the ssh action is captured.
        </description>
    </property>

    <property>
        <name>oozie.action.ssh.allow.user.at.host</name>
        <value>true</value>
        <description>
            Specifies whether the user specified by the ssh action is allowed or is to be replaced
            by the Job user
        </description>
    </property>

    <property>
        <name>oozie.action.ssh.check.retries.max</name>
        <value>3</value>
        <description>
            Maximal retry count for ssh action status check
        </description>
    </property>

    <property>
        <name>oozie.action.ssh.check.initial.retry.wait.time</name>
        <value>3000</value>
        <description>
            init wait time that the first retry check needs to wait
        </description>
    </property>

    <!-- SubworkflowActionExecutor -->

    <property>
        <name>oozie.action.subworkflow.max.depth</name>
        <value>50</value>
        <description>
            The maximum depth for subworkflows.  For example, if set to 3, then a workflow can start subwf1, which can start subwf2,
            which can start subwf3; but if subwf3 tries to start subwf4, then the action will fail.  This is helpful in preventing
            errant workflows from starting infintely recursive subworkflows.
        </description>
    </property>

    <!-- HadoopAccessorService -->

    <property>
        <name>oozie.service.HadoopAccessorService.kerberos.enabled</name>
        <value>false</value>
        <description>
            Indicates if Oozie is configured to use Kerberos.
        </description>
    </property>

    <property>
        <name>local.realm</name>
        <value>LOCALHOST</value>
        <description>
            Kerberos Realm used by Oozie and Hadoop. Using 'local.realm' to be aligned with Hadoop configuration
        </description>
    </property>

    <property>
        <name>oozie.service.HadoopAccessorService.keytab.file</name>
        <value>${user.home}/oozie.keytab</value>
        <description>
            Location of the Oozie user keytab file.
        </description>
    </property>

    <property>
        <name>oozie.service.HadoopAccessorService.kerberos.principal</name>
        <value>${user.name}/localhost@${local.realm}</value>
        <description>
            Kerberos principal for Oozie service.
        </description>
    </property>

    <property>
        <name>oozie.service.HadoopAccessorService.jobTracker.whitelist</name>
        <value> </value>
        <description>
            Comma separated list of whitelisted job trackers for Oozie service.
        </description>
    </property>

    <property>
        <name>oozie.service.HadoopAccessorService.nameNode.whitelist</name>
        <value> </value>
        <description>
            Comma separated list of whitelisted name nodes for Oozie service.
        </description>
    </property>

    <property>
        <name>oozie.service.HadoopAccessorService.hadoop.configurations</name>
        <value>*=hadoop-conf</value>
        <description>
            Comma separated AUTHORITY=HADOOP_CONF_DIR, where AUTHORITY is the HOST:PORT of
            the Hadoop service (JobTracker, YARN, HDFS). The wildcard '*' configuration is
            used when there is no exact match for an authority. The HADOOP_CONF_DIR contains
            the relevant Hadoop *-site.xml files. If the path is relative is looked within
            the Oozie configuration directory; though the path can be absolute (i.e. to point
            to Hadoop client conf/ directories in the local filesystem.
        </description>
    </property>


    <property>
        <name>oozie.service.HadoopAccessorService.action.configurations</name>
        <value>*=action-conf</value>
        <description>
            Comma separated AUTHORITY=ACTION_CONF_DIR, where AUTHORITY is the HOST:PORT of
            the Hadoop MapReduce service (JobTracker, YARN). The wildcard '*' configuration is
            used when there is no exact match for an authority. The ACTION_CONF_DIR may contain
            ACTION.xml files where ACTION is the action type ('java', 'map-reduce', 'pig',
            'hive', 'sqoop', etc.). If the ACTION.xml file exists, its properties will be used
            as defaults properties for the action. If the path is relative is looked within
            the Oozie configuration directory; though the path can be absolute (i.e. to point
            to Hadoop client conf/ directories in the local filesystem.
        </description>
    </property>

    <property>
        <name>oozie.service.HadoopAccessorService.action.configurations.load.default.resources</name>
        <value>true</value>
        <description>
            true means that default and site xml files of hadoop (core-default, core-site,
            hdfs-default, hdfs-site, mapred-default, mapred-site, yarn-default, yarn-site)
            are parsed into actionConf on Oozie server. false means that site xml files are
            not loaded on server, instead loaded on launcher node.
            This is only done for pig and hive actions which handle loading those files
            automatically from the classpath on launcher task. It defaults to true.
        </description>
    </property>

    <property>
        <name>oozie.service.HadoopAccessorService.fs.s3a</name>
        <value> </value>
        <description>
            You can configure custom s3a file system properties globally.
            Value shall be a comma separated list of key=value pairs. For example:
            fs.s3a.fast.upload.buffer=bytebuffer,fs.s3a.impl.disable.cache=true
            Limitation: the custom file system properties cannot contain comma neither
            in key nor in value.
        </description>
    </property>

    <!-- Credentials -->
    <property>
        <name>oozie.credentials.credentialclasses</name>
        <value> </value>
        <description>
            A list of credential class mapping for CredentialsProvider
        </description>
    </property>
    <property>
        <name>oozie.credentials.skip</name>
        <value>false</value>
        <description>
            This determines if Oozie should skip getting credentials from the credential providers.  This can be overwritten at a
            job-level or action-level.
        </description>
    </property>

    <property>
        <name>oozie.actions.main.classnames</name>
        <value>distcp=org.apache.hadoop.tools.DistCp</value>
        <description>
            A list of class name mapping for Action classes
        </description>
    </property>

    <property>
        <name>oozie.service.WorkflowAppService.system.libpath</name>
        <value>/user/${user.name}/share/lib</value>
        <description>
            System library path to use for workflow applications.
            This path is added to workflow application if their job properties sets
            the property 'oozie.use.system.libpath' to true.
        </description>
    </property>

    <property>
        <name>oozie.command.default.lock.timeout</name>
        <value>5000</value>
        <description>
            Default timeout (in milliseconds) for commands for acquiring an exclusive lock on an entity.
        </description>
    </property>

    <property>
        <name>oozie.command.default.requeue.delay</name>
        <value>10000</value>
        <description>
            Default time (in milliseconds) for commands that are requeued for delayed execution.
        </description>
    </property>

   <!-- LiteWorkflowStoreService, Workflow Action Automatic Retry -->

    <property>
        <name>oozie.service.LiteWorkflowStoreService.user.retry.max</name>
        <value>3</value>
        <description>
            Automatic retry max count for workflow action is 3 in default.
        </description>
    </property>

    <property>
        <name>oozie.service.LiteWorkflowStoreService.user.retry.inteval</name>
        <value>10</value>
        <description>
            Automatic retry interval for workflow action is in minutes and the default value is 10 minutes.
        </description>
    </property>

    <property>
        <name>oozie.service.LiteWorkflowStoreService.user.retry.policy</name>
        <value>periodic</value>
        <description>
            Automatic retry policy for workflow action. Possible values are periodic or exponential, periodic being the default.
        </description>
    </property>

    <property>
        <name>oozie.service.LiteWorkflowStoreService.user.retry.error.code</name>
        <value>JA008,JA009,JA017,JA018,JA019,FS009,FS008,FS014</value>
        <description>
            Automatic retry interval for workflow action is handled for these specified error code:
            FS009, FS008 is file exists error when using chmod in fs action.
            FS014 is permission error in fs action
            JA018 is output directory exists error in workflow map-reduce action.
            JA019 is error while executing distcp action.
            JA017 is job not exists error in action executor.
            JA008 is FileNotFoundException in action executor.
            JA009 is IOException in action executor.
            ALL is the any kind of error in action executor.
        </description>
    </property>

    <property>
        <name>oozie.service.LiteWorkflowStoreService.user.retry.error.code.ext</name>
        <value> </value>
        <description>
            Automatic retry interval for workflow action is handled for these specified extra error code:
            ALL is the any kind of error in action executor.
        </description>
    </property>

    <property>
        <name>oozie.service.LiteWorkflowStoreService.node.def.version</name>
        <value>_oozie_inst_v_2</value>
        <description>
            NodeDef default version, _oozie_inst_v_0, _oozie_inst_v_1 or _oozie_inst_v_2
        </description>
    </property>

    <!-- Oozie Authentication -->

    <property>
        <name>oozie.authentication.type</name>
        <value>simple</value>
        <description>
            Defines authentication used for Oozie HTTP endpoint.
            Supported values are: simple | kerberos | #AUTHENTICATION_HANDLER_CLASSNAME#
        </description>
    </property>
    <property>
        <name>oozie.server.authentication.type</name>
        <value>${oozie.authentication.type}</value>
        <description>
            Defines authentication used for Oozie server communicating to other Oozie server over HTTP(s).
            Supported values are: simple | kerberos | #AUTHENTICATOR_CLASSNAME#
        </description>
    </property>

    <property>
        <name>oozie.server.connection.timeout.seconds</name>
        <value>180</value>
        <description>
            Defines connection timeout used for Oozie server communicating to other Oozie server over HTTP(s). Default is 3 min.
        </description>
    </property>

    <property>
        <name>oozie.authentication.token.validity</name>
        <value>36000</value>
        <description>
            Indicates how long (in seconds) an authentication token is valid before it has
            to be renewed.
        </description>
    </property>

    <property>
      <name>oozie.authentication.cookie.domain</name>
      <value></value>
      <description>
        The domain to use for the HTTP cookie that stores the authentication token.
        In order to authentiation to work correctly across multiple hosts
        the domain must be correctly set.
      </description>
    </property>

    <property>
        <name>oozie.authentication.simple.anonymous.allowed</name>
        <value>true</value>
        <description>
            Indicates if anonymous requests are allowed when using 'simple' authentication.
        </description>
    </property>

    <property>
        <name>oozie.authentication.kerberos.principal</name>
        <value>HTTP/localhost@${local.realm}</value>
        <description>
            Indicates the Kerberos principal to be used for HTTP endpoint.
            The principal MUST start with 'HTTP/' as per Kerberos HTTP SPNEGO specification.
        </description>
    </property>

    <property>
        <name>oozie.authentication.kerberos.keytab</name>
        <value>${oozie.service.HadoopAccessorService.keytab.file}</value>
        <description>
            Location of the keytab file with the credentials for the principal.
            Referring to the same keytab file Oozie uses for its Kerberos credentials for Hadoop.
        </description>
    </property>

    <property>
        <name>oozie.authentication.kerberos.name.rules</name>
        <value>DEFAULT</value>
        <description>
            The kerberos names rules is to resolve kerberos principal names, refer to Hadoop's
            KerberosName for more details.
        </description>
    </property>

    <!-- Coordinator "NONE" execution order default time tolerance -->
    <property>
        <name>oozie.coord.execution.none.tolerance</name>
        <value>1</value>
        <description>
            Default time tolerance in minutes after action nominal time for an action to be skipped
            when execution order is "NONE"
        </description>
    </property>

    <!-- Coordinator Actions default length -->
    <property>
        <name>oozie.coord.actions.default.length</name>
        <value>1000</value>
        <description>
            Default number of coordinator actions to be retrieved by the info command
        </description>
    </property>

    <!-- ForkJoin validation -->
    <property>
        <name>oozie.validate.ForkJoin</name>
        <value>true</value>
        <description>
            If true, fork and join should be validated at wf submission time.
        </description>
    </property>

    <property>
        <name>oozie.workflow.parallel.fork.action.start</name>
        <value>true</value>
        <description>
            Determines how Oozie processes starting of forked actions. If true, forked actions and their job submissions
            are done in parallel which is best for performance. If false, they are submitted sequentially.
        </description>
    </property>

    <property>
        <name>oozie.coord.action.get.all.attributes</name>
        <value>false</value>
        <description>
            Setting to true is not recommended as coord job/action info will bring all columns of the action in memory.
            Set it true only if backward compatibility for action/job info is required.
        </description>
    </property>

    <property>
        <name>oozie.service.HadoopAccessorService.supported.filesystems</name>
        <value>hdfs,hftp,webhdfs</value>
        <description>
            Enlist the different filesystems supported for federation. If wildcard "*" is specified,
            then ALL file schemes will be allowed.
        </description>
    </property>

    <property>
        <name>oozie.service.URIHandlerService.uri.handlers</name>
        <value>org.apache.oozie.dependency.FSURIHandler</value>
        <description>
                Enlist the different uri handlers supported for data availability checks.
        </description>
    </property>
    <!-- Oozie HTTP Notifications -->

    <property>
        <name>oozie.notification.url.connection.timeout</name>
        <value>10000</value>
        <description>
            Defines the timeout, in milliseconds, for Oozie HTTP notification callbacks. Oozie does
            HTTP notifications for workflow jobs which set the 'oozie.wf.action.notification.url',
            'oozie.wf.worklfow.notification.url' and/or 'oozie.coord.action.notification.url'
            properties in their job.properties. Refer to section '5 Oozie Notifications' in the
            Workflow specification for details.
        </description>
    </property>


    <!-- Enable Distributed Cache workaround for Hadoop 2.0.2-alpha (MAPREDUCE-4820) -->
    <property>
        <name>oozie.hadoop-2.0.2-alpha.workaround.for.distributed.cache</name>
        <value>false</value>
        <description>
            Due to a bug in Hadoop 2.0.2-alpha, MAPREDUCE-4820, launcher jobs fail to set
            the distributed cache for the action job because the local JARs are implicitly
            included triggering a duplicate check.
            This flag removes the distributed cache files for the action as they'll be
            included from the local JARs of the JobClient (MRApps) submitting the action
            job from the launcher.
        </description>
    </property>

    <property>
        <name>oozie.service.EventHandlerService.filter.app.types</name>
        <value>workflow_job, coordinator_action</value>
        <description>
            The app-types among workflow/coordinator/bundle job/action for which
            for which events system is enabled.
        </description>
    </property>

    <property>
        <name>oozie.service.EventHandlerService.event.queue</name>
        <value>org.apache.oozie.event.MemoryEventQueue</value>
        <description>
            The implementation for EventQueue in use by the EventHandlerService.
        </description>
    </property>

    <property>
        <name>oozie.service.EventHandlerService.event.listeners</name>
        <value>org.apache.oozie.jms.JMSJobEventListener</value>
        <description>
            List of implementations for JobEventListener and SLAEventListener to calculate SLA and send Email/JMS SLA
            and JMS job notifications. In case of multiple classes, names must be separated by commas.
        </description>
    </property>

    <property>
        <name>oozie.service.EventHandlerService.queue.size</name>
        <value>10000</value>
        <description>
            Maximum number of events to be contained in the event queue.
        </description>
    </property>

    <property>
        <name>oozie.service.EventHandlerService.worker.interval</name>
        <value>30</value>
        <description>
            The default interval (seconds) at which the worker threads will be scheduled to run
            and process events.
        </description>
    </property>

    <property>
        <name>oozie.service.EventHandlerService.batch.size</name>
        <value>10</value>
        <description>
            The batch size for batched draining per thread from the event queue.
        </description>
    </property>

    <property>
        <name>oozie.service.EventHandlerService.worker.threads</name>
        <value>3</value>
        <description>
            Number of worker threads to be scheduled to run and process events.
        </description>
    </property>

    <property>
        <name>oozie.sla.service.SLAService.capacity</name>
        <value>5000</value>
        <description>
             Maximum number of sla records to be contained in the memory structure.
        </description>
    </property>

    <property>
        <name>oozie.sla.service.SLAService.alert.events</name>
        <value>END_MISS</value>
        <description>
             Default types of SLA events for being alerted of.
        </description>
    </property>

    <property>
        <name>oozie.sla.service.SLAService.calculator.impl</name>
        <value>org.apache.oozie.sla.SLACalculatorMemory</value>
        <description>
             The implementation for SLACalculator in use by the SLAService.
        </description>
    </property>

    <property>
        <name>oozie.sla.service.SLAService.job.event.latency</name>
        <value>90000</value>
        <description>
             Time in milliseconds to account of latency of getting the job status event
             to compare against and decide sla miss/met
        </description>
    </property>

    <property>
        <name>oozie.sla.service.SLAService.check.interval</name>
        <value>30</value>
        <description>
             Time interval, in seconds, at which SLA Worker will be scheduled to run
        </description>
    </property>

    <property>
        <name>oozie.sla.disable.alerts.older.than</name>
        <value>48</value>
        <description>
             Time threshold, in HOURS, for disabling SLA alerting for jobs whose
             nominal time is older than this.
        </description>
    </property>

    <property>
        <name>oozie.sla.service.SLAService.maximum.retry.count</name>
        <value>3</value>
        <description>
            Number of times an SLA calculator status will be tried to get updated when any database related error occurs.
            It's possible that multiple WorkflowJobBean / CoordActionBean instances being inserted won't have SLACalcStatus entries
            inside SLACalculatorMemory#slaMap by the time written to database, and thus, no SLA will be tracked.
            In those rare cases, preconfigured maximum retry count can be extended.
        </description>
    </property>

    <!-- ZooKeeper configuration -->
    <property>
        <name>oozie.zookeeper.connection.string</name>
        <value>localhost:2181</value>
        <description>
            Comma-separated values of host:port pairs of the ZooKeeper servers.
        </description>
    </property>

    <property>
        <name>oozie.zookeeper.namespace</name>
        <value>oozie</value>
        <description>
            The namespace to use.  All of the Oozie Servers that are planning on talking to each other should have the same
            namespace.
        </description>
    </property>

    <property>
        <name>oozie.zookeeper.connection.timeout</name>
        <value>180</value>
        <description>
        Default ZK connection timeout (in sec).
        </description>
    </property>
    <property>
        <name>oozie.zookeeper.session.timeout</name>
        <value>300</value>
        <description>
            Default ZK session timeout (in sec). If connection is lost even after retry, then Oozie server will shutdown
            itself if oozie.zookeeper.server.shutdown.ontimeout is true.
        </description>
    </property>
    <property>
        <name>oozie.zookeeper.max.retries</name>
        <value>10</value>
        <description>
            Maximum number of times to retry.
        </description>
    </property>

    <property>
        <name>oozie.zookeeper.server.shutdown.ontimeout</name>
        <value>true</value>
        <description>
            If true, Oozie server will shutdown itself on ZK
            connection timeout.
        </description>
    </property>

    <property>
        <name>oozie.service.ZKLocksService.lock.release.retry.time.limit.minutes</name>
        <value>30</value>
        <description>
            On exception while releasing the lock, Oozie will exponentially retry till specified minutes before giving up.
        </description>
    </property>

    <property>
        <name>oozie.http.hostname</name>
        <value>0.0.0.0</value>
        <description>
            Oozie server host name. The network interface Oozie server binds to as an IP address or a hostname.
            Most users won't need to change this setting from the default value.
        </description>
    </property>

    <property>
        <name>oozie.http.port</name>
        <value>11000</value>
        <description>
            Oozie server port.
        </description>
    </property>

    <property>
        <name>oozie.http.request.header.size</name>
        <value>65536</value>
        <description>
            Oozie HTTP request header size.
        </description>
    </property>

    <property>
        <name>oozie.http.response.header.size</name>
        <value>65536</value>
        <description>
            Oozie HTTP response header size.
        </description>
    </property>

    <property>
        <name>oozie.https.port</name>
        <value>11443</value>
        <description>
            Oozie ssl server port.
        </description>
    </property>

    <property>
        <name>oozie.https.enabled</name>
        <value>false</value>
        <description>
            Controls whether SSL encryption is enabled.
        </description>
    </property>

    <property>
        <name>oozie.https.truststore.file</name>
        <value></value>
        <description>
            Path to a TrustStore file.
        </description>
    </property>

    <property>
        <name>oozie.https.truststore.pass</name>
        <value></value>
        <description>
            Password to the TrustStore.
        </description>
    </property>

    <property>
        <name>oozie.https.keystore.file</name>
        <value></value>
        <description>
            Path to a KeyStore file.
        </description>
    </property>

    <property>
        <name>oozie.https.keystore.pass</name>
        <value></value>
        <description>
            Password to the KeyStore.
        </description>
    </property>

    <property>
        <name>oozie.https.include.protocols</name>
        <value>TLSv1,SSLv2Hello,TLSv1.1,TLSv1.2</value>
        <description>
            Enabled TLS protocols.
        </description>
    </property>

    <property>
        <name>oozie.https.exclude.protocols</name>
        <value></value>
        <description>
            Disabled TLS protocols.
        </description>
    </property>

    <property>
        <name>oozie.https.include.cipher.suites</name>
        <value></value>
        <description>
            List of Cipher suites to include.
        </description>
    </property>

    <property>
        <name>oozie.https.exclude.cipher.suites</name>
        <value>TLS_ECDHE_RSA_WITH_RC4_128_SHA,SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA,SSL_RSA_WITH_DES_CBC_SHA,SSL_DHE_RSA_WITH_DES_CBC_SHA,SSL_RSA_EXPORT_WITH_RC4_40_MD5,SSL_RSA_EXPORT_WITH_DES40_CBC_SHA,SSL_RSA_WITH_RC4_128_MD5</value>
        <description>
            List of weak Cipher suites to exclude.
        </description>
    </property>

    <property>
        <name>oozie.hsts.max.age.seconds</name>
        <value>31536000</value>
        <description>
            Strict Transport Security max age in seconds if SSL is enabled. Ideally it is set to one year (31536000 sec).
        </description>
    </property>

    <property>
        <name>oozie.jsp.tmp.dir</name>
        <value>/tmp</value>
        <description>
            Temporary directory for compiling JSP pages.
        </description>
    </property>

    <property>
        <name>oozie.server.threadpool.max.threads</name>
        <value>150</value>
        <description>
             Controls the threadpool size for the Oozie Server (if using embbedded Jetty)
        </description>
    </property>

    <!-- Sharelib Configuration -->
    <property>
        <name>oozie.service.ShareLibService.mapping.file</name>
        <value> </value>
        <description>
            Sharelib mapping files contains list of key=value,
            where key will be the sharelib name for the action and value is a comma separated list of
            DFS or local filesystem directories or jar files.
            Example.
            oozie.pig_10=hdfs:///share/lib/pig/pig-0.10.1/lib/
            oozie.pig=hdfs:///share/lib/pig/pig-0.11.1/lib/
            oozie.distcp=hdfs:///share/lib/hadoop-2.2.0/share/hadoop/tools/lib/hadoop-distcp-2.2.0.jar
            oozie.hive=file:///usr/local/oozie/share/lib/hive/
        </description>

    </property>
        <property>
        <name>oozie.service.ShareLibService.fail.fast.on.startup</name>
        <value>false</value>
        <description>
            Fails server starup if sharelib initilzation fails.
        </description>
    </property>

    <property>
        <name>oozie.service.ShareLibService.purge.interval</name>
        <value>1</value>
        <description>
            How often, in days, Oozie should check for old ShareLibs and LauncherLibs to purge from HDFS.
        </description>
    </property>

    <property>
        <name>oozie.service.ShareLibService.temp.sharelib.retention.days</name>
        <value>7</value>
        <description>
            ShareLib retention time in days.
        </description>
    </property>

    <property>
        <name>oozie.action.ship.launcher.jar</name>
        <value>false</value>
        <description>
            Specifies whether launcher jar is shipped or not.
        </description>
    </property>

    <property>
        <name>oozie.action.jobinfo.enable</name>
        <value>false</value>
        <description>
        JobInfo will contain information of bundle, coordinator, workflow and actions. If enabled, hadoop job will have
        property(oozie.job.info) which value is multiple key/value pair separated by ",". This information can be used for
        analytics like how many oozie jobs are submitted for a particular period, what is the total number of failed pig jobs,
        etc from mapreduce job history logs and configuration.
        User can also add custom workflow property to jobinfo by adding property which prefix with "oozie.job.info."
        Eg.
        oozie.job.info="bundle.id=,bundle.name=,coord.name=,coord.nominal.time=,coord.name=,wf.id=,
        wf.name=,action.name=,action.type=,launcher=true"
        </description>
    </property>

    <property>
        <name>oozie.service.XLogStreamingService.max.log.scan.duration</name>
        <value>-1</value>
        <description>
        Max log scan duration in hours. If log scan request end_date - start_date > value,
        then exception is thrown to reduce the scan duration. -1 indicate no limit.
        </description>
    </property>

    <property>
        <name>oozie.service.XLogStreamingService.actionlist.max.log.scan.duration</name>
        <value>-1</value>
        <description>
        Max log scan duration in hours for coordinator job when list of actions are specified.
        If log streaming request end_date - start_date > value, then exception is thrown to reduce the scan duration.
        -1 indicate no limit.
        This setting is separate from max.log.scan.duration as we want to allow higher durations when actions are specified.
        </description>
    </property>

    <!-- JvmPauseMonitorService Configuration -->
    <property>
        <name>oozie.service.JvmPauseMonitorService.warn-threshold.ms</name>
        <value>10000</value>
        <description>
            The JvmPauseMonitorService runs a thread that repeatedly tries to detect when the JVM pauses, which could indicate
            that the JVM or host machine is overloaded or other problems.  This thread sleeps for 500ms; if it sleeps for
            significantly longer, then there is likely a problem.  This property specifies the threadshold for when Oozie should log
            a WARN level message; there is also a counter named "jvm.pause.warn-threshold".
        </description>
    </property>

    <property>
        <name>oozie.service.JvmPauseMonitorService.info-threshold.ms</name>
        <value>1000</value>
        <description>
            The JvmPauseMonitorService runs a thread that repeatedly tries to detect when the JVM pauses, which could indicate
            that the JVM or host machine is overloaded or other problems.  This thread sleeps for 500ms; if it sleeps for
            significantly longer, then there is likely a problem.  This property specifies the threadshold for when Oozie should log
            an INFO level message; there is also a counter named "jvm.pause.info-threshold".
        </description>
    </property>

    <property>
        <name>oozie.service.ZKLocksService.locks.reaper.threshold</name>
        <value>300</value>
        <description>
            The frequency at which the ChildReaper will run.
            Duration should be in sec. Default is 5 min.
        </description>
    </property>

    <property>
        <name>oozie.service.ZKLocksService.locks.reaper.threads</name>
        <value>2</value>
        <description>
            Number of fixed threads used by ChildReaper to
            delete empty locks.
        </description>
    </property>

    <property>
        <name>oozie.service.AbandonedCoordCheckerService.check.interval
        </name>
        <value>1440</value>
        <description>
            Interval, in minutes, at which AbandonedCoordCheckerService should run.
        </description>
    </property>

    <property>
        <name>oozie.service.AbandonedCoordCheckerService.check.delay
        </name>
        <value>60</value>
        <description>
            Delay, in minutes, at which AbandonedCoordCheckerService should run.
        </description>
    </property>

    <property>
        <name>oozie.service.AbandonedCoordCheckerService.failure.limit
        </name>
        <value>25</value>
        <description>
            Failure limit. A job is considered to be abandoned/faulty if total number of actions in
            failed/timedout/suspended >= "Failure limit" and there are no succeeded action.
        </description>
    </property>

    <property>
        <name>oozie.service.AbandonedCoordCheckerService.kill.jobs
        </name>
        <value>false</value>
        <description>
            If true, AbandonedCoordCheckerService will kill abandoned coords.
        </description>
    </property>

    <property>
        <name>oozie.service.AbandonedCoordCheckerService.job.older.than</name>
        <value>2880</value>
        <description>
         In minutes, job will be considered as abandoned/faulty if job is older than this value.
        </description>
    </property>

    <property>
        <name>oozie.notification.proxy</name>
        <value></value>
        <description>
         System level proxy setting for job notifications.
        </description>
    </property>

    <property>
        <name>oozie.wf.rerun.disablechild</name>
        <value>false</value>
        <description>
            By setting this option, workflow rerun will be disabled if parent workflow or coordinator exist and
            it will only rerun through parent.
        </description>
    </property>

    <property>
        <name>oozie.use.system.libpath</name>
        <value>false</value>
        <description>
            Default value of oozie.use.system.libpath. If user haven't specified =oozie.use.system.libpath=
            in the job.properties and this value is true and Oozie will include sharelib jars for workflow.
        </description>
    </property>

    <property>
        <name>oozie.service.PauseTransitService.callable.batch.size
        </name>
        <value>10</value>
        <description>
            This value determines the number of callable which will be batched together
            to be executed by a single thread.
        </description>
    </property>

    <!-- XConfiguration -->
    <property>
        <name>oozie.configuration.substitute.depth</name>
        <value>20</value>
        <description>
            This value determines the depth of substitution in configurations.
            If set -1, No limitation on substitution.
        </description>
    </property>

    <property>
        <name>oozie.service.SparkConfigurationService.spark.configurations</name>
        <value>*=spark-conf</value>
        <description>
            Comma separated AUTHORITY=SPARK_CONF_DIR, where AUTHORITY is the HOST:PORT of
            the ResourceManager of a YARN cluster. The wildcard '*' configuration is
            used when there is no exact match for an authority. The SPARK_CONF_DIR contains
            the relevant spark-defaults.conf properties file. If the path is relative is looked within
            the Oozie configuration directory; though the path can be absolute.  This is only used
            when the Spark master is set to either "yarn-client" or "yarn-cluster".
        </description>
    </property>

    <property>
        <name>oozie.service.SparkConfigurationService.spark.configurations.blacklist</name>
        <value>spark.yarn.jar,spark.yarn.jars</value>
        <description>
             Comma separated list of properties to ignore from any Spark configurations specified in
             oozie.service.SparkConfigurationService.spark.configurations property.
        </description>
    </property>

    <property>
        <name>oozie.service.SparkConfigurationService.spark.configurations.ignore.spark.yarn.jar</name>
        <value>true</value>
        <description>
             Deprecated. Use oozie.service.SparkConfigurationService.spark.configurations.blacklist instead.
             If true, Oozie will ignore the "spark.yarn.jar" property from any Spark configurations specified in
             oozie.service.SparkConfigurationService.spark.configurations.  If false, Oozie will not ignore it.  It is recommended
             to leave this as true because it can interfere with the jars in the Spark sharelib.
         </description>
    </property>

    <property>
        <name>oozie.email.attachment.enabled</name>
        <value>true</value>
        <description>
            This value determines whether to support email attachment of a file on HDFS.
            Set it false if there is any security concern.
        </description>
    </property>

    <property>
      <name>oozie.email.smtp.host</name>
      <value>localhost</value>
      <description>
          The host where the email action may find the SMTP server.
      </description>
    </property>

    <property>
      <name>oozie.email.smtp.port</name>
      <value>25</value>
      <description>
          The port to connect to for the SMTP server, for email actions.
      </description>
    </property>

    <property>
      <name>oozie.email.smtp.auth</name>
      <value>false</value>
      <description>
          Boolean property that toggles if authentication is to be done or not when using email actions.
      </description>
    </property>

    <property>
        <name>oozie.email.smtp.starttls.enable</name>
        <value>false</value>
        <description>
            Boolean property that toggles if use TLS in communication or not.
        </description>
    </property>

    <property>
      <name>oozie.email.smtp.username</name>
      <value></value>
      <description>
          If authentication is enabled for email actions, the username to login as (to the SMTP server).
      </description>
    </property>

    <property>
      <name>oozie.email.smtp.password</name>
      <value></value>
      <description>
          If authentication is enabled for email actions, the password to login with (to the SMTP server).
      </description>
    </property>

    <property>
      <name>oozie.email.from.address</name>
      <value>oozie@localhost</value>
      <description>
          The from address to be used for mailing all emails done via the email action.
      </description>
    </property>

    <property>
      <name>oozie.email.smtp.socket.timeout.ms</name>
      <value>10000</value>
      <description>
          The timeout to apply over all SMTP server socket operations done during the email action.
      </description>
    </property>

    <property>
        <name>oozie.actions.default.name-node</name>
        <value> </value>
        <description>
            The default value to use for the &lt;name-node&gt; element in applicable action types.  This value will be used when
            neither the action itself nor the global section specifies a &lt;name-node&gt;.  As expected, it should be of the form
            "hdfs://HOST:PORT".
        </description>
    </property>

    <property>
        <name>oozie.actions.default.job-tracker</name>
        <value> </value>
        <description>
            The default value to use for the &lt;job-tracker&gt; element in applicable action types.  This value will be used when
            neither the action itself nor the global section specifies a &lt;job-tracker&gt;.  As expected, it should be of the form
            "HOST:PORT".
        </description>
    </property>

    <property>
        <name>oozie.actions.default.resource-manager</name>
        <value> </value>
        <description>
            The default value to use for the &lt;resource-manager&gt; element in applicable action types.  This value will be used
            when neither the action itself nor the global section specifies a &lt;resource-managerr&gt;.  As expected, it should
            be of the form "HOST:PORT". If both oozie.actions.default.job-tracker and oozie.actions.default.resource-manager are
            specified, oozie.actions.default.resource-manager takes precedence.
        </description>
    </property>

    <property>
        <name>oozie.service.SchemaCheckerService.check.interval</name>
        <value>168</value>
        <description>
            This is the interval at which Oozie will check the database schema, in hours.
            A zero or negative value will disable the checker.
        </description>
    </property>

    <property>
        <name>oozie.service.SchemaCheckerService.ignore.extras</name>
        <value>false</value>
        <description>
            When set to false, the schema checker will consider extra (unused) tables, columns, and indexes to be incorrect.  When
            set to true, these will be ignored.
        </description>
    </property>

    <property>
        <name>oozie.hcat.uri.regex.pattern</name>
        <value>([a-z]+://[\w\.\-]+:\d+[,]*)+/\w+/\w+/?[\w+=;\-]*</value>
        <description>Regex pattern for HCat URIs. The regex can be modified by users as per requirement
            for parsing/splitting the HCat URIs.</description>
    </property>

    <property>
        <name>oozie.action.null.args.allowed</name>
        <value>true</value>
        <description>
            When set to true, empty arguments (like &lt;arg&gt;&lt;/arg&gt;) will be passed as "null" to the main method of a
            given action. That is, the args[] array will contain "null" elements. When set to false, then "nulls" are removed.
        </description>
    </property>

    <property>
        <name>oozie.javax.xml.parsers.DocumentBuilderFactory</name>
        <value>org.apache.xerces.jaxp.DocumentBuilderFactoryImpl</value>
        <description>
            Oozie will set the javax.xml.parsers.DocumentBuilderFactory Java System Property to this value.  This helps speed up
            XML handling because the JVM doesn't have to search for the proper class every time.  An empty or whitespace value
            skips setting the System Property.  The default implementation that Oozie uses is Xerces.
            Most users should not have to change this.
        </description>
    </property>

    <property>
        <name>oozie.graphviz.timeout.seconds</name>
        <value>60</value>
        <description>
            The default number of seconds Graphviz graph generation will timeout.
        </description>
    </property>

    <property>
        <name>oozie.launcher.default.vcores</name>
        <value>1</value>
        <description>
            The default number of vcores that are allocated for the Launcher AMs
        </description>
    </property>

    <property>
        <name>oozie.launcher.default.memory.mb</name>
        <value>2048</value>
        <description>
            The default amount of memory in MBs that is allocated for the Launcher AMs
        </description>
    </property>

    <property>
        <name>oozie.launcher.default.priority</name>
        <value>0</value>
        <description>
            The default YARN priority of the Launcher AM
        </description>
    </property>

    <property>
        <name>oozie.launcher.default.queue</name>
        <value>default</value>
        <description>
            The default YARN queue where the Launcher AM is placed
        </description>
    </property>

    <property>
        <name>oozie.launcher.default.max.attempts</name>
        <value>2</value>
        <description>
            The default YARN maximal attempt count of the Launcher AM
        </description>
    </property>

    <property>
        <name>oozie.launcher.override</name>
        <value>true</value>
        <description>
            Whether oozie.launcher.override.* and oozie.launcher.prepend.* parameters have to be considered when submitting a YARN
            LauncherAM. That is, existing MapReduce v1, MapReduce v2, or YARN parameters used in the action configuration should be
            populated to the Application Master launcher configuration, or not. Generally, first &lt;launcher/&gt; tag specific user
            settings, then YARN configuration settings, then MapReduce v2, and at last, MapReduce v1 properties are copied to
            launcher configuration.
        </description>
    </property>

    <property>
        <name>oozie.launcher.override.max.attempts</name>
        <value>mapreduce.map.maxattempts,mapred.map.max.attempts</value>
        <description>
            A comma separated list of MapReduce v1 and MapReduce v2 properties to override the max attempts of the MapReduce
            Application Master. The first one that is found will be used.
        </description>
    </property>

    <property>
        <name>oozie.launcher.override.memory.mb</name>
        <value>yarn.app.mapreduce.am.resource.mb,mapreduce.map.memory.mb,mapred.job.map.memory.mb</value>
        <description>
            A comma separated list of MapReduce v1, MapReduce v2, and YARN properties to override the memory amount in MB of the
            MapReduce Application Master. The first one that is found will be used.
        </description>
    </property>

    <property>
        <name>oozie.launcher.override.vcores</name>
        <value>yarn.app.mapreduce.am.resource.cpu-vcores,mapreduce.map.cpu.vcores</value>
        <description>
            A comma separated list of MapReduce v1, MapReduce v2, and YARN properties to override the CPU vcore count of the
            MapReduce Application Master. The first one that is found will be used.
        </description>
    </property>

    <property>
        <name>oozie.launcher.override.log.level</name>
        <value>mapreduce.map.log.level,mapred.map.child.log.level</value>
        <description>
            A comma separated list of MapReduce v1, MapReduce v2, and YARN properties to override the logging level of the MapReduce
            Application Master. The first one that is found will be used.
        </description>
    </property>

    <property>
        <name>oozie.launcher.override.javaopts</name>
        <value>yarn.app.mapreduce.am.command-opts,mapreduce.map.java.opts,mapred.child.java.opts</value>
        <description>
            A comma separated list of MapReduce v1, MapReduce v2, and YARN properties to override MapReduce Application Master JVM
            options. The first one that is found will be used.
        </description>
    </property>

    <property>
        <name>oozie.launcher.prepend.javaopts</name>
        <value>yarn.app.mapreduce.am.admin-command-opts</value>
        <description>
            A comma separated list of YARN properties to prepend to MapReduce Application Master JVM options. The first one that is
            found will be prepended to the list of JVM options.
        </description>
    </property>

    <property>
        <name>oozie.launcher.override.env</name>
        <value>yarn.app.mapreduce.am.env,mapreduce.map.env,mapred.child.env</value>
        <description>
            A comma separated list of MapReduce v1, MapReduce v2, and YARN properties to override MapReduce Application Master
            environment variable settings. The first one that is found will be used.
        </description>
    </property>

    <property>
        <name>oozie.launcher.prepend.env</name>
        <value>yarn.app.mapreduce.am.admin.user.env</value>
        <description>
            A comma separated list of YARN properties to prepend to MapReduce Application Master environment settings. The first one
            that is found will be prepended to the list of environment settings.
        </description>
    </property>

    <property>
        <name>oozie.launcher.override.priority</name>
        <value>mapreduce.job.priority,mapred.job.priority</value>
        <description>
            A comma separated list of MapReduce v1 and MapReduce v2 to override MapReduce Application Master job priority. The first
            one that is found will be used.
        </description>
    </property>

    <property>
        <name>oozie.launcher.override.queue</name>
        <value>mapreduce.job.queuename,mapred.job.queue.name</value>
        <description>
            A comma separated list of MapReduce v1 and MapReduce v2 properties to override MapReduce Application Master job queue
            name. The first one that is found will be used.
        </description>
    </property>

    <property>
        <name>oozie.launcher.override.view.acl</name>
        <value>mapreduce.job.acl-view-job</value>
        <description>
            A comma separated list of MapReduce v1 and MapReduce v2 properties to override MapReduce View ACL settings.
            The first one that is found will be used.
        </description>
    </property>

    <property>
        <name>oozie.launcher.override.modify.acl</name>
        <value>mapreduce.job.acl-modify-job</value>
        <description>
            A comma separated list of MapReduce v1 and MapReduce v2 properties to override MapReduce Modify ACL settings.
            The first one that is found will be used.
        </description>
    </property>

    <property>
        <name>oozie.action.mapreduce.needed.for.distcp</name>
        <value>true</value>
        <description>
        Whether to add MapReduce jars to the DistCp action's classpath's by default.
        </description>
    </property>

    <property>
        <name>oozie.action.mapreduce.needed.for.hive</name>
        <value>true</value>
        <description>
            Whether to add MapReduce jars to the Hive action's classpath's by default.
        </description>
    </property>

    <property>
        <name>oozie.action.mapreduce.needed.for.hive2</name>
        <value>true</value>
        <description>
            Whether to add MapReduce jars to the Hive2 action's classpath's by default.
        </description>
    </property>

    <property>
        <name>oozie.action.mapreduce.needed.for.java</name>
        <value>true</value>
        <description>
            Whether to add MapReduce jars to the Java action's classpath's by default.
        </description>
    </property>

    <property>
        <name>oozie.action.mapreduce.needed.for.map-reduce</name>
        <value>true</value>
        <description>
            Whether to add MapReduce jars to the Map-Reduce action's classpath's by default.
        </description>
    </property>

    <property>
        <name>oozie.action.mapreduce.needed.for.pig</name>
        <value>true</value>
        <description>
            Whether to add MapReduce jars to the Pig action's classpath's by default.
        </description>
    </property>

    <property>
        <name>oozie.action.mapreduce.needed.for.sqoop</name>
        <value>true</value>
        <description>
            Whether to add MapReduce jars to the Sqoop action's classpath's by default.
        </description>
    </property>

    <property>
        <name>oozie.action.sqoop.shellsplitter</name>
        <value>false</value>
        <description>
            Whether to use shell splitter instead of the space-based tokenizer during sqoop command splitting.
        </description>
    </property>

    <property>
        <name>oozie.fluent-job-api.generated.path</name>
        <value>/user/${user.name}/oozie-fluent-job-api-generated</value>
        <description>
            HDFS path to store workflow / coordinator / bundle definitions generated by fluent-job-api artifact.
            The XML files are first generated out of the fluent-job-api JARs submitted by the user at command line, then stored
            under this HDFS folder structure for later retrieval / resubmit / check.
            Note that the submitting user needs r/w permissions under this HDFS folder.
            Note further that this folder structure, when does not exist, will be created.
        </description>
    </property>

</configuration>
