Eventual-Cluster Binary Provider

JFrog Installation & Setup Documentation

Content Type
Installation & Setup
ft:sourceType
Paligo

This binary provider is not independent and will always be used as part of a template chain for a remote filestore that may exhibit upload latency (for example, S3 or GCS). To overcome potential latency, files are first written to a folder called “eventual” under the baseDataDir in local storage, and then later uploaded to persistent storage with the cloud provider.

eventual-cluster binary provider configuration

The default location of the eventual folder is under the $JFROG_HOME/artifactory/data/artifactory folder and is not configurable. You need to make sure that Artifactory has full read/write permissions to this location.

There are two additional folders under the eventual folder:

  • _pre: part of the persistence mechanism that ensures all files are valid before being uploaded to the remote filestore

  • _queue: handles all actions on files that will reach the remote filestore

Parameter

Description

id

eventual-cluster

addStalePeriod

Default: 300000 ms

The amount of time to wait before an add action is deemed stale when trying to handle the addition of a file that is not present in Artifactory.

maxWorkers

Default: 5

The number of worker threads employed by this provider. These threads handle all actions against the remote filestore.

dispatcherInterval

Default: 1000 ms

The time to wait between scans of the eventual directory.

checkPeriod

Default: 15000 ms

The minimum time to wait between trying to re-activate the provider if it had fatal errors at any point.

zone

The name of the sharding zone the provider is a part of (only applicable under a sharding provider)

Eventual-Cluster Binary Provider Example

The configuration below uses the google-storage chain template, and configures 10 parallel threads for uploading and a scan time of 1 second.

<config version="v1">
    <chain template="cluster-google-storage-v2"/>
    <provider id="google-storage-v2" type="google-storage-v2">
        <endpoint>commondatastorage.googleapis.com</endpoint>
        <bucketName><BUCKET NAME></bucketName>
    </provider>
   
    <provider id="eventual-cluster-google-storage" type="eventual-cluster">
        <maxWorkers>5</maxWorkers>
        <dispatcherInterval>1000</dispatcherInterval>
        <checkPeriod>15000</checkPeriod>
        <addStalePeriod>300000</addStalePeriod>
        <zone>local</zone>
    </provider>
</config>