Skip to content

Commit 23207f8

Browse files
snazyHonahXpoojanilangekarsinghpk234jbonofre
authored
Dremio merge 2025 09 30 15 57 (apache#136)
* (Based on PR#2223)Support Namespace/Table level RBAC for external passthrough catalogs (apache#2673) Creates missing synthetic entities for securables in external passthrough catalogs. Based on Option 1 discussed in the RBAC section of catalog federation design doc. In the future, we could remove calls to PolarisEntity.Builder() and replace them with entities fetched from the remote catalog. (enabling Option 2). --------- Co-authored-by: Pooja Nilangekar <poojan@umd.edu> * Docs: Add more details about v1 schema user to upgrade from 1.0 to 1.1 (apache#2674) * Site: The link https://iceberg.apache.org/concepts/catalog/ doesn't exist anymore. (apache#2683) * Docs: Add analytics for polaris.apache.org (apache#2676) * Make ENABLE_SUB_CATALOG_RBAC_FOR_FEDERATED_CATALOGS configurable per catalog (apache#2688) * Update ENABLE_SUB_CATALOG_RBAC_FOR_FEDERATED_CATALOGS to be configurable per catalog * chore(deps): update postgres docker tag to v18 (apache#2692) * fix(deps): update dependency org.eclipse.persistence:eclipselink to v4.0.8 (apache#2682) * fix(deps): update dependency org.apache.logging.log4j:log4j-core to v2.25.2 (apache#2646) * chore(deps): update dependency openapi-generator-cli to v7.15.0 (apache#2410) * chore(deps): update dependency io.quarkus to v3.27.0 (apache#2663) Co-authored-by: Mend Renovate <bot@renovateapp.com> * Publish Develocity builds scans for PRs and local use (apache#2596) This PR enables Develocity build scans for all PRs and contributors w/o an Apache account. CI build scans in the `apache/polaris` repo against branches and tags and having access to the ASF's Develocity secret continue to publish to the ASF's Develocity instance (no behavioral change). All other build scans are published to Gradle's public Develocity instance: - Build scans from local developer (non-CI) runs are only published, if Gradle is invoked with the `--scan` option. - Build scans from or targeting another repository than `apache/polaris` do need be enabled explicity by accepting Gradle's terms of service, via a repository variable, because this is a decision of the owner of a repository. Advanced options to configure another Develocity server or project-ID are available (for non-`apache/polaris` repositories). Detailed instructions in the `README.md`. * Fix & enhancements to the Events API hierarchy (apache#2629) Summary of changes: - Turned `PolarisEventListener` into an interface to facilitate implementation / mocking - Added missing `implements PolarisEvent` to many event records - Removed unused method overrides - Added missing method overrides to `TestPolarisEventListener` * fix(deps): update dependency org.kordamp.gradle:jandex-gradle-plugin to v2.3.0 (apache#2694) * Auth: reorganize internal authentication components (apache#2634) This PR contains no functional and no user-facing change. It is merely a refactor to better organize auth code. Summary of changes: - Moved all internal authentication components to the `org.apache.polaris.service.auth.internal` package and subpackages - Reduced visibility of utility classes - Renamed `TokenBroker` class hierarchy to stick to the naming standard: `<Algorithm>JWTBroker` - Introduced `@PolarisImmutable` whenever appropriate - Removed unused `NoneTokenBrokerFactory` (we already have `DisabledOAuth2ApiService`) - Removed unused `TokenBrokerFactoryConfig` * Enhancement : adding support for Aurora postgres AWS IAM authentication (apache#2650) Add support for postgres AWS IAM authentication using the `apache-client` lib. * Remove unused `name` arg from findCatalogByName in PolarisAdminService (apache#2691) * remove unused name param * Rename for better readability * Fix a race condition in sendNotification where concurrent parent-namespace creation causes failures (apache#2693) * Fix a race condition in sendNotification where concurrent parent-namespace creation causes failures The semantics of the createNonExistingNamespaces method used during sendNotification were supposed to be "create if needed". However, the behavior ended up surfacing an AlreadyExistsException if multiple concurrent sendNotification attempts were made for a brand-new namespace (where the notifications may be different tables). This would cause a table sync to fail if a sibling table was being synced at the same time, even though the new table should successfully get created under the shared namespace. * Also better future-proof the createNamespaceInternal logic by explicitly checking for ENTITY_ALREADY_EXISTS, per review suggestion. Log a less scary message since it's not an error scenario type of race condition, per review suggestion * Client: add credential reset option (apache#2698) * Client: add credential reset option * Client: add credential reset option * Client: add credential reset option * Add integration testing * Fix lint * fix(deps): update dependency software.amazon.awssdk:bom to v2.34.5 (apache#2702) * fix(deps): update dependency com.gradleup.shadow:shadow-gradle-plugin to v9.2.2 (apache#2661) * Support S3 storage that does not have STS (apache#2672) * Support S3 storage that does not have STS This change is backward compatible with old catalogs that have storage configuration for S3 systems with STS. * Add new property to S3 storage config: `stsUnavailable` (defaults to "available"). * Do not call STS when unavailable in `AwsCredentialsStorageIntegration`, but still put other properties (e.g. s3.endpoint) into `AccessConfig` Relates to apache#2615 Relates apache#2207 * Docs/improve idp documentation (apache#2695) * Fix Github links in IDP documentation * Separate IDP docs for usage and development * - Add telemetry config example - Fix link to getting started from landing page - Fix mentioning role-arn as required * Fix some relative links (local Hugo resolves them properly, but PR auto checks still fails) * Docs: narrow down --role-arn usage for AWS S3 only; fix a link in keycloak guide. * Docs: fix a link in keycloak guide. * chore(deps): update gradle/actions digest to 748248d (apache#2708) * Client: fix integration testing (apache#2700) * Add fallback in case the VERSION table is not present (apache#2653) * initial commit * wire up * pastefix * change to postgres specific code * [Catalog Federation] Add feature flag to disallow setting sub-RBAC for federated catalog at catalog level (apache#2696) In apache#2688 (comment), we've identified that configuring polaris.config.enable-sub-catalog-rbac-for-federated-catalogs at catalog level should not be allowed in all cases, especially when the owner is not the same subject as the catalog user or admin. This PR add a feature flag, ALLOW_SETTING_SUB_CATALOG_RBAC_FOR_FEDERATED_CATALOGS to allow owner to disable catalog level setting polaris.config.enable-sub-catalog-rbac-for-federated-catalogs * Fix `delegationModes` parameter propagation in `createTableStaged()` (apache#2713) This is follow-up bugfix for apache#2589 The bugfix part apache#2711 is extracted here since apache#2711 proved to be non-trivial and may require extra time. * Use the `delegationModes` method parameter as intended (as opposed to a local constant). * Generate Request IDs (if not specified); Return Request ID as a Header (apache#2602) * fix(deps): update dependency org.junit:junit-bom to v5.14.0 (apache#2715) * NoSQL persistence: add Java/Vert.X executor abstraction layer (apache#2527) Provides an abstraction to submit asynchronous tasks, optionally with a delay or delay + repetition and implementations based on Java's `ThreadPoolExecutor` and Vert.X. * Fix RDS devservices config + adopt for `:polaris-admin:test` (apache#2723) Changes: * Disables devservices for `:polaris-admin` tests as well, which is necessary to _not_ spin up test containers. * Use the explicit devservices-config as everywhere else. The first bullet point can cause excessive memory usage, especially with more test classes, eventually killing the whole GH runner. * fix(deps): update dependency io.smallrye:jandex to v3.5.0 (apache#2722) * fix(deps): update dependency org.jboss.weld:weld-junit5 to v5.0.2.final (apache#2721) * chore(deps): update quay.io/keycloak/keycloak docker tag to v26.4.0 (apache#2719) * Last merged commit 4024557 * NoSQL: Minor-ish changes to "nodes" projects Adopt nodes projects to OSS PR content * NoSQL: adapt to async package rename * Build: remove unnecessary explicit vertx-core dependency The async-vertx implementation should not propagate a different Vert.X dependency than Quarkus provides. This wouldn't be an issue if we could just use `enforcedPlatform()` for all Quarkus-builds, but sadly we cannot for the spark-plugin-inttests. --------- Co-authored-by: Honah (Jonas) J. <honahx@apache.org> Co-authored-by: Pooja Nilangekar <poojan@umd.edu> Co-authored-by: Prashant Singh <35593236+singhpk234@users.noreply.github.com> Co-authored-by: JB Onofré <jbonofre@apache.org> Co-authored-by: Mend Renovate <bot@renovateapp.com> Co-authored-by: Alexandre Dutra <adutra@apache.org> Co-authored-by: fabio-rizzo-01 <fabio.rizzocascio@jpmorgan.com> Co-authored-by: Dennis Huo <7410123+dennishuo@users.noreply.github.com> Co-authored-by: Yong Zheng <yongzheng0809@gmail.com> Co-authored-by: Dmitri Bourlatchkov <dmitri.bourlatchkov@gmail.com> Co-authored-by: olsoloviov <40199597+olsoloviov@users.noreply.github.com> Co-authored-by: Eric Maynard <eric.maynard+oss@snowflake.com> Co-authored-by: Adnan Hemani <adnan.h@berkeley.edu>
1 parent 2956b52 commit 23207f8

File tree

137 files changed

+3842
-1228
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

137 files changed

+3842
-1228
lines changed

.github/actions/ci-incr-build-cache-prepare/action.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ runs:
6666
fi
6767
6868
- name: Gradle / Setup
69-
uses: gradle/actions/setup-gradle@ed408507eac070d1f99cc633dbcf757c94c7933a # v4
69+
uses: gradle/actions/setup-gradle@748248ddd2a24f49513d8f472f81c3a07d4d50e1 # v4
7070
with:
7171
cache-read-only: ${{ inputs.cache-read-only }}
7272
validate-wrappers: false

.github/workflows/gradle.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,11 @@ on:
3232
pull_request:
3333
branches: [ "main" ]
3434

35+
env:
36+
GRADLE_TOS_ACCEPTED: ${{ vars.GRADLE_TOS_ACCEPTED }}
37+
DEVELOCITY_SERVER: ${{ vars.DEVELOCITY_SERVER }}
38+
DEVELOCITY_PROJECT_ID: ${{ vars.DEVELOCITY_PROJECT_ID }}
39+
3540
jobs:
3641

3742
unit-tests:

.github/workflows/helm.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ on:
3030
pull_request:
3131
branches: [ "main" ]
3232

33+
env:
34+
GRADLE_TOS_ACCEPTED: ${{ vars.GRADLE_TOS_ACCEPTED }}
35+
DEVELOCITY_SERVER: ${{ vars.DEVELOCITY_SERVER }}
36+
DEVELOCITY_PROJECT_ID: ${{ vars.DEVELOCITY_PROJECT_ID }}
37+
3338
jobs:
3439

3540
helm-tests:

.github/workflows/nightly.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,11 @@ permissions:
4040
security-events: read
4141
statuses: read
4242

43+
env:
44+
GRADLE_TOS_ACCEPTED: ${{ vars.GRADLE_TOS_ACCEPTED }}
45+
DEVELOCITY_SERVER: ${{ vars.DEVELOCITY_SERVER }}
46+
DEVELOCITY_PROJECT_ID: ${{ vars.DEVELOCITY_PROJECT_ID }}
47+
4348
jobs:
4449
nightly_build:
4550
runs-on: ubuntu-latest

.github/workflows/python-client.yml

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,11 @@ on:
3232
pull_request:
3333
branches: [ "main" ]
3434

35+
env:
36+
GRADLE_TOS_ACCEPTED: ${{ vars.GRADLE_TOS_ACCEPTED }}
37+
DEVELOCITY_SERVER: ${{ vars.DEVELOCITY_SERVER }}
38+
DEVELOCITY_PROJECT_ID: ${{ vars.DEVELOCITY_PROJECT_ID }}
39+
3540
jobs:
3641
build:
3742

@@ -67,15 +72,6 @@ jobs:
6772
run: |
6873
make client-unit-test
6974
70-
- name: Image build
71-
env:
72-
DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
73-
run: |
74-
./gradlew \
75-
:polaris-server:assemble \
76-
:polaris-server:quarkusAppPartsBuild --rerun \
77-
-Dquarkus.container-image.build=true
78-
7975
- name: Integration Tests
8076
run: |
8177
make client-integration-test

.github/workflows/regtest.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ on:
2424
pull_request:
2525
branches: [ "main" ]
2626

27+
env:
28+
GRADLE_TOS_ACCEPTED: ${{ vars.GRADLE_TOS_ACCEPTED }}
29+
DEVELOCITY_SERVER: ${{ vars.DEVELOCITY_SERVER }}
30+
DEVELOCITY_PROJECT_ID: ${{ vars.DEVELOCITY_PROJECT_ID }}
31+
2732
jobs:
2833
regtest:
2934

.github/workflows/spark_client_regtests.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ on:
2424
pull_request:
2525
branches: [ "main" ]
2626

27+
env:
28+
GRADLE_TOS_ACCEPTED: ${{ vars.GRADLE_TOS_ACCEPTED }}
29+
DEVELOCITY_SERVER: ${{ vars.DEVELOCITY_SERVER }}
30+
DEVELOCITY_PROJECT_ID: ${{ vars.DEVELOCITY_PROJECT_ID }}
31+
2732
jobs:
2833
spark-plugin-regtest:
2934

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ request adding CHANGELOG notes for breaking (!) changes and possibly other secti
3131

3232
### Upgrade Notes
3333

34+
- Amazon RDS plugin enabled, this allows polaris to connect to AWS Aurora PostgreSQL using IAM authentication.
3435
- The EclipseLink Persistence implementation has been deprecated since 1.0.0 and will be completely removed
3536
in 1.3.0 or in 2.0.0 (whichever happens earlier).
3637

@@ -39,6 +40,11 @@ request adding CHANGELOG notes for breaking (!) changes and possibly other secti
3940
### New Features
4041

4142
- Added a Management API endpoint to reset principal credentials, controlled by the `ENABLE_CREDENTIAL_RESET` (default: true) feature flag.
43+
- The `ENABLE_SUB_CATALOG_RBAC_FOR_FEDERATED_CATALOGS` was added to support sub-catalog (initially namespace and table) RBAC for federated catalogs.
44+
The setting can be configured on a per-catalog basis by setting the catalog property: `polaris.config.enable-sub-catalog-rbac-for-federated-catalogs`.
45+
The realm-level feature flag `ALLOW_SETTING_SUB_CATALOG_RBAC_FOR_FEDERATED_CATALOGS` (default: true) controls whether this functionality can be enabled or modified at the catalog level.
46+
47+
- Added support for S3-compatible storage that does not have STS (use `stsUavailable: true` in catalog storage configuration)
4248

4349
### Changes
4450

@@ -107,7 +113,10 @@ Apache Polaris 1.1.0-incubating was released on September 19th, 2025.
107113
ON CONFLICT (version_key) DO UPDATE
108114
SET version_value = EXCLUDED.version_value;
109115
COMMENT ON TABLE version IS 'the version of the JDBC schema in use';
116+
117+
ALTER TABLE polaris_schema.entities ADD COLUMN IF NOT EXISTS location_without_scheme TEXT;
110118
```
119+
- Please don't enable [OPTIMIZED_SIBLING_CHECK](https://github.com/apache/polaris/blob/740993963cb41c2c1b4638be5e04dd00f1263c98/polaris-core/src/main/java/org/apache/polaris/core/config/FeatureConfiguration.java#L346) feature configuration, once the above SQL statements are run. As it may lead to incorrect behavior, due to missing data for location_without_scheme column.
111120
- **Deprecations**
112121
- The property `polaris.active-roles-provider.type` is deprecated for removal.
113122
- The `ActiveRolesProvider` interface is deprecated for removal.

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ client-unit-test: client-setup-env ## Run client unit tests
144144
@echo "--- Client unit tests complete ---"
145145

146146
.PHONY: client-integration-test
147-
client-integration-test: client-setup-env ## Run client integration tests
147+
client-integration-test: build-server client-setup-env ## Run client integration tests
148148
@echo "--- Starting client integration tests ---"
149149
@echo "Ensuring Docker Compose services are stopped and removed..."
150150
@$(DOCKER) compose -f $(PYTHON_CLIENT_DIR)/docker-compose.yml kill || true # `|| true` prevents make from failing if containers don't exist

README.md

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -175,16 +175,33 @@ Default configuration values can be found in `runtime/defaults/src/main/resource
175175

176176
#### Publishing Build Scans to develocity.apache.org
177177

178-
All authenticated builds of Apache Polaris will automatically publish build scans to the ASF Develocity instance at
179-
[develocity.apache.org](https://develocity.apache.org/scans?search.rootProjectNames=polaris).
180-
181-
CI builds originating from the `apache/polaris` repository will have access to the Apache organization-level secret
182-
`DEVELOCITY_ACCESS_KEY` and publish build scans using the secret. CI builds originating from pull requests from forks
183-
will not have access to the secret and will silently skip build scan publication.
184-
185-
Apache committers can publish build scans from their local machine by
186-
[provisioning an access key](https://docs.gradle.com/develocity/gradle-plugin/current/#automated_access_key_provisioning)
187-
using ASF LDAP credentials. Builds by anonymous, unauthenticated contributors will silently skip build scan publication.
178+
Build scans of CI builds from a branch or tag in the `apache/polaris` repository on GitHub publish build scans
179+
to the ASF Develocity instance at
180+
[develocity.apache.org](https://develocity.apache.org/scans?search.rootProjectNames=polaris), if the workflow runs have access to the Apache organization-level secret
181+
`DEVELOCITY_ACCESS_KEY`.
182+
183+
Build scans of local developer builds publish build scans only if the Gradle command line option `--scan` is used.
184+
Those build scans are published to Gradle's public Develocity instance (see advanced configuration options below).
185+
Note that build scans on Gradle's public Develocity instance are publicly accessible to anyone.
186+
You have to accept Gradle's terms of service to publish to the Gradle's public Develocity instance.
187+
188+
CI builds originating from pull requests against the `apache/polaris` GitHub repository are published to Gradle's
189+
_public_ Develocity instance.
190+
191+
Other CI build scans do only publish build scans to the Gradle's _public_ Develocity instance, if the environment
192+
variable `GRADLE_TOS_ACCEPTED` is set to `true`.
193+
By setting this variable you agree to the [Gradle's terms of service](https://gradle.com/terms-of-service), because
194+
accepting these ToS is your personal decision.
195+
You can configure this environment variable for your GitHub repository in the GitHub repository settings under
196+
`Secrets` > `Secrets and variables` > `Actions` > choose the `Variables` tab > `New repository variable`.
197+
198+
Advanced configuration options for publishing build scans (only local and non-`apache/polaris` repository CI):
199+
* The project ID published with the build scan can be specified using the environment variable `DEVELOCITY_PROJECT_ID`.
200+
The project ID defaults to the GitHub repository owner/name, for example `octocat/polaris`.
201+
* The Develocity server can be specified using the environment variable `DEVELOCITY_SERVER` if build scans should be
202+
published to another than Gradle's public Develocity instance.
203+
* If you have to publish build scans to your own Develocity instance, you can configure the access key using a
204+
GitHub secret named `DEVELOCITY_ACCESS_KEY`.
188205

189206
## License
190207

0 commit comments

Comments
 (0)