Skip to content

Commit ec64c46

Browse files
snazydimas-bclayburnmorningmansinghpk234
authored
Dremio merge 2025 09 17 18 51 (apache#119)
* Avoid exceptions on ETag matches (apache#2578) Exceptions have runtime overhead, which is avoidable in this case. * Publish build scans to develocity.apache.org for build insights (apache#2559) * Site: add a blog for apache doris and polaris integration (apache#2571) * Bump: iceberg 1.10 (apache#2586) * Python client: add license check (apache#2580) * Python client: add license check * Python client: add license check * Python client: add license check * test * Enable license check * Fix license check for cryptography (apache#2591) * Update plugin com.gradle.common-custom-user-data-gradle-plugin to v2.4.0 (apache#2582) * Update plugin com.gradle.develocity to v4.2 (apache#2583) * Build: remove unnecessary openapigenerator plugin usages (apache#2592) * docs(changelog): Update the Changelog with 1.0.1, 1.0.0, & 0.9.0 Releases (apache#2587) * Revert "Update plugin com.gradle.develocity to v4.2 (apache#2583)" (apache#2594) This reverts commit 8cc0fad, build scans are not published to the ASF Develocity instance. * Add security report page on the website (apache#2538) This closes apache#2521 * CI: Fix Gradle cache usages (apache#2593) The GH action `ci-incr-build-cache-prepare` calls the `setup-gradle` action with the "right" parameters, so the call of `setup-gradle` in jobs that use `ci-incr-build-cache-prepare` is superfluous. But this also renders the caching ineffective as `setup-gradle` is called w/o `cache-read-only: true` in "child jobs", which then attempt to store their Gradle cache contents. This leads to attempty storing the Gradle cache in `Post Setup Gradle` steps of the "child" jobs, conflicting with other child jobs and also conflicting with `Store Gradle Cache` purpose. "Which cache" is then restored, is rather non-deterministic, but almost always at least "partial" leading to unnecessary (re)builds. * Last merged commit f3d53f0 --------- Co-authored-by: Dmitri Bourlatchkov <dmitri.bourlatchkov@gmail.com> Co-authored-by: Clay Johnson <cjohnson@gradle.com> Co-authored-by: Mingyu Chen (Rayner) <yunyou@selectdb.com> Co-authored-by: Prashant Singh <35593236+singhpk234@users.noreply.github.com> Co-authored-by: Yong Zheng <yongzheng0809@gmail.com> Co-authored-by: Mend Renovate <bot@renovateapp.com> Co-authored-by: Adam Christian <105929021+adam-christian-software@users.noreply.github.com> Co-authored-by: JB Onofré <jbonofre@apache.org>
1 parent 7eaa6c7 commit ec64c46

File tree

22 files changed

+624
-52
lines changed

22 files changed

+624
-52
lines changed

.github/workflows/gradle.yml

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -46,16 +46,13 @@ jobs:
4646
with:
4747
java-version: '21'
4848
distribution: 'temurin'
49-
- name: Setup Gradle
50-
uses: gradle/actions/setup-gradle@ed408507eac070d1f99cc633dbcf757c94c7933a # v4
51-
with:
52-
validate-wrappers: false
5349
- name: Prepare Gradle build cache
5450
uses: ./.github/actions/ci-incr-build-cache-prepare
5551
- name: Run unit tests
5652
env:
5753
# publishToMavenLocal causes a GH API requests, use the token for those requests
5854
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
55+
DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
5956
run: |
6057
./gradlew check sourceTarball distTar distZip publishToMavenLocal \
6158
-x :polaris-runtime-service:test \
@@ -87,13 +84,11 @@ jobs:
8784
with:
8885
java-version: '21'
8986
distribution: 'temurin'
90-
- name: Setup Gradle
91-
uses: gradle/actions/setup-gradle@ed408507eac070d1f99cc633dbcf757c94c7933a # v4
92-
with:
93-
validate-wrappers: false
9487
- name: Prepare Gradle build cache
9588
uses: ./.github/actions/ci-incr-build-cache-prepare
9689
- name: Run Quarkus tests
90+
env:
91+
DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
9792
run: |
9893
./gradlew \
9994
:polaris-runtime-service:test \
@@ -125,14 +120,12 @@ jobs:
125120
with:
126121
java-version: '21'
127122
distribution: 'temurin'
128-
- name: Setup Gradle
129-
uses: gradle/actions/setup-gradle@ed408507eac070d1f99cc633dbcf757c94c7933a # v4
130-
with:
131-
validate-wrappers: false
132123
- name: Prepare Gradle build cache
133124
uses: ./.github/actions/ci-incr-build-cache-prepare
134125
- name: Run integration tests
135126
run: ./gradlew intTest --continue
127+
env:
128+
DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
136129
- name: Save partial Gradle build cache
137130
uses: ./.github/actions/ci-incr-build-cache-save
138131
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
@@ -163,14 +156,13 @@ jobs:
163156
with:
164157
java-version: '21'
165158
distribution: 'temurin'
166-
- name: Setup Gradle
167-
uses: gradle/actions/setup-gradle@ed408507eac070d1f99cc633dbcf757c94c7933a # v4
168-
with:
169-
validate-wrappers: false
170159
- name: Collect partial Gradle build caches
171160
uses: ./.github/actions/ci-incr-build-cache-prepare
172161
with:
173162
cache-read-only: false
174163
- name: Trigger Gradle home cleanup
164+
env:
165+
DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
175166
run: ./gradlew --no-daemon :showVersion
167+
176168
# Note: the "Post Gradle invocation" archives the updated build cache.

.github/workflows/helm.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@ jobs:
8383
minikube docker-env
8484
8585
- name: Image build
86+
env:
87+
DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
8688
run: |
8789
eval $(minikube -p minikube docker-env)
8890
./gradlew \

.github/workflows/nightly.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,14 +52,14 @@ jobs:
5252
with:
5353
java-version: '21'
5454
distribution: 'temurin'
55-
- name: Setup Gradle
56-
uses: gradle/actions/setup-gradle@ed408507eac070d1f99cc633dbcf757c94c7933a # v4
57-
with:
58-
validate-wrappers: false
55+
56+
- name: Prepare Gradle build cache
57+
uses: ./.github/actions/ci-incr-build-cache-prepare
5958
- name: Publish SNAPSHOTs to Apache Nexus Repository
6059
run: ./gradlew publishToApache
6160
env:
6261
# publishToApache causes a GH API requests, use the token for those requests
6362
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
6463
ORG_GRADLE_PROJECT_apacheUsername: ${{ secrets.NEXUS_USER }}
65-
ORG_GRADLE_PROJECT_apachePassword: ${{ secrets.NEXUS_PW }}
64+
ORG_GRADLE_PROJECT_apachePassword: ${{ secrets.NEXUS_PW }}
65+
DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}

.github/workflows/python-client.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,17 @@ jobs:
5959
run: |
6060
make client-lint
6161
62+
- name: License Compliance Check
63+
run: |
64+
make client-license-check
65+
6266
- name: Generated Client Tests
6367
run: |
6468
make client-unit-test
6569
6670
- name: Image build
71+
env:
72+
DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
6773
run: |
6874
./gradlew \
6975
:polaris-server:assemble \

.github/workflows/regtest.yml

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,18 +40,15 @@ jobs:
4040
java-version: '21'
4141
distribution: 'temurin'
4242

43-
- name: Setup Gradle
44-
uses: gradle/actions/setup-gradle@ed408507eac070d1f99cc633dbcf757c94c7933a # v4
45-
with:
46-
validate-wrappers: false
47-
4843
- name: Prepare Gradle build cache
4944
uses: ./.github/actions/ci-incr-build-cache-prepare
5045

5146
- name: Fix permissions
5247
run: mkdir -p regtests/output && chmod 777 regtests/output && chmod 777 regtests/t_*/ref/*
5348

5449
- name: Image build
50+
env:
51+
DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
5552
run: |
5653
./gradlew \
5754
:polaris-server:assemble \

.github/workflows/spark_client_regtests.yml

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,6 @@ jobs:
4040
java-version: '21'
4141
distribution: 'temurin'
4242

43-
- name: Setup Gradle
44-
uses: gradle/actions/setup-gradle@ed408507eac070d1f99cc633dbcf757c94c7933a # v4
45-
with:
46-
validate-wrappers: false
47-
4843
- name: Prepare Gradle build cache
4944
uses: ./.github/actions/ci-incr-build-cache-prepare
5045

@@ -55,9 +50,12 @@ jobs:
5550
env:
5651
# publishToMavenLocal causes a GH API requests, use the token for those requests
5752
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
53+
DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
5854
run: ./gradlew assemble publishToMavenLocal
5955

6056
- name: Image build
57+
env:
58+
DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
6159
run: |
6260
./gradlew \
6361
:polaris-server:assemble \

CHANGELOG.md

Lines changed: 40 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@ request adding CHANGELOG notes for breaking (!) changes and possibly other secti
4141

4242
- **MinIO**: Added MinIO integration support with comprehensive getting started documentation.
4343

44-
### Upgrade notes
44+
### Upgrade Notes
4545

46-
### Breaking changes
46+
### Breaking Changes
4747

4848
- Helm chart: the default value of the `authentication.tokenBroker.secret.symmetricKey.secretKey` property has changed
4949
from `symmetric.pem` to `symmetric.key`.
@@ -105,9 +105,45 @@ refresh-credentials flag for the desired storage provider.
105105

106106
### Commits
107107

108-
## [1.0.0-incubating]
108+
## [1.0.1-incubating]
109+
Apache Polaris 1.0.1-incubating was released on August 16th, 2025. It’s a maintenance release on the 1.0.0 release fixing a couple of issues on the Helm Chart:
110+
- remove db-kind in Helm Chart
111+
- add relational-jdbc to helm
112+
109113

110-
- TODO: backfill 1.0.0 release notes
114+
## [1.0.0-incubating]
115+
Apache Polaris 1.0.0-incubating was released on July 9th, 2025.
116+
117+
- **Highlights**
118+
- First release ready for real-world workloads after the public beta 0.9.0
119+
- **Binary distribution** – first release with single downloadable .tgz or .zip artifact.
120+
- **Helm Chart** – debut of an official Helm chart for seamless Kubernetes deployment
121+
- **New features & enhancements**
122+
- **Policy Store** — persistence with schema evolution, built‑in TMS policies (Data compaction, Snapshot expiry, etc) and REST CRUD endpoints
123+
- **Postgres JDBC persistence** — native JDBC backend with robust support for concurrent changes.
124+
- **Rollback Compaction on Conflicts** - makes Polaris smarter, to revert the compaction commits in case of crunch to let the writers who are actually adding or removing the data to the table succeed. In a sense treating compaction as always a lower priority process.
125+
- **Enhanced runtime** — new runtime powered by Quarkus delivers out‑of‑the‑box Kubernetes readiness, quick startup, OIDC integration, and many other benefits. Polaris server and admin tool are now using Quarkus as a runtime framework.
126+
- **HTTP caching via ETag** — the loadTable endpoint supports ETag, reducing bandwidth and improving perceived latency
127+
- **Support for external identity providers (IdP)** — Polaris can now be its own IdP, delegate to an external IdP, or both
128+
- **Snapshot filtering** – clients can choose to load only referenced snapshots
129+
- **Catalog Federation (experimental)** – federate requests to an external Iceberg REST or Hadoop Catalog
130+
- **Generic Tables (experimental)** — serve multiple table formats besides Iceberg tables; initial Spark 3.5 plugin supports Delta Lake
131+
- **Event Listener framework (experimental)** — subscribe to catalog events (AfterTableCommitedEvent, BeforeViewCommitedEvent, etc)
132+
- **Notable bug fixes**
133+
- **CLI and Python Client improvements** – Support for new features, CLI repair, changes to the update subcommand, and various fixes
134+
- **Safe configurations** – Catalog-level Polaris configurations follow a strict naming convention to avoid name clashes with user-provided configuration entries. Legacy Polaris configuration names are still supported in 1.0 to allow existing deployments to migrate without rush.
135+
- **TableOperations optimizations** – Changes to BasePolarisTableOperations result in less traffic to object storage during commits
136+
- **Bounded entity cache** – The entity cache is now more memory-aware and less likely to lead to OOMs
137+
- **Bootstrapping fixes** – Users can more easily bootstrap a new realm. Root credentials can be provided by the user or generated by Polaris (and returned to the user).
138+
- **Breaking changes**
139+
- **Server Configuration** – The format used to configure the Polaris service in 0.9 has changed with the migration to Quarkus and changes to configurations
140+
- **Bootstrap Flow** – The bootstrap flow used in 0.9 has changed with the migration to Quarkus and the new admin tool
141+
142+
143+
## [0.9.0-incubating]
144+
Apache Polaris 0.9.0 was released on March 11, 2025 as the first Polaris release. Only the source distribution is available for this release.
111145

112146
[Unreleased]: https://github.com/apache/polaris/commits
147+
[1.0.1-incubating]: https://github.com/apache/polaris/releases/tag/apache-polaris-1.0.1-incubating
113148
[1.0.0-incubating]: https://github.com/apache/polaris/releases/tag/apache-polaris-1.0.0-incubating-rc2
149+
[0.9.0-incubating]: https://github.com/apache/polaris/releases/tag/apache-polaris-0.9.0-incubating

Makefile

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,12 @@ client-integration-test: client-setup-env ## Run client integration tests
162162
@echo "Tearing down Docker Compose services..."
163163
@$(DOCKER) compose -f $(PYTHON_CLIENT_DIR)/docker-compose.yml down || true # Ensure teardown even if tests fail
164164

165+
.PHONY: client-license-check
166+
client-license-check: client-setup-env ## Run license compliance check
167+
@echo "--- Starting license compliance check ---"
168+
@$(ACTIVATE_AND_CD) && pip-licenses
169+
@echo "--- License compliance check complete ---"
170+
165171
.PHONY: client-build
166172
client-build: client-setup-env ## Build client distribution
167173
@echo "--- Building client distribution ---"

README.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,19 @@ Default configuration values can be found in `runtime/defaults/src/main/resource
136136
```
137137
- See [README in `site/`](site/README.md) for more information.
138138

139+
#### Publishing Build Scans to develocity.apache.org
140+
141+
All authenticated builds of Apache Polaris will automatically publish build scans to the ASF Develocity instance at
142+
[develocity.apache.org](https://develocity.apache.org/scans?search.rootProjectNames=polaris).
143+
144+
CI builds originating from the `apache/polaris` repository will have access to the Apache organization-level secret
145+
`DEVELOCITY_ACCESS_KEY` and publish build scans using the secret. CI builds originating from pull requests from forks
146+
will not have access to the secret and will silently skip build scan publication.
147+
148+
Apache committers can publish build scans from their local machine by
149+
[provisioning an access key](https://docs.gradle.com/develocity/gradle-plugin/current/#automated_access_key_provisioning)
150+
using ASF LDAP credentials. Builds by anonymous, unauthenticated contributors will silently skip build scan publication.
151+
139152
## License
140153

141154
Apache Polaris is under the Apache License Version 2.0. See the [LICENSE](LICENSE).

client/python/pyproject.toml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,40 @@ mypy = ">=1.18, <=1.18.1"
6262
pyiceberg = "==0.10.0"
6363
pre-commit = "==4.3.0"
6464
openapi-generator-cli = "==7.11.0.post0"
65+
pip-licenses = "==5.0.0"
6566
# pin virtualenv version to prevent poetry from upgrading to an incompatible version
6667
# see https://github.com/python-poetry/poetry/issues/10504#issuecomment-3176923981
6768
virtualenv = ">=20.26.6,<20.33.0"
6869

70+
[tool.pip-licenses]
71+
from-classifier = true
72+
# Packages with "UNKNOWN" licenses in pip-licenses metadata.
73+
# These have been manually verified and are known to be compatible with ASF.
74+
ignore-packages = [
75+
"anyio", # MIT License (MIT)
76+
"build", # MIT License (MIT)
77+
"CacheControl", # Apache-2.0
78+
"cffi", # MIT License (MIT)
79+
"click", # BSD-3-Clause
80+
"cryptography", # Apache-2.0 or BSD-3-Clause
81+
"fsspec", # BSD-3-Clause
82+
"jaraco.functools", # MIT License (MIT)
83+
"jeepney", # MIT License (MIT)
84+
"more-itertools", # MIT License (MIT)
85+
"mypy_extensions", # MIT License (MIT)
86+
"pyparsing", # MIT License (MIT)
87+
"RapidFuzz", # MIT License (MIT)
88+
"SecretStorage", # BSD-3-Clause
89+
"types-python-dateutil", # Apache-2.0
90+
"typing-inspection", # MIT License (MIT)
91+
"typing_extensions", # PSF-2.0
92+
"urllib3", # MIT License (MIT)
93+
"zipp", # MIT License (MIT)
94+
"zstandard", # BSD-3-Clause
95+
]
96+
partial-match = true
97+
allow-only = "MIT;Apache;BSD License;PSF-2.0;ISC;The Unlicense;Python Software Foundation License;Mozilla Public License"
98+
6999
[build-system]
70100
requires = ["poetry-core>=2.0.0,<3.0.0", "openapi-generator-cli==7.11.0.post0"]
71101
build-backend = "poetry.core.masonry.api"

0 commit comments

Comments
 (0)