Skip to content

Remove defaults / overrides from feature configurations #1572

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 29 commits into from
May 14, 2025
Merged
Show file tree
Hide file tree
Changes from all 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
10 changes: 5 additions & 5 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 @@ -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. |
6 changes: 3 additions & 3 deletions helm/polaris/templates/configmap.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,12 @@ data:
{{- $_ = set $map "polaris.realm-context.realms" (join "," .Values.realmContext.realms) -}}

{{- /* Features */ -}}
{{- range $k, $v := .Values.features.defaults -}}
{{- $_ = set $map (printf "polaris.features.defaults.\"%s\"" $k) (toJson $v) -}}
{{- range $k, $v := .Values.features -}}
{{- $_ = set $map (printf "polaris.features.\"%s\"" $k) (toJson $v) -}}
{{- end -}}
{{- range $realm, $overrides := .Values.features.realmOverrides -}}
{{- range $k, $v := $overrides -}}
{{- $_ = set $map (printf "polaris.config.realm-overrides.\"%s\".\"%s\"" $realm $k) (toJson $v) -}}
{{- $_ = set $map (printf "polaris.features.realm-overrides.\"%s\".\"%s\"" $realm $k) (toJson $v) -}}
{{- end -}}
{{- end -}}

Expand Down
13 changes: 6 additions & 7 deletions helm/polaris/tests/configmap_test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -89,19 +89,18 @@ tests:
- it: should configure features
set:
features:
defaults:
feature1: true
feature2: 42
feature1: true
feature2: 42
realmOverrides:
realm1:
feature1: false
realm2:
feature2: 43
asserts:
- matchRegex: { path: 'data["application.properties"]', pattern: "polaris.features.defaults.\"feature1\"=true" }
- matchRegex: { path: 'data["application.properties"]', pattern: "polaris.features.defaults.\"feature2\"=42" }
- matchRegex: { path: 'data["application.properties"]', pattern: "polaris.config.realm-overrides.\"realm1\".\"feature1\"=false" }
- matchRegex: { path: 'data["application.properties"]', pattern: "polaris.config.realm-overrides.\"realm2\".\"feature2\"=43" }
- matchRegex: { path: 'data["application.properties"]', pattern: "polaris.features.\"feature1\"=true" }
- matchRegex: { path: 'data["application.properties"]', pattern: "polaris.features.\"feature2\"=42" }
- matchRegex: { path: 'data["application.properties"]', pattern: "polaris.features.realm-overrides.\"realm1\".\"feature1\"=false" }
- matchRegex: { path: 'data["application.properties"]', pattern: "polaris.features.realm-overrides.\"realm2\".\"feature2\"=43" }

- it: should configure persistence
set:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -177,10 +177,17 @@ public Builder<T> catalogConfigUnsafe(String catalogConfig) {
return this;
}

