Skip to content

Configuration

The Nessie server is configurable via properties as listed in the application.properties file. These properties can be set when starting up the docker image by adding them to the Docker invocation prefixed with -D. For example, if you want to set Nessie to use the INMEMORY version store running on port 8080, you would run the following:

docker run -p 8080:8080 projectnessie/nessie \
  -Dnessie.version.store.type=INMEMORY \
  -Dquarkus.http.port=8080

Core Nessie Configuration Settings

Core Settings

Property Default values Type Description
nessie.server.default-branch main String Sets the default branch to use if not provided by the user.
nessie.server.send-stacktrace-to-client false boolean Sets if server stack trace should be sent to the client in case of error.

Version Store Settings

Property Default values Type Description
nessie.version.store.type INMEMORY VersionStoreType Sets which type of version store to use by Nessie. Possible values are: DYNAMO, INMEMORY, ROCKS, MONGO, TRANSACTIONAL.
nessie.version.store.trace.enable true boolean Sets whether calls against the version-store are traced with OpenTracing/OpenTelemetry (Jaeger).
nessie.version.store.metrics.enable true boolean Sets whether metrics for the version-store are enabled.

Transactional Version Store Settings (Since Nessie 0.25.0)

When setting nessie.version.store.type=TRANSACTIONAL which enables transactional/RDBMS as the version store used by the Nessie server, the following configurations are applicable in combination with nessie.version.store.type:

Info

A complete set of JDBC configuration options for Quarkus can be found on quarkus.io

RocksDB Version Store Settings

When setting nessie.version.store.type=ROCKS which enables RockDB as the version store used by the Nessie server, the following configurations are applicable in combination with nessie.version.store.type:

Property Default values Type Description
nessie.version.store.rocks.db-path /tmp/nessie-rocksdb String Sets RocksDB storage path, e.g: /tmp/rocks-nessie.

MongoDB Version Store Settings

When setting nessie.version.store.type=MONGO which enables MongoDB as the version store used by the Nessie server, the following configurations are applicable in combination with nessie.version.store.type:

Property Default values Type Description
quarkus.mongodb.database String Sets MongoDB database name.
quarkus.mongodb.connection-string String Sets MongoDB connection string.

Info

A complete set of MongoDB configuration options for Quarkus can be found on quarkus.io

DynamoDB Version Store Settings

When setting nessie.version.store.type=DYNAMO which enables DynamoDB as the version store used by the Nessie server, the following configurations are applicable in combination with nessie.version.store.type:

Property Default values Type Description
quarkus.dynamodb.aws.region String Sets DynamoDB AWS region.
quarkus.dynamodb.aws.credentials.type Sets the credentials provider that should be used to authenticate with AWS.
quarkus.dynamodb.endpoint-override URI Sets the endpoint URI with which the SDK should communicate. If not specified, an appropriate endpoint to be used for the given service and region.
quarkus.dynamodb.sync-client.type url url, apache Sets the type of the sync HTTP client implementation

Info

A complete set of DynamoDB configuration options for Quarkus can be found on quarkiverse.github.io

Version Store Advanced Settings

The following configurations are advanced configurations to configure how Nessie will store the data into the configured data store:

Property Default values Type Description
nessie.version.store.advanced.repository-id String Sets Nessie repository ID (optional). This ID can be used to distinguish multiple Nessie repositories that reside in the same storage instance.
nessie.version.store.advanced.parent-per-commit 20 int Sets the number of parent-commit-hashes stored in Nessie store.
nessie.version.store.advanced.key-list-distance 20 int Each n-th CommitLogEntry, where n == value of this parameter, will contain a “full” KeyList.
nessie.version.store.advanced.max-key-list-size 250_000 int Sets the maximum size of a database object/row. This parameter is respected for the key list in CommitLogEntry. This value must not be “on the edge” - means: it must leave enough room for a somewhat large-ish list
nessie.version.store.advanced.max-key-list-entity-size 1_000_000 int Sets the maximum size of a database object/row. This parameter is respected for KeyListEntity. This value must not be “on the edge” - means: it must leave enough room for a somewhat large-ish list
nessie.version.store.advanced.commit-timeout 500 int Sets the timeout for CAS-like operations in milliseconds.
nessie.version.store.advanced.commit-retries Integer.MAX_VALUE int Sets the maximum retries for CAS-like operations.
nessie.version.store.advanced.attachment-keys-batch-size 100 int Sets the number of content attachments that are written or retrieved at once. Some implementations may silently adapt this value to database limits or implementation requirements.
nessie.version.store.advanced.tx.batch-size 20 int Sets the DML batch size, used when writing multiple commits to a branch during a transplant or merge operation or when writing “overflow full key-lists”.
nessie.version.store.advanced.tx.jdbc.catalog String Sets the catalog name to use via JDBC.
nessie.version.store.advanced.tx.jdbc.schema String Sets the schema name to use via JDBC.
nessie.version.store.advanced.references.segment.prefetch 1 int Sets the number of reference name segments to prefetch.
nessie.version.store.advanced.references.segment.size 250_000 int Sets the size of a reference name segments.
nessie.version.store.advanced.reference.names.batch.size 25 int Sets the number of references to resolve at once when fetching all references.
nessie.version.store.advanced.ref-log.stripes 8 int Sets the number of stripes for the ref-log.
nessie.version.store.advanced.commit-log-scan-prefetch 25 int Sets the amount of commits to ask the database to pre-fetch during a full commits scan.
nessie.version.store.advanced.assumed-wall-clock-drift-micros 5_000_000 long Sets the assumed wall-clock drift between multiple Nessie instances, in microseconds.

Authentication settings

Property Default values Type Description
nessie.server.authentication.enabled false boolean Sets whether authentication should be enabled on the Nessie server.
quarkus.oidc.auth-server-url String Sets the base URL of the OpenID Connect (OIDC) server if nessie.server.authentication.enabled=true
quarkus.oidc.client-id String Sets client-id of the application if nessie.server.authentication.enabled=true. Each application has a client-id that is used to identify the application.

Authorization settings

Property Default values Type Description
nessie.server.authorization.enabled false boolean Sets whether authorization should be enabled on the Nessie server.
nessie.server.authorization.rules.<ruleId> Map Sets the authorization rules that can be used in CEL format.
Property Default values Type Description
quarkus.http.port 19120 int Sets the HTTP port
quarkus.http.auth.basic boolean Sets if basic auth should be enabled.

Info

A complete set of configuration options for Quarkus can be found on quarkus.io

Metrics

Metrics are published using prometheus and can be collected via standard methods. See: Prometheus.

Swagger UI

The Swagger UI allows for testing the REST API and reading the API docs. It is available via localhost:19120/q/swagger-ui