Skip to content

Add doc for behavior change configuration#3677

Merged
MonkeyCanCode merged 1 commit intoapache:mainfrom
MonkeyCanCode:doc_for_behavior_change_configuration
Feb 7, 2026
Merged

Add doc for behavior change configuration#3677
MonkeyCanCode merged 1 commit intoapache:mainfrom
MonkeyCanCode:doc_for_behavior_change_configuration

Conversation

@MonkeyCanCode
Copy link
Contributor

We are missing doc for https://github.com/apache/polaris/blob/main/polaris-core/src/main/java/org/apache/polaris/core/config/BehaviorChangeConfiguration.java.

Checklist

  • 🛡️ Don't disclose security issues! (contact [email protected])
  • 🔗 Clearly explained why the changes are needed, or linked related issues: Fixes #
  • 🧪 Added/updated tests with good coverage, or manually tested (and explained how)
  • 💡 Added comments for complex logic
  • 🧾 Updated CHANGELOG.md (if needed)
  • 📚 Updated documentation in site/content/in-dev/unreleased (if needed)

@adutra
Copy link
Contributor

adutra commented Feb 5, 2026

Hi @MonkeyCanCode I'm not sure the "behavior change" flags were meant to be exposed publicly. Their javadocs say:

Internal configuration flags for non-feature behavior changes in Polaris. These flags control subtle behavior adjustments and bug fixes, not user-facing settings. They are intended for internal use only, are inherently unstable, and may be removed at any time. When introducing a new flag, consider the trade-off between maintenance burden and the risk of an unguarded behavior change. Flags here are generally short-lived and should either be removed or promoted to stable feature flags before the next release.

Of course... those flags have been there for a long time now and were neither removed nor promoted to stable flags 😄

Therefore, I'm not sure we should expose them in documentation – at least not before assessing if they should be removed or promoted.

Wdyt?

@MonkeyCanCode
Copy link
Contributor Author

Hi @MonkeyCanCode I'm not sure the "behavior change" flags were meant to be exposed publicly. Their javadocs say:

Internal configuration flags for non-feature behavior changes in Polaris. These flags control subtle behavior adjustments and bug fixes, not user-facing settings. They are intended for internal use only, are inherently unstable, and may be removed at any time. When introducing a new flag, consider the trade-off between maintenance burden and the risk of an unguarded behavior change. Flags here are generally short-lived and should either be removed or promoted to stable feature flags before the next release.

Of course... those flags have been there for a long time now and were neither removed nor promoted to stable flags 😄

Therefore, I'm not sure we should expose them in documentation – at least not before assessing if they should be removed or promoted.

Wdyt?

Got it. Yeah, I was working on something and had to use one of them then noticed none of these are documented. Will start a ML for it. Thanks for the quick review @adutra.

@adutra
Copy link
Contributor

adutra commented Feb 5, 2026

An ML discussion thread would be perfect, thanks!

@MonkeyCanCode
Copy link
Contributor Author

those flags have been there for a long time now and were neither removed nor promoted to stable flags

Thanks for review @adutra . ML: https://lists.apache.org/thread/8fgszl9jw9718dstlh3dxn0o1g8wkrh4

Copy link
Contributor

@flyrain flyrain left a comment

Choose a reason for hiding this comment

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

I'm OK to add them in the doc. Most of them are user-facing config indeed.

@github-project-automation github-project-automation bot moved this from PRs In Progress to Ready to merge in Basic Kanban Board Feb 7, 2026
@MonkeyCanCode MonkeyCanCode merged commit 2eed885 into apache:main Feb 7, 2026
15 checks passed
@github-project-automation github-project-automation bot moved this from Ready to merge to Done in Basic Kanban Board Feb 7, 2026
@MonkeyCanCode
Copy link
Contributor Author

Merged as concluded on the ML. We will clean up risky ones in a diff PR.