public FeatureConfiguration<T> buildFeatureConfiguration() {
private void validateOrThrow() {
if (key == null || description == null || defaultValue == null) {
throw new IllegalArgumentException("key, description, and defaultValue are required");
}
if (key.contains(".")) {
throw new IllegalArgumentException("key cannot contain `.`");
}
}

public FeatureConfiguration<T> buildFeatureConfiguration() {
validateOrThrow();
FeatureConfiguration<T> config =
new FeatureConfiguration<>(
key, description, defaultValue, catalogConfig, catalogConfigUnsafe);
Expand All @@ -189,9 +196,7 @@ public FeatureConfiguration<T> buildFeatureConfiguration() {
}

public BehaviorChangeConfiguration<T> buildBehaviorChangeConfiguration() {
if (key == null || description == null || defaultValue == null) {
throw new IllegalArgumentException("key, description, and defaultValue are required");
}
validateOrThrow();
if (catalogConfig.isPresent() || catalogConfigUnsafe.isPresent()) {
throw new IllegalArgumentException(
"catalog configs are not valid for behavior change configs");
Expand Down
20 changes: 10 additions & 10 deletions quarkus/defaults/src/main/resources/application-it.properties
Original file line number Diff line number Diff line change
Expand Up @@ -31,16 +31,16 @@ polaris.persistence.type=in-memory

polaris.secrets-manager.type=in-memory

polaris.features.defaults."ALLOW_EXTERNAL_CATALOG_CREDENTIAL_VENDING"=false
polaris.features.defaults."ALLOW_EXTERNAL_METADATA_FILE_LOCATION"=false
polaris.features.defaults."ALLOW_OVERLAPPING_CATALOG_URLS"=true
polaris.features.defaults."ALLOW_SPECIFYING_FILE_IO_IMPL"=true
polaris.features.defaults."ALLOW_WILDCARD_LOCATION"=true
polaris.features.defaults."ENFORCE_PRINCIPAL_CREDENTIAL_ROTATION_REQUIRED_CHECKING"=true
polaris.features.defaults."INITIALIZE_DEFAULT_CATALOG_FILEIO_FOR_it"=true
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@eric-maynard and @adutra so are we changing how default parameters are configured ? i though we intended to stay as the same behavior before to avoid uncessary regression to existing users?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was changed in between 0.9 and 0.10, so changing it between 0.10 and 1.0 might not be so bad. We certainly should try to hammer this out before 1.0.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that should be fine, just want to double confirm since that wasn't the original plan. Can i ask what is the reason for this behavior change ?

polaris.features.defaults."SKIP_CREDENTIAL_SUBSCOPING_INDIRECTION"=true
polaris.features.defaults."SUPPORTED_CATALOG_STORAGE_TYPES"=["FILE","S3","GCS","AZURE"]
polaris.features.defaults."ENABLE_CATALOG_FEDERATION"=true
polaris.features."ALLOW_EXTERNAL_CATALOG_CREDENTIAL_VENDING"=false
polaris.features."ALLOW_EXTERNAL_METADATA_FILE_LOCATION"=false
polaris.features."ALLOW_OVERLAPPING_CATALOG_URLS"=true
polaris.features."ALLOW_SPECIFYING_FILE_IO_IMPL"=true
polaris.features."ALLOW_WILDCARD_LOCATION"=true
polaris.features."ENFORCE_PRINCIPAL_CREDENTIAL_ROTATION_REQUIRED_CHECKING"=true
polaris.features."INITIALIZE_DEFAULT_CATALOG_FILEIO_FOR_it"=true
polaris.features."SKIP_CREDENTIAL_SUBSCOPING_INDIRECTION"=true
polaris.features."SUPPORTED_CATALOG_STORAGE_TYPES"=["FILE","S3","GCS","AZURE"]
polaris.features."ENABLE_CATALOG_FEDERATION"=true

polaris.realm-context.realms=POLARIS,OTHER

Expand Down
8 changes: 4 additions & 4 deletions quarkus/defaults/src/main/resources/application.properties
Original file line number Diff line number Diff line change
Expand Up @@ -108,10 +108,10 @@ polaris.realm-context.realms=POLARIS
polaris.realm-context.header-name=Polaris-Realm
polaris.realm-context.require-header=false

polaris.features.defaults."ENFORCE_PRINCIPAL_CREDENTIAL_ROTATION_REQUIRED_CHECKING"=false
polaris.features.defaults."SUPPORTED_CATALOG_STORAGE_TYPES"=["S3","GCS","AZURE","FILE"]
# polaris.features.defaults."ENABLE_CATALOG_FEDERATION"=true
polaris.features.defaults."SUPPORTED_CATALOG_CONNECTION_TYPES"=["ICEBERG_REST"]
polaris.features."ENFORCE_PRINCIPAL_CREDENTIAL_ROTATION_REQUIRED_CHECKING"=false
polaris.features."SUPPORTED_CATALOG_STORAGE_TYPES"=["S3","GCS","AZURE","FILE"]
# polaris.features."ENABLE_CATALOG_FEDERATION"=true
polaris.features."SUPPORTED_CATALOG_CONNECTION_TYPES"=["ICEBERG_REST"]

# realm overrides
# polaris.features.realm-overrides."my-realm"."INITIALIZE_DEFAULT_CATALOG_FILEIO_FOR_TEST"=true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.smallrye.config.ConfigMapping;
import io.smallrye.config.WithParentName;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
Expand All @@ -33,9 +34,16 @@
// QuarkusFeaturesConfiguration
public interface QuarkusBehaviorChangesConfiguration {

@WithParentName
Map<String, String> defaults();

Map<String, ? extends FeaturesConfiguration.RealmOverrides> realmOverrides();
Map<String, ? extends QuarkusRealmOverrides> realmOverrides();

interface QuarkusRealmOverrides extends FeaturesConfiguration.RealmOverrides {
@WithParentName
@Override
Map<String, String> overrides();
}

default Map<String, Object> parseDefaults(ObjectMapper objectMapper) {
return convertMap(objectMapper, defaults());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,23 @@
package org.apache.polaris.service.quarkus.config;

import io.smallrye.config.ConfigMapping;
import io.smallrye.config.WithParentName;
import java.util.Map;
import org.apache.polaris.service.config.FeaturesConfiguration;

@ConfigMapping(prefix = "polaris.features")
public interface QuarkusFeaturesConfiguration extends FeaturesConfiguration {

@WithParentName
@Override
Map<String, String> defaults();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FYI this is creating an unwanted behavior: I injected FeaturesConfiguration in DefaultConfigurationStoreTest and here are the contents of featuresConfiguration.defaults():

realm-overrides."realm1"."ALLOW_SPECIFYING_FILE_IO_IMPL"=false
ALLOW_SPECIFYING_FILE_IO_IMPL=true
ENABLE_GENERIC_TABLES=false
ENFORCE_PRINCIPAL_CREDENTIAL_ROTATION_REQUIRED_CHECKING=false
SUPPORTED_CATALOG_CONNECTION_TYPES=["ICEBERG_REST"]
SUPPORTED_CATALOG_STORAGE_TYPES=["S3","GCS","AZURE","FILE"]

You will notice the strange realm-overrides."realm1"."ALLOW_SPECIFYING_FILE_IO_IMPL=false entry.

The contents of featuresConfiguration.realmOverrides() look correct though:

realm1={
  ALLOW_SPECIFYING_FILE_IO_IMPL=false
}

At this point, I wonder if a better solution wouldn't be to simply define one single map here to hold all the configs:

public interface QuarkusFeaturesConfiguration extends FeaturesConfiguration {
  @WithParentName
  @Override
  Map<String, String> allConfigs();
}

And parse that map manually (we are already doing it half-manually anyway):

public interface FeaturesConfiguration {

  Map<String, String> allConfigs();

  default Map<String, Object> parseDefaults(ObjectMapper objectMapper) {
    Map<String, Object> defaults = new HashMap<>();
    for (String key : allConfigs().keySet()) {
      if (!key.contains(".")) {
        defaults.put(key, convertProperty(objectMapper, key, allConfigs().get(key)));
      }
    }
    return defaults;
  }

  default Map<String, Map<String, Object>> parseRealmOverrides(ObjectMapper objectMapper) {
    Map<String, Map<String, Object>> realmOverrides = new HashMap<>();
    for (String key : allConfigs().keySet()) {
      if (key.contains(".")) {
        String[] parts = key.split("\\.");
        String realm = parts[0];
        String configName = parts[1];
        Map<String, Object> realmValues = realmOverrides.computeIfAbsent(realm, k -> new HashMap<>());
        realmValues.put(configName, convertProperty(objectMapper, key, allConfigs().get(key)));
      }
    }
    return realmOverrides;
  }

  private static Object convertProperty(ObjectMapper objectMapper, String key, String value) {
    try {
      JsonNode node = objectMapper.readTree(value);
      return configValue(node);
    } catch (JsonProcessingException e) {
      throw new RuntimeException(
          "Invalid JSON value for feature configuration: " + key, e);
    }
  }

  private static Object configValue(JsonNode node) {
    // same as before
  }
}

WDYT?

(this obviously assumes that a feature configuration name cannot contain a dot.)

Copy link
Contributor Author

@eric-maynard eric-maynard May 12, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see the same thing, thanks for highlighting this. One doubt I have is this: if we assume config names can't contain a dot, is the current behavior okay? Since realm-overrides."realm1"."ALLOW_SPECIFYING_FILE_IO_IMPL=false cannot be misinterpreted as a config value named realm-overrides.realm1.ALLOW_SPECIFYING_FILE_IO_IMPL

Also, either way I can add some code enforcing that config keys don't contain a dot.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel uncomfortable if we don't fix this, I confess. We know that defaults() contains unwanted material, but since the unwanted material is also invalid material, we are tolerating that; I fear this could bite us back in the future, in spite of the validation checks you added. But, in the spirit of moving forward, I would be OK if we find a better solution later.

(Side note: my suggestion above goes a bit further than that, actually: it also removes the need to use .realm-overrides. altogether, while avoiding the unwanted entries in defaults().)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, let's fix it then! I was able to pull in your change and I see it working, but I have some reservations:

  1. I actually like having realm-overrides or something like it -- without it, we have syntax polaris.features.X[.Y] where X is either a feature name or a realm depending on if Y is present, and I find that awkward
  2. There is significantly more code duplication across QuarkusFeaturesConfiguration and QuarkusBehaviorChangesConfiguration. We already have a TODO to fix this, so I can live with this for now.

If it's alright with you, I will try to implement your suggestion in a way that preserves the realm-overrides component of the config?

Copy link
Contributor Author

@eric-maynard eric-maynard May 13, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I also thought of one other concern -- we may need a more sophisticated approach to parsing.

  1. Is it really safe to use split like this, since realm names can contain a dot? Previously, I was trusting SmallRye to deal with quoted dots, but now it seems we need to do that manually?
  2. I noticed that this doesn't work for quoted identifiers, so polaris.features.realm-overrides."realm1".XYZ is interpreting the realm as "realm1" rather than realm1

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds like a plan! 👍

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For now, I added another wrapper around the FeaturesConfiguration to clean out the properties. It may be a bit hacky but it does address the bad entries in defaults. WDYT?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we may need a more sophisticated approach to parsing.

Indeed. My example did not cover these corner cases, but you are right that we need to deal with dots in realm ids and also quoted identifiers.


@Override
Map<String, FeaturesConfiguration.RealmOverrides> realmOverrides();
Map<String, QuarkusRealmOverrides> realmOverrides();

interface QuarkusRealmOverrides extends RealmOverrides {
@WithParentName
@Override
Map<String, String> overrides();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
/*
* 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.
*/
package org.apache.polaris.service.quarkus.config;

import jakarta.annotation.Priority;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.enterprise.inject.Alternative;
import java.util.Map;
import java.util.stream.Collectors;

/**
* Wraps around {@link QuarkusBehaviorChangesConfiguration} but removes properties from `defaults`
* that shouldn't be there
*/
@ApplicationScoped
@Alternative
@Priority(1)
public class QuarkusResolvedBehaviorChangesConfiguration
implements QuarkusBehaviorChangesConfiguration {

private final Map<String, String> cleanedDefaults;
private final Map<String, ? extends QuarkusBehaviorChangesConfiguration.QuarkusRealmOverrides>
realmOverrides;

public QuarkusResolvedBehaviorChangesConfiguration(QuarkusBehaviorChangesConfiguration raw) {
this.realmOverrides = raw.realmOverrides();

// Filter out any keys that look like realm overrides
this.cleanedDefaults =
raw.defaults().entrySet().stream()
.filter(e -> e.getKey().split("\\.").length == 1)
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
}

@Override
public Map<String, String> defaults() {
return cleanedDefaults;
}

@Override
public Map<String, ? extends QuarkusBehaviorChangesConfiguration.QuarkusRealmOverrides>
realmOverrides() {
return realmOverrides;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
/*
* 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.
*/
package org.apache.polaris.service.quarkus.config;

import jakarta.annotation.Priority;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.enterprise.inject.Alternative;
import java.util.Map;
import java.util.stream.Collectors;
import org.apache.polaris.service.config.FeaturesConfiguration;

/**
* Wraps around {@link QuarkusFeaturesConfiguration} but removes properties from `defaults` that
* shouldn't be there
*/
@ApplicationScoped
@Alternative
@Priority(1)
public class QuarkusResolvedFeaturesConfiguration implements FeaturesConfiguration {

private final Map<String, String> cleanedDefaults;
private final Map<String, ? extends RealmOverrides> realmOverrides;

public QuarkusResolvedFeaturesConfiguration(QuarkusFeaturesConfiguration raw) {
this.realmOverrides = raw.realmOverrides();

// Filter out any keys that look like realm overrides
this.cleanedDefaults =
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you could just introduce a default method in QuarkusFeaturesConfiguration:

  @Override
  public Map<String, String> cleanedDefaults() {
    return defaults().entrySet().stream()
            .filter(e -> e.getKey().split("\\.").length == 1)
            .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
  }

But I'm OK with this alternative bean.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That will work, but it seems like we risk a caller using the defaults method and seeing the invalid entries you were concerned about. Wrapping the whole thing will let us expose only the valid entries through defaults.

raw.defaults().entrySet().stream()
.filter(e -> e.getKey().split("\\.").length == 1)
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
}

@Override
public Map<String, String> defaults() {
return cleanedDefaults;
}

@Override
public Map<String, ? extends RealmOverrides> realmOverrides() {
return realmOverrides;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -113,9 +113,9 @@ public Set<Class<?>> getEnabledAlternatives() {
@Override
public Map<String, String> getConfigOverrides() {
return Map.of(
"polaris.features.defaults.\"ALLOW_SPECIFYING_FILE_IO_IMPL\"",
"polaris.features.\"ALLOW_SPECIFYING_FILE_IO_IMPL\"",
"true",
"polaris.features.defaults.\"ALLOW_EXTERNAL_METADATA_FILE_LOCATION\"",
"polaris.features.\"ALLOW_EXTERNAL_METADATA_FILE_LOCATION\"",
"true");
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,11 +106,11 @@ public static class Profile implements QuarkusTestProfile {
@Override
public Map<String, String> getConfigOverrides() {
return Map.of(
"polaris.features.defaults.\"ALLOW_SPECIFYING_FILE_IO_IMPL\"",
"polaris.features.\"ALLOW_SPECIFYING_FILE_IO_IMPL\"",
"true",
"polaris.features.defaults.\"INITIALIZE_DEFAULT_CATALOG_FILEIO_FOR_TEST\"",
"polaris.features.\"INITIALIZE_DEFAULT_CATALOG_FILEIO_FOR_TEST\"",
"true",
"polaris.features.defaults.\"SUPPORTED_CATALOG_STORAGE_TYPES\"",
"polaris.features.\"SUPPORTED_CATALOG_STORAGE_TYPES\"",
"[\"FILE\"]");
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,9 +88,9 @@ public static class Profile extends PolarisAuthzTestBase.Profile {
@Override
public Map<String, String> getConfigOverrides() {
return Map.of(
"polaris.features.defaults.\"ALLOW_SPECIFYING_FILE_IO_IMPL\"",
"polaris.features.\"ALLOW_SPECIFYING_FILE_IO_IMPL\"",
"true",
"polaris.features.defaults.\"ALLOW_EXTERNAL_METADATA_FILE_LOCATION\"",
"polaris.features.\"ALLOW_EXTERNAL_METADATA_FILE_LOCATION\"",
"true");
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -169,13 +169,13 @@ public static class Profile implements QuarkusTestProfile {
@Override
public Map<String, String> getConfigOverrides() {
return Map.of(
"polaris.features.defaults.\"ALLOW_SPECIFYING_FILE_IO_IMPL\"",
"polaris.features.\"ALLOW_SPECIFYING_FILE_IO_IMPL\"",
"true",
"polaris.features.defaults.\"INITIALIZE_DEFAULT_CATALOG_FILEIO_FOR_TEST\"",
"polaris.features.\"INITIALIZE_DEFAULT_CATALOG_FILEIO_FOR_TEST\"",
"true",
"polaris.features.defaults.\"SUPPORTED_CATALOG_STORAGE_TYPES\"",
"polaris.features.\"SUPPORTED_CATALOG_STORAGE_TYPES\"",
"[\"FILE\"]",
"polaris.features.defaults.\"LIST_PAGINATION_ENABLED\"",
"polaris.features.\"LIST_PAGINATION_ENABLED\"",
"true",
"polaris.event-listener.type",
"test");
Expand Down
Loading
Loading