#
#  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.
#

#
# This file contains localization strings for configuration labels and
# descriptions as used in the metatype.xml descriptor generated by the
# the SCR plugin

#
# Distributing Event Handler
dist.events.name = Apache Sling Distributing Event Handler 
dist.events.description = Distributes local OSGi Event Admin events to \
 other nodes of the same cluster. The events are written to the JCR \
 repository for distribution to other nodes while events written to the \
 repository are picked up and distributed locally through the OSGi Event Admin \
 Service.   

#
# Job Event Handler
job.events.name = Apache Sling Job Event Handler 
job.events.description = Manages job scheduling on a single system as well \
 as on a cluster. A Job runs only on a single cluster node. \
 The respective scheduling is persisted in the repository and distributed \
 amongst the cluster nodes through repository events. The jobs are started \
 locally on a single cluster node through the OSGi Event Admin.

sleep.time.name = Retry Interval
sleep.time.description = The number of milliseconds to sleep between two \
 consecutive retries of a job which failed and was set to be retried. The \
 default value is 30 seconds. This value is only relevant if there is a single \
 failed job in the queue. If there are multiple failed jobs, each job is \
 retried in turn without an intervening delay.
 
max.job.retries.name = Maximum Retries
max.job.retries.description = The maximum number of times a failed job slated \
 for retries is actually retried. If a job has been retried this number of \
 times and still fails, it is not rescheduled and assumed to have failed. The \
 default value is 10.

jobscheduler.period.name = Event Cleanup Internal
jobscheduler.period.description = Interval in seconds in which jobs older than \
 a specific age (see Event Cleanup Age) are purged from the repository. \
 The default value is 5 minutes (300 seconds).

jobcleanup.period.name = Event Cleanup Age
jobcleanup.period.description = The maximum age in minutes of persisted job to \
 be purged from the repository during the cleanup run. The default is 5 \
 minutes. Note that this setting defines the minimum time an event remains \
 in the repository. 

wait.for.ack.name = Acknowledge Waiting Time
wait.for.ack.description = If a service is processing a job, it acknowledges this \
 by sending a message to the Job Event Handler. If the Job Event Handler does not \
 receive such a message in the configured time, it reschedules the job. The configured \
 time is in seconds (default is 90 secs).

max.parallel.jobs.name = Maximum Parallel Jobs
max.parallel.jobs.description = The maximum number of parallel jobs started for the main \
 queue.


#
# Event Pool
event.pool.name = Apache Sling Event Thread Pool 
event.pool.description = This is the thread pool used by the Apache Sling eventing support.

minPoolSize.name = Min Pool Size
minPoolSize.description = The minimum pool size. The minimum pool size should be \
 higher than 20. Approx 10 threads are in use by the system, so a pool size of 20 \
 allows to process 10 events in parallel.

maxPoolSize.name = Max Pool Size
maxPoolSize.description = The maximum pool size. The maximum pool size should be higher than \
 the minimum pool size.

queueSize.name = Queue Size
queueSize.description = The maximum size of the thread queue if the pool is exhausted.

#
# Shared labels
scheduler.period.name = Event Cleanup Internal
scheduler.period.description = Interval in seconds in which events older than \
 a specific age (see Event Cleanup Age) are purged from the repository. \
 The default value is 30 minutes (1800 seconds).

cleanup.period.name = Event Cleanup Age
cleanup.period.description = The maximum age in minutes of persisted events to \
 be purged from the repository during the cleanup run. The default is 15 \
 minutes. Note that this setting defines the minimum time an event remains \
 in the repository. 
 
repository.path.name = Persistent Event Location
repository.path.description = Absolute Path of the Repository location where \
 events are persisted to be picked up by the event distribution mechanism. \
 The default value is "/sling/events".
