Skip to content

Commit 9eb009d

Browse files
snazyXN137MonkeyCanCodejbonofreadutra
authored
Dremio merge 2025 11 04 17 29 (apache#154)
* Pass AccessConfig into FileIOFactory (apache#2937) it should not be the responsibility of the `FileIOFactory` to know how to infer the `AccessConfig` * Remove EclipseLink Persistence Backend (apache#2963) as per ML decision the deprecated eclipselink backend is being removed in the next version: https://lists.apache.org/thread/16bj5kngf2kfhqv3noxwfm7h9wlzvhyv * feat: Improve PolarisAdminTool default output (apache#2961) * feat: Improve PolarisAdminTool default output * feat: Improve PolarisAdminTool default output * Add Polaris Community Meeting 2025-10-30 (apache#2973) * Remove legacy management endpoints (apache#2276) * Build/nit: cache output of `generatedMarkdownDocs` (apache#2967) `(Java)Exec` tasks are not cacheable by default, as annotated with `@DisableCachingByDefault`. Adding an `outputs.cacheIf { true }` enables caching on those tasks. * Build: Helper to get effective ASF project metadata (apache#2969) This change "bundles" the information of `AsfProject` and the `PublishingHelperExtensions`, which is what the code in `configurePom.kt` did. Bundling these objects allows other consumers, like CycloneDX SBOM generation, to access that same information without having to query remote systems (whimsey.apache.org) again. * Alternative, concise PR template (apache#2945) This PR proposes an alternative PR template that is much shorter, and removes all the redundant claims. It also links to the contribution guidelines for further guidance. * Add docs how to add `Server` header to HTTP responses (apache#2941) * Prefer PolarisPrincipal over SecurityContext (apache#2932) The general idea is that `SecurityContext` comes from `jakarta.ws.rs` and there is no reason for non-REST related classes to rely on those details. Instead, once preprocessing of a REST-request has inferred the `PolarisPrincipal` all inner/core code should rely on only that. Note that this simplifies a bunch of tests that had to create their own `SecurityContext` around the principal that they wanted to use, thus having to decide how to implement `isUserInRole` and the other methods. * Last merged commit f934443 --------- Co-authored-by: Christopher Lambert <xn137@gmx.de> Co-authored-by: Yong Zheng <yongzheng0809@gmail.com> Co-authored-by: JB Onofré <jbonofre@apache.org> Co-authored-by: Alexandre Dutra <adutra@apache.org> Co-authored-by: fivetran-arunsuri <103934371+fivetran-arunsuri@users.noreply.github.com>
1 parent fd6ed10 commit 9eb009d

File tree

111 files changed

+383
-4731
lines changed

Some content is hidden

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

111 files changed

+383
-4731
lines changed

.github/pull_request_template.md

Lines changed: 9 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,12 @@
11
<!--
2-
Possible security vulnerabilities: STOP here and contact security@apache.org instead!
3-
4-
Please update the title of the PR with a meaningful message - do not leave it "empty" or "generated"
5-
Please update this summary field:
6-
7-
The summary should cover these topics, if applicable:
8-
* the motivation for the change
9-
* a description of the status quo, for example the current behavior
10-
* the desired behavior
11-
* etc
12-
13-
PR checklist:
14-
- Do a self-review of your code before opening a pull request
15-
- Make sure that there's good test coverage for the changes included in this PR
16-
- Run tests locally before pushing a PR (./gradlew check)
17-
- Code should have comments where applicable. Particularly hard-to-understand
18-
areas deserve good in-line documentation.
19-
- Include changes and enhancements to the documentation (in site/content/in-dev/unreleased)
20-
- For Work In Progress Pull Requests, please use the Draft PR feature.
21-
22-
Make sure to add the information BELOW this comment.
23-
Everything in this comment will NOT be added to the PR description.
24-
-->
25-
26-
### What changes were proposed in this pull request?
27-
<!--
28-
Please clarify what changes you are proposing. The purpose of this section is to outline the changes and how this PR fixes the issue.
29-
If possible, please consider writing useful notes for better and faster reviews in your PR. See the examples below.
30-
1. If you refactor some codes with changing classes, showing the class hierarchy will help reviewers.
31-
2. If you fix some IRC features, you can provide some references of other IRC implementations / IRC spec.
32-
3. If there is design documentation, please add the link.
33-
4. If there is a discussion in the mailing list, please add the link.
34-
-->
35-
36-
37-
### Why are the changes needed?
38-
<!--
39-
Please clarify why the changes are needed. For instance,
40-
1. If you propose a new API, clarify the use case for a new API.
41-
2. If you fix a bug, you can clarify why it is a bug.
2+
📝 Describe what changes you're proposing, especially breaking or user-facing changes.
3+
📖 See https://github.com/apache/polaris/blob/main/CONTRIBUTING.md for more.
424
-->
435

44-
45-
### Does this PR introduce _any_ user-facing change?
46-
<!--
47-
Note that it means *any* user-facing change including all aspects such as new features, bug fixes, or other behavior changes. Documentation-only updates are not considered user-facing changes.
48-
49-
If yes, please clarify the previous behavior and the change this PR proposes - provide the console output, description and/or an example to show the behavior difference if possible.
50-
If possible, please also clarify if this is a user-facing change compared to the released Polaris versions or within the unreleased branches such as master.
51-
If no, write 'No'.
52-
-->
53-
54-
55-
### How was this patch tested?
56-
<!--
57-
If tests were added, say they were added here. Please make sure to add some test cases that check the changes thoroughly including negative and positive cases if possible.
58-
If it was tested in a way different from regular unit tests, please clarify how you tested step by step, ideally copy and paste-able, so that other reviewers can test and check, and descendants can verify in the future.
59-
If tests were not added, please describe why they were not added and/or why it was difficult to add.
60-
-->
61-
62-
### CHANGELOG.md
63-
<!--
64-
If the changes need to be included in CHANGELOG.md, please add a line here and in CHANGELOG.md.
65-
-->
6+
## Checklist
7+
- [ ] 🛡️ Don't disclose security issues! (contact security@apache.org)
8+
- [ ] 🔗 Clearly explained why the changes are needed, or linked related issues: Fixes #
9+
- [ ] 🧪 Added/updated tests with good coverage, or manually tested (and explained how)
10+
- [ ] 💡 Added comments for complex logic
11+
- [ ] 🧾 Updated `CHANGELOG.md` (if needed)
12+
- [ ] 📚 Updated documentation in `site/content/in-dev/unreleased` (if needed)

CHANGELOG.md

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

3232
### Upgrade notes
3333

34+
- The legacy management endpoints at `/metrics` and `/healthcheck` have been removed. Please use the
35+
standard management endpoints at `/q/metrics` and `/q/health` instead.
36+
3437
### Breaking changes
3538

39+
- The EclipseLink Persistence implementation has been completely removed.
40+
3641
### New Features
3742

3843
- Support credential vending for federated catalogs. `ALLOW_FEDERATED_CATALOGS_CREDENTIAL_VENDING` (default: true) was added to toggle this feature.

README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@ Apache Polaris is organized into the following modules:
6161
- `polaris-runtime-spark-tests` - Integration tests for the Polaris Spark plugin
6262
- `polaris-runtime-test-common` - Test utilities
6363
- Persistence modules:
64-
- `polaris-eclipselink` - The Eclipselink implementation of the MetaStoreManager interface (deprecated for removal)
6564
- `polaris-relational-jdbc` - The JDBC implementation of BasePersistence to be used via AtomicMetaStoreManager
6665
- Extensions modules:
6766
- `polaris-extensions-federation-hadoop` - The Hadoop federation extension

bom/build.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,6 @@ dependencies {
8585

8686
api(project(":polaris-core"))
8787

88-
api(project(":polaris-eclipselink"))
8988
api(project(":polaris-relational-jdbc"))
9089

9190
api(project(":polaris-extensions-auth-opa"))

build-logic/src/main/kotlin/publishing/PublishingHelperExtension.kt

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,13 @@
1919

2020
package publishing
2121

22+
import asf.AsfProject
2223
import java.io.File
2324
import javax.inject.Inject
2425
import org.gradle.api.Project
2526
import org.gradle.api.model.ObjectFactory
27+
import org.gradle.api.provider.Provider
28+
import org.gradle.internal.extensions.stdlib.capitalized
2629
import org.gradle.kotlin.dsl.property
2730

2831
/**
@@ -83,3 +86,57 @@ constructor(objectFactory: ObjectFactory, project: Project) {
8386
fun distributionFile(ext: String): File =
8487
distributionDir.get().file("${baseName.get()}.$ext").asFile
8588
}
89+
90+
/**
91+
* Provides the effective values for an ASF project using the ASF project metadata from `AsfProject`
92+
* with overrides from `PublishingHelperExtension`.
93+
*/
94+
class EffectiveAsfProject(
95+
val publishingHelperExtension: PublishingHelperExtension,
96+
val asfProject: AsfProject,
97+
) {
98+
fun githubRepoName(): Provider<String> =
99+
publishingHelperExtension.githubRepositoryName.orElse(asfProject.apacheId)
100+
101+
fun tagPrefix(): Provider<String> =
102+
publishingHelperExtension.overrideTagPrefix.orElse("apache-${asfProject.apacheId}")
103+
104+
fun issueTracker(): Provider<String> {
105+
val issuesUrl: Provider<String> =
106+
codeRepoUrl().map { r -> "$r/issues" }.orElse(asfProject.bugDatabase)
107+
return publishingHelperExtension.overrideIssueManagement.orElse(issuesUrl)
108+
}
109+
110+
fun codeRepoUrl(): Provider<String> =
111+
publishingHelperExtension.overrideScm.orElse(
112+
githubRepoName().map { r -> "https://github.com/apache/$r" }.orElse(asfProject.repository)
113+
)
114+
115+
fun fullName() = publishingHelperExtension.overrideName.orElse("Apache ${asfProject.name}")
116+
117+
fun description() = publishingHelperExtension.overrideDescription.orElse(asfProject.description)
118+
119+
fun projectUrl() = publishingHelperExtension.overrideProjectUrl.orElse(asfProject.website)
120+
121+
fun mailingList(id: String) = MailingList(id, asfProject.apacheId)
122+
123+
companion object {
124+
fun forProject(project: Project): EffectiveAsfProject {
125+
val e = project.extensions.getByType(PublishingHelperExtension::class.java)
126+
val asfProject = AsfProject.memoized(project, e.asfProjectId.get())
127+
return EffectiveAsfProject(e, asfProject)
128+
}
129+
}
130+
}
131+
132+
class MailingList(val id: String, private val prj: String) {
133+
fun name(): String = "${id.capitalized()} Mailing List"
134+
135+
fun subscribe(): String = "$id-subscribe@$prj.apache.org"
136+
137+
fun unsubscribe(): String = "$id-unsubscribe@$prj.apache.org"
138+
139+
fun post(): String = "$id@$prj.apache.org"
140+
141+
fun archive(): String = "https://lists.apache.org/list.html?$id@$prj.apache.org"
142+
}

build-logic/src/main/kotlin/publishing/configurePom.kt

Lines changed: 21 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,11 @@
1919

2020
package publishing
2121

22-
import asf.AsfProject
2322
import groovy.util.Node
2423
import org.gradle.api.Project
2524
import org.gradle.api.Task
2625
import org.gradle.api.artifacts.component.ModuleComponentSelector
27-
import org.gradle.api.provider.Provider
2826
import org.gradle.api.publish.maven.MavenPublication
29-
import org.gradle.internal.extensions.stdlib.capitalized
3027

3128
/**
3229
* Configures the content of the generated `pom.xml` files.
@@ -47,8 +44,6 @@ import org.gradle.internal.extensions.stdlib.capitalized
4744
*/
4845
internal fun configurePom(project: Project, mavenPublication: MavenPublication, task: Task) =
4946
mavenPublication.run {
50-
val e = project.extensions.getByType(PublishingHelperExtension::class.java)
51-
5247
pom {
5348
if (project != project.rootProject) {
5449
// Add the license to every pom to make it easier for downstream projects to retrieve the
@@ -75,8 +70,8 @@ internal fun configurePom(project: Project, mavenPublication: MavenPublication,
7570

7671
task.doFirst {
7772
mavenPom.run {
78-
val asfProject = AsfProject.memoized(project, e.asfProjectId.get())
79-
val asfProjectId = asfProject.apacheId
73+
val prj = EffectiveAsfProject.forProject(project)
74+
val asfProjectId = prj.asfProject.apacheId
8075

8176
organization {
8277
name.set("The Apache Software Foundation")
@@ -85,51 +80,41 @@ internal fun configurePom(project: Project, mavenPublication: MavenPublication,
8580
licenses {
8681
license {
8782
name.set("Apache-2.0") // SPDX identifier
88-
url.set(asfProject.licenseUrl)
83+
url.set(prj.asfProject.licenseUrl)
8984
}
9085
}
9186
mailingLists {
92-
e.mailingLists.get().forEach { ml ->
93-
mailingList {
94-
name.set("${ml.capitalized()} Mailing List")
95-
subscribe.set("$ml-subscribe@$asfProjectId.apache.org")
96-
unsubscribe.set("$ml-unsubscribe@$asfProjectId.apache.org")
97-
post.set("$ml@$asfProjectId.apache.org")
98-
archive.set("https://lists.apache.org/list.html?$ml@$asfProjectId.apache.org")
87+
prj.publishingHelperExtension.mailingLists
88+
.get()
89+
.map { id -> prj.mailingList(id) }
90+
.forEach { ml ->
91+
mailingList {
92+
name.set(ml.name())
93+
subscribe.set(ml.subscribe())
94+
unsubscribe.set(ml.unsubscribe())
95+
post.set(ml.post())
96+
archive.set(ml.archive())
97+
}
9998
}
100-
}
10199
}
102100

103-
val githubRepoName: Provider<String> = e.githubRepositoryName.orElse(asfProjectId)
104-
val codeRepo: Provider<String> =
105-
e.overrideScm.orElse(
106-
githubRepoName
107-
.map { r -> "https://github.com/apache/$r" }
108-
.orElse(asfProject.repository)
109-
)
110-
111101
scm {
112-
val codeRepoString: String = codeRepo.get()
102+
val codeRepoString: String = prj.codeRepoUrl().get()
113103
connection.set("scm:git:$codeRepoString")
114104
developerConnection.set("scm:git:$codeRepoString")
115105
url.set("$codeRepoString/tree/main")
116106
val version = project.version.toString()
117107
if (!version.endsWith("-SNAPSHOT")) {
118-
val tagPrefix: String =
119-
e.overrideTagPrefix.orElse("apache-${asfProject.apacheId}").get()
108+
val tagPrefix: String = prj.tagPrefix().get()
120109
tag.set("$tagPrefix-$version")
121110
}
122111
}
123-
issueManagement {
124-
val issuesUrl: Provider<String> =
125-
codeRepo.map { r -> "$r/issues" }.orElse(asfProject.bugDatabase)
126-
url.set(e.overrideIssueManagement.orElse(issuesUrl))
127-
}
112+
issueManagement { url.set(prj.issueTracker()) }
128113

129-
name.set(e.overrideName.orElse("Apache ${asfProject.name}"))
130-
description.set(e.overrideDescription.orElse(asfProject.description))
131-
url.set(e.overrideProjectUrl.orElse(asfProject.website))
132-
inceptionYear.set(asfProject.inceptionYear.toString())
114+
name.set(prj.fullName())
115+
description.set(prj.description())
116+
url.set(prj.projectUrl())
117+
inceptionYear.set(prj.asfProject.inceptionYear.toString())
133118

134119
developers { developer { url.set("https://$asfProjectId.apache.org/community/") } }
135120
}

getting-started/README.md

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,5 @@ this directory. Each example has detailed instructions.
3636
- [Telemetry](telemetry): An example that includes Prometheus and Jaeger to collect metrics and
3737
traces from Apache Polaris. This example automatically creates a `polaris_demo` catalog.
3838

39-
- [Eclipselink](eclipselink): An example that uses an Eclipselink metastore and a Postgres
40-
database. The realm is bootstrapped with the Polaris Admin tool. This example also creates a
41-
`polaris_quickstart` catalog, and offers the ability to run Spark SQL and Trino queries. Finally, it shows how to
42-
attach a debugger to the Polaris server.
43-
4439
- [Keycloak](keycloak): An example that uses Keycloak as an external identity provider (IDP) for
45-
authentication.
40+
authentication.

getting-started/assets/cloud_providers/deploy-azure.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ az role assignment create \
6161
export AZURE_TENANT_ID=$(az account show --query tenantId -o tsv)
6262
export STORAGE_LOCATION="abfss://$STORAGE_CONTAINER_NAME@$STORAGE_ACCOUNT_NAME.dfs.core.windows.net/quickstart_catalog"
6363

64-
cat >> getting-started/eclipselink/trino-config/catalog/iceberg.properties << EOF
64+
cat >> getting-started/assets/trino-config/catalog/iceberg.properties << EOF
6565
fs.native-azure.enabled=true
6666
azure.auth-type=DEFAULT
6767
EOF

getting-started/assets/eclipselink/persistence.xml

Lines changed: 0 additions & 45 deletions
This file was deleted.

0 commit comments

Comments
 (0)