Skip to content

Conversation

@snazy
Copy link
Member

@snazy snazy commented Oct 15, 2025

Zip and tar files contain the unix file/directory permissions for the included zip/tar entries. The "default" values for those can differ depending on the platform those are built on. This change ensures 755 for directories and owner/group/other=read+write for files. The "executable" bit isn't forcefully set in case the archived file is an executable.

Zip and tar files contain the unix file/directory permissions for the included zip/tar entries. The "default" values for those can differ depending on the platform those are built on. This change ensures `755` for directories and owner/group/other=read+write for files. The "executable" bit isn't forcefully set in case the archived file _is_ an executable.
@snazy
Copy link
Member Author

snazy commented Oct 15, 2025

Noticed that the binary jar files of 1.2.0-incubating-rc1 in the staging repo are different (md5sum for example) from those built locally from the same Git commit.

The reason was the "group write" POSIX permission bit as reported by zipinfo for example for the polaris-version jar artifact:

Zip file size: 21060 bytes, number of entries: 26
drwxr-xr-x  2.0 unx        0 b- defN 80-Feb-01 00:00 META-INF/
-rw-r--r--  2.0 unx      495 b- defN 80-Feb-01 00:00 META-INF/MANIFEST.MF
drwxrwxr-x  2.0 unx        0 b- defN 80-Feb-01 00:00 org/
drwxrwxr-x  2.0 unx        0 b- defN 80-Feb-01 00:00 org/apache/
drwxrwxr-x  2.0 unx        0 b- defN 80-Feb-01 00:00 org/apache/polaris/
drwxrwxr-x  2.0 unx        0 b- defN 80-Feb-01 00:00 org/apache/polaris/version/
-rw-rw-r--  2.0 unx     5085 b- defN 80-Feb-01 00:00 org/apache/polaris/version/PolarisVersion$PolarisVersionJarInfo.class
-rw-rw-r--  2.0 unx     1735 b- defN 80-Feb-01 00:00 org/apache/polaris/version/PolarisVersion$PolarisVersionNumber.class
-rw-rw-r--  2.0 unx      993 b- defN 80-Feb-01 00:00 org/apache/polaris/version/PolarisVersion$PolarisVersionResource.class
-rw-rw-r--  2.0 unx     4256 b- defN 80-Feb-01 00:00 org/apache/polaris/version/PolarisVersion.class
-rw-rw-r--  2.0 unx      693 b- defN 80-Feb-01 00:00 org/apache/polaris/version/PolarisVersionProvider.class
-rw-rw-r--  2.0 unx    11358 b- defN 80-Feb-01 00:00 META-INF/LICENSE
-rw-rw-r--  2.0 unx      305 b- defN 80-Feb-01 00:00 META-INF/NOTICE
drwxr-xr-x  2.0 unx        0 b- defN 80-Feb-01 00:00 META-INF/maven/
drwxr-xr-x  2.0 unx        0 b- defN 80-Feb-01 00:00 META-INF/maven/org.apache.polaris/
drwxr-xr-x  2.0 unx        0 b- defN 80-Feb-01 00:00 META-INF/maven/org.apache.polaris/polaris-version/
-rw-rw-r--  2.0 unx      119 b- defN 80-Feb-01 00:00 META-INF/maven/org.apache.polaris/polaris-version/pom.properties
-rw-rw-r--  2.0 unx     2462 b- defN 80-Feb-01 00:00 META-INF/maven/org.apache.polaris/polaris-version/pom.xml
drwxr-xr-x  2.0 unx        0 b- defN 80-Feb-01 00:00 META-INF/resources/
drwxr-xr-x  2.0 unx        0 b- defN 80-Feb-01 00:00 META-INF/resources/apache-polaris/
-rw-rw-r--  2.0 unx    18848 b- defN 80-Feb-01 00:00 META-INF/resources/apache-polaris/LICENSE.txt
-rw-rw-r--  2.0 unx      544 b- defN 80-Feb-01 00:00 META-INF/resources/apache-polaris/NOTICE.txt
-rw-rw-r--  2.0 unx       17 b- defN 80-Feb-01 00:00 META-INF/resources/apache-polaris/version.txt
-rw-rw-r--  2.0 unx      823 b- defN 80-Feb-01 00:00 org/apache/polaris/version/polaris-version.properties
drwxrwxr-x  2.0 unx        0 b- defN 80-Feb-01 00:00 gradle/
drwxrwxr-x  2.0 unx        0 b- defN 80-Feb-01 00:00 gradle/jar-licenses/
26 files, 47733 bytes uncompressed, 17228 bytes compressed:  63.9%

vs

Zip file size: 21060 bytes, number of entries: 26
drwxr-xr-x  2.0 unx        0 b- defN 80-Feb-01 00:00 META-INF/
-rw-r--r--  2.0 unx      495 b- defN 80-Feb-01 00:00 META-INF/MANIFEST.MF
drwxr-xr-x  2.0 unx        0 b- defN 80-Feb-01 00:00 org/
drwxr-xr-x  2.0 unx        0 b- defN 80-Feb-01 00:00 org/apache/
drwxr-xr-x  2.0 unx        0 b- defN 80-Feb-01 00:00 org/apache/polaris/
drwxr-xr-x  2.0 unx        0 b- defN 80-Feb-01 00:00 org/apache/polaris/version/
-rw-r--r--  2.0 unx     5085 b- defN 80-Feb-01 00:00 org/apache/polaris/version/PolarisVersion$PolarisVersionJarInfo.class
-rw-r--r--  2.0 unx     1735 b- defN 80-Feb-01 00:00 org/apache/polaris/version/PolarisVersion$PolarisVersionNumber.class
-rw-r--r--  2.0 unx      993 b- defN 80-Feb-01 00:00 org/apache/polaris/version/PolarisVersion$PolarisVersionResource.class
-rw-r--r--  2.0 unx     4256 b- defN 80-Feb-01 00:00 org/apache/polaris/version/PolarisVersion.class
-rw-r--r--  2.0 unx      693 b- defN 80-Feb-01 00:00 org/apache/polaris/version/PolarisVersionProvider.class
-rw-r--r--  2.0 unx    11358 b- defN 80-Feb-01 00:00 META-INF/LICENSE
-rw-r--r--  2.0 unx      305 b- defN 80-Feb-01 00:00 META-INF/NOTICE
drwxr-xr-x  2.0 unx        0 b- defN 80-Feb-01 00:00 META-INF/maven/
drwxr-xr-x  2.0 unx        0 b- defN 80-Feb-01 00:00 META-INF/maven/org.apache.polaris/
drwxr-xr-x  2.0 unx        0 b- defN 80-Feb-01 00:00 META-INF/maven/org.apache.polaris/polaris-version/
-rw-r--r--  2.0 unx      119 b- defN 80-Feb-01 00:00 META-INF/maven/org.apache.polaris/polaris-version/pom.properties
-rw-r--r--  2.0 unx     2462 b- defN 80-Feb-01 00:00 META-INF/maven/org.apache.polaris/polaris-version/pom.xml
drwxr-xr-x  2.0 unx        0 b- defN 80-Feb-01 00:00 META-INF/resources/
drwxr-xr-x  2.0 unx        0 b- defN 80-Feb-01 00:00 META-INF/resources/apache-polaris/
-rw-r--r--  2.0 unx    18848 b- defN 80-Feb-01 00:00 META-INF/resources/apache-polaris/LICENSE.txt
-rw-r--r--  2.0 unx      544 b- defN 80-Feb-01 00:00 META-INF/resources/apache-polaris/NOTICE.txt
-rw-r--r--  2.0 unx       17 b- defN 80-Feb-01 00:00 META-INF/resources/apache-polaris/version.txt
-rw-r--r--  2.0 unx      823 b- defN 80-Feb-01 00:00 org/apache/polaris/version/polaris-version.properties
drwxr-xr-x  2.0 unx        0 b- defN 80-Feb-01 00:00 gradle/
drwxr-xr-x  2.0 unx        0 b- defN 80-Feb-01 00:00 gradle/jar-licenses/
26 files, 47733 bytes uncompressed, 17228 bytes compressed:  63.9%

The actual content (via zipcmp) however is exactly the same.

@github-project-automation github-project-automation bot moved this from PRs In Progress to Ready to merge in Basic Kanban Board Oct 15, 2025
@snazy snazy merged commit 75e2698 into apache:main Oct 16, 2025
15 checks passed
@github-project-automation github-project-automation bot moved this from Ready to merge to Done in Basic Kanban Board Oct 16, 2025
@snazy snazy deleted the repro-arch-unix-perm branch October 16, 2025 15:43
snazy added a commit to snazy/polaris that referenced this pull request Nov 20, 2025
* Update actions/stale digest to 65d1d48 (apache#2813)

* Update dependency org.testcontainers:testcontainers-bom to v2 (apache#2814)

* Site: Update community page / team (apache#2817)

Update entries for Alex + Mike (committer --> PPMC member).

* Site: fix typo of catalog federation configuration in command-line-interface.md (apache#2825)

* Update docker.io/prom/prometheus Docker tag to v3.7.0 (apache#2820)

* Update quay.io/keycloak/keycloak Docker tag to v26.4.1 (apache#2827)

* Reproducible builds: ensure unix permissions are reproducible (apache#2819)

Zip and tar files contain the unix file/directory permissions for the included zip/tar entries. The "default" values for those can differ depending on the platform those are built on. This change ensures `755` for directories and owner/group/other=read+write for files. The "executable" bit isn't forcefully set in case the archived file _is_ an executable.

* Reproducible builds: use a fixed mtime for all entries in the source tarball (apache#2823)

This change makes generated source-tarballs binary-comparable, so that locally built one (via `./gradlew sourceTarball`) should be exactly the same as a staged one.

* NoSQL: adoptions

* Last merged commit 0fdaa5a

---------

Co-authored-by: Mend Renovate <[email protected]>
Co-authored-by: Nuoya Jiang <[email protected]>
snazy added a commit to snazy/polaris that referenced this pull request Nov 24, 2025
The PR apache#2819 accidentally _removed_ the executable POSIX file permission, assuming that not explicity setting the attributes via `filePermissions` retains the file-system 'x' permission.

This change updates the logic to explicitly check the owner-executable bit and uses `755` or `644` respectively for each individual file in the archive.
snazy added a commit to snazy/polaris that referenced this pull request Nov 24, 2025
The PR apache#2819 accidentally _removed_ the executable POSIX file permission, assuming that not explicity setting the attributes via `filePermissions` retains the file-system 'x' permission.

This change updates the logic to explicitly check the owner-executable bit and uses `755` or `644` respectively for each individual file in the archive.
snazy added a commit that referenced this pull request Nov 24, 2025
The PR #2819 accidentally _removed_ the executable POSIX file permission, assuming that not explicity setting the attributes via `filePermissions` retains the file-system 'x' permission.

This change updates the logic to explicitly check the owner-executable bit and uses `755` or `644` respectively for each individual file in the archive.
pingtimeout pushed a commit to pingtimeout/polaris that referenced this pull request Nov 24, 2025
The PR apache#2819 accidentally _removed_ the executable POSIX file permission, assuming that not explicity setting the attributes via `filePermissions` retains the file-system 'x' permission.

This change updates the logic to explicitly check the owner-executable bit and uses `755` or `644` respectively for each individual file in the archive.
pingtimeout added a commit that referenced this pull request Nov 24, 2025
The PR #2819 accidentally _removed_ the executable POSIX file permission, assuming that not explicity setting the attributes via `filePermissions` retains the file-system 'x' permission.

This change updates the logic to explicitly check the owner-executable bit and uses `755` or `644` respectively for each individual file in the archive.

Co-authored-by: Robert Stupp <[email protected]>
snazy added a commit to snazy/polaris that referenced this pull request Feb 11, 2026
* Do not fail a release when markdown-link-check check fails as it is flaky (apache#3116)

* Source tarball reproducible (apache#3143)

`git --mtime` MUST use the time zone for reproducible builds.

* Skip release e-mail templates from svn dist copy (apache#3147)

* Make pom.xml always reproducible (apache#3145)

It turned out in practice, that there's no guarantee that the `<parent>` element in `pom.xml` files always appear at the same place.

This change ensures that the `<parent>` elements always appears at a deterministic location at the top of `pom.xml` files.

* Fix executable POSIX permission in archive files (apache#3146)

The PR apache#2819 accidentally _removed_ the executable POSIX file permission, assuming that not explicity setting the attributes via `filePermissions` retains the file-system 'x' permission.

This change updates the logic to explicitly check the owner-executable bit and uses `755` or `644` respectively for each individual file in the archive.

* Spark: Initial integration for hudi tables within Polaris  (apache#1862)

* Update actions/setup-python digest to 83679a8 (apache#3157)

* Update actions/stale digest to 5611b9d (apache#3155)

* Fix LICENSE and NOTICE in the distributions and docker images. (apache#3125)

* Remove readEntity() call (apache#3111)

Calling readEntity() is not allowed server-side by some HTTP servers.

* Run CI on release branches (apache#3121)

The release workflows check whether CI passes for the required checks.
This would fail, because CI isn't configured to run on release branches.

This change lets CI run on `release/*` branches.

* adding support to use a kms key for s3 buckets data encryption (AWS only) (apache#2802)

Add catalog-level support for KMS with s3 buckets

* Update plugin jetbrains-changelog to v2.5.0 (apache#3166)

* Update quay.io/keycloak/keycloak Docker tag to v26.4.6 (apache#3163)

* NoSQL: Prepare admin-tool (apache#3134)

No functional changes.

1. Refactor the configuration property to a configuration type.
2. Make `BaseCommand` suitable for non-meta-store-factory use cases.

* Iceberg-Catalog: also set catalog-id for location overlap checks (apache#3136)

* Fix catalog-role creating in `PolarisTestMetaStoreManager` (apache#3122)

`testLookup()` attempts to check for a catalog-role on catalog ID 0, which is an illegal ID for a catalog.

Fix is to move the assertion below the catalog creation.

* Releasy: prepare for Helm 4 (helm package repro) (apache#3088)

Part of apache#3086

* Update Quarkus Platform and Group to v3.30.1 (apache#3168)

* Relax ARN validation logic (apache#3071)

Following up on apache#3005, which allowed a wide range of ARN values in the validation RegEx, remove an additional explicit check for `aws-cn` being present in the ARN as a sub-string.

Update existing unit tests to process `aws-cn` ARNs as common `aws` ARNs.

Note: the old validation code does not look correct because it used to check for `aws-cn` anywhere in the ARN string, not just in its "partition" component.

* docs: Add François as Mentor (apache#3162)

* docs: Add François as Mentor

* update mentor list according to ASF project info

* Event type IDs + event metadata incl. OTel context (apache#2998)

This PR implements the action items from the following discussion threads:

- https://lists.apache.org/thread/yx7pkgczl6k7bt4k4yzqrrq9gn7gqk2p
- https://lists.apache.org/thread/rl5cpcft16sn5n00mfkmx9ldn3gsqtfy
- https://lists.apache.org/thread/5dpyo0nn2jbnjtkgv0rm1dz8mpt132j9

Summary of changes:

- Introduced a `PolarisEventType` enum holding the 150+ event types.
- Introduced a `PolarisEventMetadata` interface as suggested by @adnanhemani, exposing: event ID, timestamp, realm ID, principal, request ID, and OTel context.
- Introduced a `PolarisEventMetadataFactory` to centralize the logic for gathering the various elements of an event metadata.
- Modified `PolarisEvent` to expose 3 new methods:
  - `PolarisEventType type()`
  - `PolarisEventMetadata metadata()`
- Persistence of OTel context is done in `additional_properties` as suggested by @flyrain.
- Added `InMemoryBufferEventListenerIntegrationTest` to verify that all contextual data is properly persisted.

* fix typo in management API yaml (apache#3172)

* Fix homepage Get Started button layout (apache#3169)

Wrap the Get Started button in a div container to prevent it from
becoming inline with text at certain screen widths. Follows Docsy
blocks/cover shortcode pattern.

* fix OPA javadoc referencing `OpaSchemaGenerator` (apache#3153)

`OpaSchemaGenerator` is not on the classpath of `opa/impl/main` so the javadoc tool is not able to resolve a `@link` to it.

Use `@code` instead to avoid build warnings like the following:

* Update dependency com.azure:azure-sdk-bom to v1.3.3 (apache#3179)

* Update dependency com.google.errorprone:error_prone_core to v2.45.0 (apache#3177)

* test: Add Some Spark Client Tests and Update Documentation on Generic Tables (apache#3152)

* Site: Make homepage image full-width (apache#3171)

Add CSS class to allow images to span full viewport width by
canceling out container padding. Apply to homepage hero image
using AsciiDoc role attribute.

* chore(enhancement): gitignore application-local.properties (apache#3175)

* Update registry.access.redhat.com/ubi9/openjdk-21-runtime Docker tag to v1.23-6.1764155306 (apache#3186)

* Update quay.io/keycloak/keycloak Docker tag to v26.4.7 (apache#3185)

* Update dependency software.amazon.awssdk:bom to v2.39.6 (apache#3184)

* Testing: increase visibility + make PCC/PMSM accessible (apache#3137)

* `BasePolarisMetaStoreManagerTest`: make `PolarisCallContext` + `PolarisMetaStoreManager` + `PolarisTestMetaStoreManager` accessible by subclasses
* Make constants of `PolarisRestCatalogMinIOIT` accessible

* Update docker.io/prom/prometheus Docker tag to v3.8.0 (apache#3191)

* Update helm/chart-testing-action action to v2.8.0 (apache#2982)

* chore(enhancement): make custom hidden tasks visible in ./gradlew tasks (apache#3176)

* fix type cast warning in PolarisCatalogUtils (apache#3178)

```
plugins/spark/v3.5/spark/src/main/java/org/apache/polaris/spark/utils/PolarisCatalogUtils.java:131: warning: [unchecked] unchecked cast
            scala.collection.immutable.Map$.MODULE$.apply(
                                                         ^
  required: Map<String,String>
  found:    Map
```

* chore(deps): update actions/stale digest to 9971854 (apache#3197)

* fix(deps): update dependency io.smallrye:jandex to v3.5.3 (apache#3193)

* chore(deps): update actions/checkout digest to 8e8c483 (apache#3192)

* added venv to the gitignore (apache#3199)

* CLI: Add Hive federation option (apache#2798)

* chore(deps): update docker.io/jaegertracing/all-in-one docker tag to v1.76.0 (apache#3201)

* chore(deps): update registry.access.redhat.com/ubi9/openjdk-21-runtime docker tag to v1.23-6.1764562148 (apache#3202)

* fix(deps): update quarkus platform and group to v3.30.2 (apache#3198)

* chore(deps): update dependency boto3 to ~=1.42.2 (apache#3126)

* NoSQL: CDI / Quarkus (apache#3135)

* fix(deps): update dependency com.adobe.testing:s3mock-testcontainers to v4.11.0 (apache#3208)

* Update dependency mypy to >=1.19, <=1.19.0 (apache#3180)

* chore(deps): update actions/setup-java digest to f2beeb2 (apache#3206)

* Fix spelling in comments (apache#3212)

* Make each task attempt run in a dedicated CDI request context (apache#3210)

* Make each task attempt run in a dedicated CDI request context

Currently, tasks inherit the CDI context from the requests that
submitted them, but run asynchronously. Therefore, if the original
request context ends, the task may not be able to use the expired
beans for that context.

This change makes each task run in its own dedicated CDI request
context with `RealmContext` explicitly propagated in `TaskExecutorImpl`.

Test-only error handlers are added to `TaskExecutorImpl` to facilitate
detecting task errors during CI.

Fixes apache#3203

* fix(deps): update dependency com.gradleup.shadow:shadow-gradle-plugin to v9.3.0 (apache#3218)

* Last merged commit be3c88b

---------

Co-authored-by: Pierre Laporte <[email protected]>
Co-authored-by: Rahil C <[email protected]>
Co-authored-by: Mend Renovate <[email protected]>
Co-authored-by: JB Onofré <[email protected]>
Co-authored-by: Alexandre Dutra <[email protected]>
Co-authored-by: fabio-rizzo-01 <[email protected]>
Co-authored-by: Dmitri Bourlatchkov <[email protected]>
Co-authored-by: Tamas Mate <[email protected]>
Co-authored-by: Adam Christian <[email protected]>
Co-authored-by: Artur Rakhmatulin <[email protected]>
Co-authored-by: cccs-cat001 <[email protected]>
Co-authored-by: Yufei Gu <[email protected]>
Co-authored-by: Yong Zheng <[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