snazy added a commit to snazy/polaris that referenced this pull request Feb 11, 2026
* Remove "giant" constructors from Handlers and Adapters (apache#3669)

This PR attempts to reduce the "giant constructor" symptoms in catalog adapters and handlers.
* The `CatalogHandler` subtypes are now `@PolarisImmutable` objects, and thus can leverage the generated builder to create instances without the need for big constructors.
* The handlers are now produced by a new factory, which is a CDI request-scoped bean with direct field injection to avoid constructor injection.

* Fix FileIO usage in PolarisRestCatalogIntegrationBase (apache#3658)

Currently, all tests inheriting from `PolarisRestCatalogIntegrationBase` are forcibly using `InMemoryFileIO` for all `RESTCatalog` instances.

Furthermore, this class wasn't overriding `CatalogTests.baseTableLocation()`, so tests calling this method were actually operating on `file://` paths all the time.

Because of that, some child test classes, and in particular, the MiniIO-based ones, weren't actually testing anything useful.

This PR changes `PolarisRestCatalogIntegrationBase` to use a configurable `FileIO` impl, defaulting to `ResolvingFileIO`.

This change uncovered a few latent issues with current tests, and notably:

1) Tests using MinIO should request credential vending consistently, otherwise most tests would fail because the S3 client attempts to load credentials from the environment.

2) Tests calling `registerTable` need special handling since this endpoint does NOT support access delegation at all. For these tests, the `RESTCatalog` clients need to be given direct credentials for S3 – since the server won't give them anything – even with vended credentials requested.

Incidentally, this PR simplifies `IntegrationTestsHelper.mergeFromAnnotatedElements()` – but its functionality stays the same.

* Automatically adjust gradlew during Gradle Wrapper updates (apache#3620)

* CI for feature branches (apache#3686)

This change enables CI on branches matching the pattern `feature/*`.

This change does _not_ require PRs against `feature/*` branches to have "green" CI.

* fix: Correct schema version number in schema-v4.sql files (apache#3690)

- Update DatabaseType.java to allow schemaVersion up to 4
- Fix h2/schema-v4.sql to set version to 4 instead of 3
- Fix postgres/schema-v4.sql to set version to 4 instead of 3

Co-authored-by: Anand Kumar Sankaran <[email protected]>

* Add doc for behavior change configuration (apache#3677)

* Disable python update from GH action (apache#3678)

* Add support for rustfs test-containers (apache#3679)

* Fix CI (apache#3698)

* Fix status badge for README.md (apache#3696)

* Fix README.md CI URL

* Fix README.md CI URL

* Update dependency io.opentelemetry:opentelemetry-bom to v1.59.0 (apache#3704)

* Update dependency com.puppycrawl.tools:checkstyle to v13.2.0 (apache#3703)

* Update dependency com.google.errorprone:error_prone_core to v2.47.0 (apache#3702)

* Update registry.access.redhat.com/ubi9/openjdk-21-runtime Docker tag to v1.24-2.1770236038 (apache#3701)

* Update dependency ch.qos.logback:logback-classic to v1.5.28 (apache#3700)

* chore(deps): update dependency ipykernel to v7.2.0 (apache#3705)

* chore(deps): update docker.io/jaegertracing/jaeger docker tag to v2.15.0 (apache#3706)

* fix(deps): update dependency io.smallrye.common:smallrye-common-annotation to v2.16.0 (apache#3707)

* Last merged commit de43d1d

* Fix integration-tests after apache#3704

Short story: This change fixes the int-tests in `:polaris-runtime-service`.

Long story is this:
In `:polaris-runtime-service` we intentionally declare "just" a `platform(libs.quarkus.bom)` dependency, because of the `:polaris-spark-integration-*` module.
It is however generally recommended by Quarkus to _only_ use `enforcedPlatform(libs.quarkus.bom)` to effectively prevent breaking changes coming from transitive dependencies. Which is exactly what happend after apache#3704.

Why did CI not catch this issue?
The answer is pretty simple: The effective Gradle task inputs, including the `intTestRuntimeClasspath` did not change. So the previously cached test outcomes could be reused, and the int-tests did not run.
Just adding the `runtimeClasspath` as another task-input of the `intTest` may _not_ work as intended.

Why does _removing_ `implementation(platform(libs.opentelemetry.bom))` help?
Simply because that lets the dependencies fall back to to the declared transitive dependencies. We do not have direct dependencies to OTel.

The correct fix here _would_ be to use `implementation(enforcedPlatform(libs.quarkus.bom))`, but that breaks the Spark plugin integration tests.

There is a better alternative: Let the Spark plugin tests leverage polaris-apprunner, which is meant for exactly the use case of effectively decoupling some module from the build requirements of a Quarkus application.

---------

Co-authored-by: Alexandre Dutra <[email protected]>
Co-authored-by: Anand K Sankaran <[email protected]>
Co-authored-by: Anand Kumar Sankaran <[email protected]>
Co-authored-by: Yong Zheng <[email protected]>
Co-authored-by: Mend Renovate <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants