Skip to content
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,7 @@ This product includes code from Apache Iceberg.
* spec/polaris-catalog-apis/oauth-tokens-api.yaml
* integration-tests/src/main/java/org/apache/polaris/service/it/test/PolarisRestCatalogIntegrationTest.java
* service/common/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalog.java
* service/common/src/main/java/org/apache/polaris/service/catalog/iceberg/CatalogHandlerUtils.java

Copyright: Copyright 2017-2025 The Apache Software Foundation
Home page: https://iceberg.apache.org
Expand Down
12 changes: 6 additions & 6 deletions helm/polaris/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ A Helm chart for Apache Polaris (incubating).

### Optional

When using EclipseLink backed metastore a custom `persistence.xml` is required, a Kubernetes Secret must be created for it. Below is a sample command:
When using a custom `persistence.xml`, a Kubernetes Secret must be created for it. Below is a sample command:
```bash
kubectl create secret generic polaris-secret -n polaris --from-file=persistence.xml
```
Expand All @@ -67,7 +67,7 @@ helm unittest helm/polaris
The below instructions assume Kind and Helm are installed.

Simply run the `run.sh` script from the Polaris repo root, making sure to specify the
`--eclipse-link-deps` if using EclipseLink backed metastore, option:
`--eclipse-link-deps` option:

```bash
./run.sh
Expand Down Expand Up @@ -186,8 +186,8 @@ kubectl delete namespace polaris

## Values

Key | Type | Default | Description |
|-----|------|-----|-------------|
| Key | Type | Default | Description |
|-----|------|---------|-------------|
| advancedConfig | object | `{}` | Advanced configuration. You can pass here any valid Polaris or Quarkus configuration property. Any property that is defined here takes precedence over all the other configuration values generated by this chart. Properties can be passed "flattened" or as nested YAML objects (see examples below). Note: values should be strings; avoid using numbers, booleans, or other types. |
| affinity | object | `{}` | Affinity and anti-affinity for polaris pods. See https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity. |
| authentication | object | `{"authenticator":{"type":"default"},"tokenBroker":{"maxTokenGeneration":"PT1H","secret":{"name":null,"privateKey":"private.pem","publicKey":"public.pem","secretKey":"secret"},"type":"rsa-key-pair"},"tokenService":{"type":"default"}}` | Polaris authentication configuration. |
Expand Down Expand Up @@ -285,7 +285,7 @@ kubectl delete namespace polaris
| persistence.eclipseLink.secret | object | `{"key":"persistence.xml","name":null}` | The secret name to pull persistence.xml from. |
| persistence.eclipseLink.secret.key | string | `"persistence.xml"` | The key in the secret to pull persistence.xml from. |
| persistence.eclipseLink.secret.name | string | `nil` | The name of the secret to pull persistence.xml from. If not provided, the default built-in persistence.xml will be used. This is probably not what you want. |
| persistence.type | string | `"relational-jdbc"` | Three built-in types are available: "relational-jdbc", "in-memory", "eclipse-link". The in-memory type is not recommended for production use. The eclipse-link type is deprecated and will be unsupported in a future release. |
| persistence.type | string | `"eclipse-link"` | The type of persistence to use. Two built-in types are supported: in-memory and eclipse-link. |
| podAnnotations | object | `{}` | Annotations to apply to polaris pods. |
| podLabels | object | `{}` | Additional Labels to apply to polaris pods. |
| podSecurityContext | object | `{"fsGroup":10001,"seccompProfile":{"type":"RuntimeDefault"}}` | Security context for the polaris pod. See https://kubernetes.io/docs/tasks/configure-pod-container/security-context/. |
Expand Down Expand Up @@ -343,4 +343,4 @@ kubectl delete namespace polaris
| tracing.attributes | object | `{}` | Resource attributes to identify the polaris service among other tracing sources. See https://opentelemetry.io/docs/reference/specification/resource/semantic_conventions/#service. If left empty, traces will be attached to a service named "Apache Polaris"; to change this, provide a service.name attribute here. |
| tracing.enabled | bool | `false` | Specifies whether tracing for the polaris server should be enabled. |
| tracing.endpoint | string | `"http://otlp-collector:4317"` | The collector endpoint URL to connect to (required). The endpoint URL must have either the http:// or the https:// scheme. The collector must talk the OpenTelemetry protocol (OTLP) and the port must be its gRPC port (by default 4317). See https://quarkus.io/guides/opentelemetry for more information. |
| tracing.sample | string | `"1.0d"` | Which requests should be sampled. Valid values are: "all", "none", or a ratio between 0.0 and "1.0d" (inclusive). E.g. "0.5d" means that 50% of the requests will be sampled. Note: avoid entering numbers here, always prefer a string representation of the ratio. |
| tracing.sample | string | `"1.0d"` | Which requests should be sampled. Valid values are: "all", "none", or a ratio between 0.0 and "1.0d" (inclusive). E.g. "0.5d" means that 50% of the requests will be sampled. Note: avoid entering numbers here, always prefer a string representation of the ratio. |
Original file line number Diff line number Diff line change
Expand Up @@ -249,4 +249,12 @@ public static void enforceFeatureEnabledOrThrow(
.description("The list of supported catalog connection types for federation")
.defaultValue(List.of(ConnectionType.ICEBERG_REST.name()))
.buildFeatureConfiguration();

public static final FeatureConfiguration<Integer> ICEBERG_COMMIT_MAX_RETRIES =
PolarisConfiguration.<Integer>builder()
.key("ICEBERG_COMMIT_MAX_RETRIES")
.catalogConfig("polaris.config.iceberg-commit-max-retries")
.description("The max number of times to try committing to an Iceberg table")
.defaultValue(4)
.buildFeatureConfiguration();
}
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@
import org.apache.polaris.service.admin.PolarisAdminService;
import org.apache.polaris.service.catalog.PolarisPassthroughResolutionView;
import org.apache.polaris.service.catalog.generic.GenericTableCatalog;
import org.apache.polaris.service.catalog.iceberg.CatalogHandlerUtils;
import org.apache.polaris.service.catalog.iceberg.IcebergCatalog;
import org.apache.polaris.service.catalog.io.FileIOFactory;
import org.apache.polaris.service.catalog.policy.PolicyCatalog;
Expand Down Expand Up @@ -192,6 +193,7 @@ public Map<String, String> getConfigOverrides() {
@Inject protected Clock clock;
@Inject protected FileIOFactory fileIOFactory;
@Inject protected PolarisEventListener polarisEventListener;
@Inject protected CatalogHandlerUtils catalogHandlerUtils;

protected IcebergCatalog baseCatalog;
protected GenericTableCatalog genericTableCatalog;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,8 @@ private IcebergCatalogHandler newWrapper(
factory,
catalogName,
polarisAuthorizer,
reservedProperties);
reservedProperties,
catalogHandlerUtils);
}

/**
Expand Down Expand Up @@ -256,7 +257,8 @@ public void testInsufficientPermissionsPriorToSecretRotation() {
callContextCatalogFactory,
CATALOG_NAME,
polarisAuthorizer,
reservedProperties);
reservedProperties,
catalogHandlerUtils);

// a variety of actions are all disallowed because the principal's credentials must be rotated
doTestInsufficientPrivileges(
Expand Down Expand Up @@ -290,7 +292,8 @@ public void testInsufficientPermissionsPriorToSecretRotation() {
callContextCatalogFactory,
CATALOG_NAME,
polarisAuthorizer,
reservedProperties);
reservedProperties,
catalogHandlerUtils);

doTestSufficientPrivilegeSets(
List.of(Set.of(PolarisPrivilege.NAMESPACE_LIST)),
Expand Down
Loading
Loading