Skip to content

Commit b47fd6e

Browse files
snazydimas-bbinarycat0adam-christian-softwarerenovate-bot
authored
Dremio merge 2025 09 19 18 42 (apache#122)
* Avoid calling deprecated `TableMetadataParser.read(FileIO, InputFile)` method. (apache#2609) Call `read(InputFile)` instead, as instructed by Iceberg javadoc. * Add doc notes about EclipseLink removal (apache#2605) * chore(docs): add polaris-api-specs section (apache#2598) * docs(README): Updating the READMEs to Reflect the Project Structure (apache#2599) * docs(README): Updating the READMEs to Reflect the Project Structure * fix(deps): update dependency io.opentelemetry:opentelemetry-bom to v1.54.1 (apache#2613) * Add Code of Conduct entry to the ASF menu (apache#2537) * Use the ASF Code Of Conduct * Update site/hugo.yaml Co-authored-by: Robert Stupp <snazy@snazy.de> --------- Co-authored-by: Robert Stupp <snazy@snazy.de> * fix(deps): update dependency org.postgresql:postgresql to v42.7.8 (apache#2619) * chore(deps): update dependency mypy to >=1.18, <=1.18.2 (apache#2617) * Update registry.access.redhat.com/ubi9/openjdk-21-runtime Docker tag to v1.23-6.1758133907 (apache#2612) * Introduce alternate in-memory buffering event listener (apache#2574) * fix(deps): update dependency org.assertj:assertj-core to v3.27.5 (apache#2618) * chore(deps): update dependency virtualenv to >=20.34.0,<20.35.0 (apache#2614) * Add Community Meeting 20250918 (apache#2622) * Add 1.1.0-incubating release on the website (apache#2621) * Add 1.1.0-incubating release content (apache#2625) * chore(errorprone): Enabling EqualsGetClass, PatternMatchingInstanceof, and UnusedMethod in ErrorProne (apache#2600) * fix(deps): update dependency com.adobe.testing:s3mock-testcontainers to v4.9.1 (apache#2626) * Unify create/loadTable call paths (apache#2589) In preparation for implementing sending non-credential config to REST Catalog clients for apache#2207 this PR unifies calls paths for create/load table operations. This change does not have any differences in authorization. This change is not expecte to have any material behaviour differences to the affected code paths. The main idea is to consolidate decision-making for that to include into REST responses and use method parameters like `EnumSet<AccessDelegationMode> delegationModes` for driving those decisions. * Remove numeric identifier from PolarisPrincipal (apache#2388) This change removes the requirement for Polaris principals to have a numeric identifier, by removing the only sites where such an identifier was required: - In the `Resolver`. Instead, the `Resolver` now performs a lookup by principal name. - In `PolarisAdminService`. Instead, the code now compares the principal name against the entity name. Note: the lookup in the `Resolver` is still necessary, because the `Resolver` also needs to fetch the grant records. * Include principal name in Polaris tokens (apache#2389) * Include principal name in Polaris tokens Summary of changes: - Instead of including the principal id twice in the token, the principal name is now used as the subject claim. While the default authenticator doesn't need the principal name and works with just the principal id, not having the "real" principal name available could be a problem for other authenticator implementations. - `DecodedToken` has been refactored and renamed to `InternalPolarisCredential`. It is also now a package-private component. - `TokenBroker.verify()` now returns PolarisCredential. * rename to InternalPolarisToken * main: bump to 1.2.0-incubating-SNAPSHOT (apache#2624) * bump version.txt to 1.2.0-incubating-SNAPSHOT * virtualenv: wider version range (apache#2623) see apache#2614 (comment) * Remove ActiveRolesProvider (apache#2390) Summary of changes: - As proposed on the ML, `ActiveRolesProvider` is removed, and `DefaultActiveRolesProvider` is merged into `DefaultAuthenticator`. `ActiveRolesAugmentor` is also merged into `AuthenticatingAugmentor`. - The implicit convention that no roles in credentials == all roles requested is removed as it is ambiguous. Credentials must explicitly include the `PRINCIPAL_ROLE:ALL` pseudo-role to request all roles available. - PersistedPolarisPrincipal is removed. It existed merely as a means of passing the `PrincipalEntity` from the authenticator to the roles provider. This is not necessary anymore. * NoSQL: adaptions * Last merged commit d1d359a --------- Co-authored-by: Dmitri Bourlatchkov <dmitri.bourlatchkov@gmail.com> Co-authored-by: Artur Rakhmatulin <artur.rakhmatulin@gmail.com> Co-authored-by: Adam Christian <105929021+adam-christian-software@users.noreply.github.com> Co-authored-by: Mend Renovate <bot@renovateapp.com> Co-authored-by: JB Onofré <jbonofre@apache.org> Co-authored-by: Alexandre Dutra <adutra@apache.org>
1 parent e139dee commit b47fd6e

File tree

87 files changed

+1405
-1204
lines changed

Some content is hidden

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

87 files changed

+1405
-1204
lines changed

CHANGELOG.md

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

4444
### Upgrade Notes
4545

46+
- The EclipseLink Persistence implementation has been deprecated since 1.0.0 and will be completely removed
47+
in 1.3.0 or in 2.0.0 (whichever happens earlier).
48+
4649
### Breaking Changes
4750

4851
- Helm chart: the default value of the `authentication.tokenBroker.secret.symmetricKey.secretKey` property has changed
@@ -98,8 +101,7 @@ refresh-credentials flag for the desired storage provider.
98101

99102
### Deprecations
100103

101-
- The property `polaris.active-roles-provider.type` is deprecated for removal.
102-
- The `ActiveRolesProvider` interface is deprecated for removal.
104+
* The property `polaris.active-roles-provider.type` is deprecated and has no effect anymore.
103105

104106
### Fixes
105107

CODE_OF_CONDUCT.md

Lines changed: 1 addition & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -17,89 +17,4 @@
1717
under the License.
1818
-->
1919

20-
# Contributor Code of Conduct
21-
22-
This is a copy of the [Contributor Covenant v2.1](https://www.contributor-covenant.org/version/2/1/code_of_conduct.html). No changes have been made.
23-
24-
## Our Pledge
25-
26-
We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation.
27-
28-
We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.
29-
30-
## Our Standards
31-
32-
Examples of behavior that contributes to a positive environment for our community include:
33-
34-
* Demonstrating empathy and kindness toward other people
35-
* Being respectful of differing opinions, viewpoints, and experiences
36-
* Giving and gracefully accepting constructive feedback
37-
* Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
38-
* Focusing on what is best not just for us as individuals, but for the overall community
39-
40-
Examples of unacceptable behavior include:
41-
42-
* The use of sexualized language or imagery, and sexual attention or advances of any kind
43-
* Trolling, insulting or derogatory comments, and personal or political attacks
44-
* Public or private harassment
45-
* Publishing others' private information, such as a physical or email address, without their explicit permission
46-
* Other conduct which could reasonably be considered inappropriate in a professional setting
47-
48-
## Enforcement Responsibilities
49-
50-
Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.
51-
52-
Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate.
53-
54-
## Scope
55-
56-
This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces.
57-
Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event.
58-
59-
## Enforcement
60-
61-
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at <private@polaris.apache.org>.
62-
All complaints will be reviewed and investigated promptly and fairly.
63-
All community leaders are obligated to respect the privacy and security of the reporter of any incident.
64-
65-
## Enforcement Guidelines
66-
67-
Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:
68-
69-
### 1. Correction
70-
71-
**Community Impact**: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community.
72-
73-
**Consequence**: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested.
74-
75-
### 2. Warning
76-
77-
**Community Impact**: A violation through a single incident or series of actions.
78-
79-
**Consequence**: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.
80-
81-
### 3. Temporary Ban
82-
83-
**Community Impact**: A serious violation of community standards, including sustained inappropriate behavior.
84-
85-
**Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.
86-
87-
### 4. Permanent Ban
88-
89-
**Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals.
90-
91-
**Consequence**: A permanent ban from any sort of public interaction within the community.
92-
93-
## Attribution
94-
95-
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.1, available at [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
96-
97-
Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder][Mozilla CoC].
98-
99-
For answers to common questions about this code of conduct, see the FAQ at [https://www.contributor-covenant.org/faq][FAQ]. Translations are available at [https://www.contributor-covenant.org/translations][translations].
100-
101-
[homepage]: https://www.contributor-covenant.org
102-
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
103-
[Mozilla CoC]: https://github.com/mozilla/diversity
104-
[FAQ]: https://www.contributor-covenant.org/faq
105-
[translations]: https://www.contributor-covenant.org/translations
20+
We as a community follow [The ASF Code of Conduct](https://www.apache.org/foundation/policies/conduct).

README.md

Lines changed: 49 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -45,20 +45,55 @@ Click [here](https://polaris.apache.org/in-dev/unreleased/getting-started/instal
4545
## Project Structure
4646

4747
Apache Polaris is organized into the following modules:
48-
49-
- [`polaris-core`](./polaris-core/README.md) - The main Polaris entity definitions and core business logic
50-
- API modules (implementing the Iceberg REST API and Polaris management API):
51-
- `polaris-api-management-model` - The Polaris management model
52-
- `polaris-api-management-service` - The Polaris management service
53-
- `polaris-api-iceberg-service` - The Iceberg REST service
54-
- Runtime modules:
55-
- `polaris-runtime-service` - The runtime components of the Polaris server
56-
- `polaris-runtime-defaults` - The runtime configuration defaults
57-
- `polaris-server` - The Polaris server
58-
- `polaris-admin` - The Polaris admin & maintenance tool
59-
- Persistence modules:
60-
- `polaris-eclipselink` - The Eclipselink implementation of the MetaStoreManager interface
61-
- `polaris-relational-jdbc` - The JDBC implementation of BasePersistence to be used via AtomicMetaStoreManager
48+
- Primary modules:
49+
- [`polaris-core`](./polaris-core/README.md) - The main Polaris entity definitions and core business logic
50+
- [API modules](./api/README.md) - Build scripts for generating Java classes from the OpenAPI specifications:
51+
- `polaris-api-management-model` - Polaris Management API model classes
52+
- `polaris-api-management-service` - Polaris Management API service classes
53+
- `polaris-api-iceberg-service` - The Iceberg REST service classes
54+
- `polaris-api-catalog-service` - The Polaris Catalog API service classes
55+
- Runtime modules:
56+
- [`polaris-admin`](./runtime/admin/README.md) - The Polaris Admin Tool; mainly for bootstrapping persistence
57+
- [`polaris-runtime-defaults`](./runtime/defaults/README.md) - The runtime configuration defaults
58+
- [`polaris-distribution`](./runtime/distribution/README.md) - The Polaris distribution
59+
- [`polaris-server`](./runtime/server/README.md) - The Polaris Quarkus Server
60+
- [`polaris-runtime-service`](./runtime/service/README.md) - The package containing the Polaris service.
61+
- `polaris-runtime-spark-tests` - Integration tests for the Polaris Spark plugin
62+
- `polaris-runtime-test-common` - Test utilities
63+
- Persistence modules:
64+
- `polaris-eclipselink` - The Eclipselink implementation of the MetaStoreManager interface (deprecated for removal)
65+
- `polaris-relational-jdbc` - The JDBC implementation of BasePersistence to be used via AtomicMetaStoreManager
66+
- Extensions modules:
67+
- `polaris-extensions-federation-hadoop` - The Hadoop federation extension
68+
- [`polaris-extensions-federation-hive`](./extensions/federation/hive/README.md) - The Hive federation extension
69+
- Secondary modules:
70+
- `agregated-license-report` - Generates the aggregated license report
71+
- `polaris-bom` - The Bill of Materials (BOM) for Polaris
72+
- `polaris-build-logic` - Establishes consistent build logic
73+
- [`polaris-tests`](./integration-tests/README.md) - Normative integration tests for reuse in downstream projects
74+
- Tool modules:
75+
- Documentation configuration:
76+
- `polaris-config-docs-annotations` - Annotations for documentation generator
77+
- `polaris-config-docs-generator` - Generates Polaris reference docs
78+
- `polaris-config-docs-site` - The configuration documentation site
79+
- Other Tools:
80+
- `polaris-container-spec-helper` - Helper for container specifications
81+
- `polaris-immutables` - Predefined Immutables configuration & annotations for Polaris
82+
- `polaris-minio-testcontainer` - Minio test container
83+
- `polaris-misc-types` - Miscellaneous types for Polaris
84+
- `polaris-version` - Versioning for Polaris
85+
86+
In addition to modules, there are:
87+
- [API specifications](./spec/README.md) - The OpenAPI specifications
88+
- [Python client](./client/python/README.md) - The Python client
89+
- [codestyle](./codestyle/README.md) - The code style guidelines
90+
- [getting-started](./getting-started/README.md) - A collection of getting started examples
91+
- [gradle](./gradle) - The Gradle wrapper and Gradle configuration files including banned dependencies
92+
- [helm](./helm) - The Helm charts for Polaris.
93+
- [Spark Plugin](./plugins/spark/README.md) - The Polaris Spark plugin
94+
- [regtests](./regtests/README.md) - Regression tests
95+
- [server-templates](./server-templates) - OpenAPI Generator templates to generate the server code
96+
- [site](./site/README.md) - The Polaris website
6297

6398
## Building and Running
6499

api/iceberg-service/src/main/java/org/apache/polaris/service/types/NotificationRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public boolean equals(Object o) {
5454
if (this == o) {
5555
return true;
5656
}
57-
if (o == null || getClass() != o.getClass()) {
57+
if (!(o instanceof NotificationRequest)) {
5858
return false;
5959
}
6060
NotificationRequest notificationRequest = (NotificationRequest) o;

api/iceberg-service/src/main/java/org/apache/polaris/service/types/TableUpdateNotification.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ public boolean equals(Object o) {
106106
if (this == o) {
107107
return true;
108108
}
109-
if (o == null || getClass() != o.getClass()) {
109+
if (!(o instanceof TableUpdateNotification)) {
110110
return false;
111111
}
112112
TableUpdateNotification tableUpdateNotification = (TableUpdateNotification) o;

api/polaris-catalog-service/src/main/java/org/apache/polaris/service/types/PolicyIdentifier.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ public boolean equals(Object o) {
104104
if (this == o) {
105105
return true;
106106
}
107-
if (o == null || getClass() != o.getClass()) {
107+
if (!(o instanceof PolicyIdentifier)) {
108108
return false;
109109
}
110110
PolicyIdentifier policyIdentifier = (PolicyIdentifier) o;

client/python/pyproject.toml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
[project]
2121
name = "polaris"
22-
version = "1.1.0"
22+
version = "1.2.0"
2323
description = "Apache Polaris"
2424
authors = [
2525
{name = "Apache Software Foundation", email = "dev@polaris.apache.org"}
@@ -58,14 +58,15 @@ pytest = ">= 7.2.1"
5858
pytest-cov = ">= 2.8.1"
5959
flake8 = ">= 4.0.0"
6060
types-python-dateutil = ">= 2.8.19.14"
61-
mypy = ">=1.18, <=1.18.1"
61+
mypy = ">=1.18, <=1.18.2"
6262
pyiceberg = "==0.10.0"
6363
pre-commit = "==4.3.0"
6464
openapi-generator-cli = "==7.11.0.post0"
6565
pip-licenses = "==5.0.0"
6666
# pin virtualenv version to prevent poetry from upgrading to an incompatible version
6767
# see https://github.com/python-poetry/poetry/issues/10504#issuecomment-3176923981
68-
virtualenv = ">=20.26.6,<20.33.0"
68+
# 20.33.0 is the oldest version supported by poetry 2.2.0
69+
virtualenv = ">=20.33.0,<20.35.0"
6970

7071
[tool.pip-licenses]
7172
from-classifier = true

codestyle/errorprone-rules.properties

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ DistinctVarargsChecker=ERROR
8787
DoubleCheckedLocking=ERROR
8888
# Double-checked locking on non-volatile fields is unsafe
8989

90-
# TODO enable: EqualsGetClass=ERROR
90+
EqualsGetClass=ERROR
9191
# Prefer instanceof to getClass when implementing Object#equals.
9292

9393
EqualsIncompatibleType=ERROR
@@ -184,7 +184,7 @@ OrphanedFormatString=ERROR
184184
Overrides=ERROR
185185
# Varargs doesn't agree for overridden method
186186

187-
# TODO PatternMatchingInstanceof=ERROR
187+
PatternMatchingInstanceof=ERROR
188188
# This code can be simplified to use a pattern-matching instanceof.
189189

190190
StreamToIterable=ERROR
@@ -202,7 +202,7 @@ URLEqualsHashCode=ERROR
202202
UnnecessaryLambda=ERROR
203203
# Returning a lambda from a helper method or saving it in a constant is unnecessary; prefer to implement the functional interface method directly and use a method reference instead.
204204

205-
# TODO enable: UnusedMethod=ERROR
205+
UnusedMethod=ERROR
206206
# Unused.
207207

208208
UnusedNestedClass=ERROR

gradle/libs.versions.toml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ swagger = "1.6.16"
4141
#
4242
agrona = { module = "org.agrona:agrona", version = "2.2.4" }
4343
antlr4-runtime = { module = "org.antlr:antlr4-runtime", version.strictly = "4.9.3" } # spark integration tests
44-
assertj-core = { module = "org.assertj:assertj-core", version = "3.27.4" }
44+
assertj-core = { module = "org.assertj:assertj-core", version = "3.27.5" }
4545
auth0-jwt = { module = "com.auth0:java-jwt", version = "4.5.0" }
4646
awssdk-bom = { module = "software.amazon.awssdk:bom", version = "2.33.9" }
4747
awaitility = { module = "org.awaitility:awaitility", version = "4.3.0" }
@@ -89,17 +89,17 @@ microprofile-fault-tolerance-api = { module = "org.eclipse.microprofile.fault-to
8989
mockito-core = { module = "org.mockito:mockito-core", version = "5.19.0" }
9090
mockito-junit-jupiter = { module = "org.mockito:mockito-junit-jupiter", version = "5.19.0" }
9191
mongodb-driver-sync = { module = "org.mongodb:mongodb-driver-sync", version = "5.6.0" }
92-
opentelemetry-bom = { module = "io.opentelemetry:opentelemetry-bom", version = "1.54.0" }
92+
opentelemetry-bom = { module = "io.opentelemetry:opentelemetry-bom", version = "1.54.1" }
9393
opentelemetry-instrumentation-bom-alpha = { module = "io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha", version= "2.19.0-alpha" }
9494
opentelemetry-semconv = { module = "io.opentelemetry.semconv:opentelemetry-semconv", version = "1.37.0" }
9595
picocli = { module = "info.picocli:picocli-codegen", version.ref = "picocli" }
9696
picocli-codegen = { module = "info.picocli:picocli-codegen", version.ref = "picocli" }
97-
postgresql = { module = "org.postgresql:postgresql", version = "42.7.7" }
97+
postgresql = { module = "org.postgresql:postgresql", version = "42.7.8" }
9898
prometheus-metrics-exporter-servlet-jakarta = { module = "io.prometheus:prometheus-metrics-exporter-servlet-jakarta", version = "1.4.1" }
9999
quarkus-bom = { module = "io.quarkus.platform:quarkus-bom", version.ref = "quarkus" }
100100
scala212-lang-library = { module = "org.scala-lang:scala-library", version.ref = "scala212" }
101101
scala212-lang-reflect = { module = "org.scala-lang:scala-reflect", version.ref = "scala212" }
102-
s3mock-testcontainers = { module = "com.adobe.testing:s3mock-testcontainers", version = "4.8.0" }
102+
s3mock-testcontainers = { module = "com.adobe.testing:s3mock-testcontainers", version = "4.9.1" }
103103
slf4j-api = { module = "org.slf4j:slf4j-api", version.ref = "slf4j" }
104104
smallrye-common-annotation = { module = "io.smallrye.common:smallrye-common-annotation", version = "2.13.9" }
105105
smallrye-config-core = { module = "io.smallrye.config:smallrye-config-core", version = "3.13.4" }

helm/polaris/Chart.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ apiVersion: v2
2121
name: polaris
2222
description: A Helm chart for Apache Polaris (incubating)
2323
type: application
24-
version: 1.1.0-incubating-SNAPSHOT
25-
appVersion: 1.1.0-incubating-SNAPSHOT
24+
version: 1.2.0-incubating-SNAPSHOT
25+
appVersion: 1.2.0-incubating-SNAPSHOT
2626
home: https://polaris.apache.org/
2727
icon: https://raw.githubusercontent.com/apache/polaris/main/site/static/img/logos/polaris-brandmark.png
2828
sources:

0 commit comments

Comments
 (0)