Hi Aihua, I was indeed suspecting that you had a custom RESTClient :-) Thanks for digging further and clarifying! Let me know if you need my help in adapting your code.
And with that: +1 (non-binding) from me as well. Thanks, Alex On Thu, Feb 27, 2025 at 6:45 PM Aihua Xu <aihu...@gmail.com> wrote: > Hi Alex, > > I checked our code further. We have an internal implementation > for RESTClient which needs an update after your change to place the token > in DefaultAuthSession and not pass through initHeaders anymore. The > existing code assumes the token coming from initHeaders and we need to make > the change to get the token from the headers of DefaultAuthSession. > > With that, +1 (non-binding) > > Thanks, > Aihua > > > > On Thu, Feb 27, 2025 at 9:26 AM Alex Dutra <alex.du...@dremio.com.invalid> > wrote: > >> Hi Aihua Xu, >> >> I reviewed your PR but without further details I do not agree with your >> change, and I am unable to reproduce the issue. Besides, we have unit >> tests that cover this extensively. >> >> Could you please provide a simple reproducer or a test case? >> >> Thanks! >> >> Alex >> >> On Thu, Feb 27, 2025 at 5:06 PM Aihua Xu <aihu...@gmail.com> wrote: >> >>> I'm running within our integration tests. I'm able to trace and find the >>> breaking change: https://github.com/apache/iceberg/pull/11992. >>> >>> Seems we need to make the following changes to pass the token: >>> https://github.com/apache/iceberg/pull/12415/files. Alex, can you help >>> take a look at this? >>> >>> if (hasCredential) { >>> authResponse = >>> OAuth2Util.fetchToken( >>> initClient, initHeaders, credential, scope, oauth2ServerUri, >>> optionalOAuthParams); >>> Map<String, String> authHeaders = >>> RESTUtil.merge(initHeaders, >>> OAuth2Util.authHeaders(authResponse.token())); >>> config = fetchConfig(initClient, authHeaders, props); >>> } else { >>> authResponse = null; >>> Map<String, String> authHeaders = >>> RESTUtil.merge(initHeaders, OAuth2Util.authHeaders(initToken)); >>> config = fetchConfig(initClient, authHeaders, props); >>> } >>> >>> >>> On Thu, Feb 27, 2025 at 12:46 AM Alex Dutra >>> <alex.du...@dremio.com.invalid> wrote: >>> >>>> Hi Aihua, >>>> >>>> I just tested 1.8.1 with Polaris OSS and I am not seeing anything >>>> different. Can you share your setup? >>>> >>>> Below is my Spark setup. >>>> >>>> Thanks, >>>> >>>> Alex >>>> >>>> ./gradlew run >>>> >>>> token=$(curl -s http://localhost:8181/api/catalog/v1/oauth/tokens \ >>>> --user root:<secret> \ >>>> -d grant_type=client_credentials \ >>>> -d scope=PRINCIPAL_ROLE:ALL | sed -n >>>> 's/.*"access_token":"\([^"]*\)".*/\1/p') >>>> >>>> curl -s -H "Authorization: Bearer ${token}" \ >>>> -H 'Accept: application/json' \ >>>> -H 'Content-Type: application/json' \ >>>> http://localhost:8181/api/management/v1/catalogs \ >>>> -d '{ >>>> "catalog": { >>>> "name": "polaris_demo", >>>> "type": "INTERNAL", >>>> "readOnly": false, >>>> "properties": { >>>> "default-base-location": "file:///tmp/polaris/" >>>> }, >>>> "storageConfigInfo": { >>>> "storageType": "FILE", >>>> "allowedLocations": [ >>>> "file:///tmp" >>>> ] >>>> } >>>> } >>>> }' >>>> >>>> >>>> spark-sql \ >>>> --packages org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.8.1 >>>> \ >>>> --conf >>>> spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions >>>> \ >>>> --conf >>>> spark.sql.catalog.polaris=org.apache.iceberg.spark.SparkCatalog \ >>>> --conf >>>> spark.sql.catalog.polaris.catalog-impl=org.apache.iceberg.rest.RESTCatalog >>>> \ >>>> --conf spark.sql.catalog.polaris.uri= >>>> http://127.0.0.1:8181/api/catalog \ >>>> --conf spark.sql.catalog.polaris.credential=root:<secret> \ >>>> --conf spark.sql.catalog.polaris.scope=PRINCIPAL_ROLE:ALL \ >>>> --conf spark.sql.catalog.polaris.warehouse=polaris_demo >>>> >>>> spark-sql (default)> create namespace polaris.foo; >>>> 25/02/27 09:43:24 WARN RESTSessionCatalog: Iceberg REST client is >>>> missing the OAuth2 server URI configuration and defaults to >>>> http://127.0.0.1:8181/api/catalog/v1/oauth/tokens. This automatic >>>> fallback will be removed in a future Iceberg release.It is recommended to >>>> configure the OAuth2 endpoint using the 'oauth2-server-uri' property to be >>>> prepared. This warning will disappear if the OAuth2 endpoint is explicitly >>>> configured. See https://github.com/apache/iceberg/issues/10537 >>>> Time taken: 0.688 seconds >>>> spark-sql (default)> >>>> >>>> >>>> On Thu, Feb 27, 2025 at 12:22 AM Aihua Xu <aihu...@gmail.com> wrote: >>>> >>>>> I tested 1.8.1 RC with Snowflake build. I'm seeing the following (I'm >>>>> not seeing that in 1.7.x). >>>>> >>>>> "exception": "java.io.IOException: *Authorization header is missing*\n\tat >>>>> org.apache.polaris.service.dropwizard.auth.PolarisPrincipalAuthenticator.filter(PolarisPrincipalAuthenticator.java:43)\n\tat >>>>> org.glassfish.jersey.server.ContainerFilteringStage.apply(ContainerFilteringStage.java:108)\n\tat >>>>> org.glassfish.jersey.server.ContainerFilteringStage.apply(ContainerFilteringStage.java:44)\n\tat >>>>> org.glassfish.jersey.process.internal.Stages.process(Stages.java:173)\n\tat >>>>> org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:248). >>>>> >>>>> Does anyone know which change could introduce this? >>>>> >>>>> On Wed, Feb 26, 2025 at 5:16 AM Péter Váry < >>>>> peter.vary.apa...@gmail.com> wrote: >>>>> >>>>>> +1 >>>>>> >>>>>> checked the signatures, checksums >>>>>> build and run some tests >>>>>> >>>>>> Amogh Jahagirdar <2am...@gmail.com> ezt írta (időpont: 2025. febr. >>>>>> 26., Sze, 6:11): >>>>>> >>>>>>> +1 (binding) >>>>>>> >>>>>>> Verified signatures, checksum, RAT checks. >>>>>>> Ran build and test with JDK17 >>>>>>> >>>>>>> Thanks, >>>>>>> Amogh Jahagirdar >>>>>>> >>>>>>> On Wed, Feb 26, 2025 at 2:30 AM Honah J. <hon...@apache.org> wrote: >>>>>>> >>>>>>>> +1 (binding) >>>>>>>> >>>>>>>> - Checked signatures and checksum >>>>>>>> - Checked license >>>>>>>> - Full Build and Test >>>>>>>> >>>>>>>> Best regards, >>>>>>>> Honah >>>>>>>> >>>>>>>> On Tue, Feb 25, 2025 at 10:52 AM Russell Spitzer < >>>>>>>> russell.spit...@gmail.com> wrote: >>>>>>>> >>>>>>>>> +1 >>>>>>>>> Checked Sigs and Checksum >>>>>>>>> Ran Rat >>>>>>>>> Ran full build/test >>>>>>>>> >>>>>>>>> >>>>>>>>> On Tue, Feb 25, 2025 at 11:30 AM Driesprong, Fokko >>>>>>>>> <fo...@driesprong.frl> wrote: >>>>>>>>> >>>>>>>>>> +1 (binding) >>>>>>>>>> >>>>>>>>>> - Checked signatures and checksum >>>>>>>>>> - Checked licenses >>>>>>>>>> - Spotchecked NOTICE/LICENSE >>>>>>>>>> >>>>>>>>>> Kind regards, >>>>>>>>>> Fokko >>>>>>>>>> >>>>>>>>>> Op di 25 feb 2025 om 16:56 schreef Kevin Liu < >>>>>>>>>> kevinjq...@apache.org>: >>>>>>>>>> >>>>>>>>>>> +1 (non-binding) >>>>>>>>>>> >>>>>>>>>>> I followed "How to Verify a Release" >>>>>>>>>>> <https://iceberg.apache.org/how-to-release/#how-to-verify-a-release> >>>>>>>>>>> . >>>>>>>>>>> Checked out artifact from SVN, >>>>>>>>>>> ``` >>>>>>>>>>> svn checkout >>>>>>>>>>> https://dist.apache.org/repos/dist/dev/iceberg/apache-iceberg-1.8.1-rc1/ >>>>>>>>>>> . >>>>>>>>>>> ``` >>>>>>>>>>> >>>>>>>>>>> Verified >>>>>>>>>>> * Signature Good >>>>>>>>>>> * Checksum Ok >>>>>>>>>>> * RAT check passed. 1 unrelated error message >>>>>>>>>>> ``` >>>>>>>>>>> ERROR: Ignored 0 lines in your exclusion files as comments or >>>>>>>>>>> empty lines. >>>>>>>>>>> ``` >>>>>>>>>>> * Build + test passed, running on Java 17.0.6 (openjdk 17.0.6 >>>>>>>>>>> 2023-01-17 LTS) on M1 >>>>>>>>>>> * Ran a few examples on Spark >>>>>>>>>>> * Ran pyiceberg integration tests, >>>>>>>>>>> https://github.com/kevinjqliu/iceberg-python/pull/11 >>>>>>>>>>> >>>>>>>>>>> I ran the tests both with and without the docker daemon. Without >>>>>>>>>>> docker, a few tests failed in `iceberg-aws`, `iceberg-azure`, and >>>>>>>>>>> `iceberg-kafka-connect`. There's already an issue to track this at >>>>>>>>>>> https://github.com/apache/iceberg/issues/12236. >>>>>>>>>>> I'm also continuing to see the flakey test for `iceberg-core`'s >>>>>>>>>>> `testConcurrentFastAppends` test. I believe this is a local issue >>>>>>>>>>> with my >>>>>>>>>>> machine. >>>>>>>>>>> >>>>>>>>>>> Thanks for running the release, Eduard! >>>>>>>>>>> >>>>>>>>>>> Best, >>>>>>>>>>> Kevin Liu >>>>>>>>>>> >>>>>>>>>>> On Tue, Feb 25, 2025 at 4:23 AM Jean-Baptiste Onofré < >>>>>>>>>>> j...@nanthrax.net> wrote: >>>>>>>>>>> >>>>>>>>>>>> +1 (non binding) >>>>>>>>>>>> >>>>>>>>>>>> - Hash and checksum are good >>>>>>>>>>>> - LICENSE and NOTICE are OK in different distributed artifacts >>>>>>>>>>>> (source >>>>>>>>>>>> distribution, aws bundle, etc) >>>>>>>>>>>> - ASF header present in all expected files >>>>>>>>>>>> - No binary file found in the source distribution >>>>>>>>>>>> - Did quick smoke tests >>>>>>>>>>>> >>>>>>>>>>>> Thanks, >>>>>>>>>>>> Regards >>>>>>>>>>>> JB >>>>>>>>>>>> >>>>>>>>>>>> On Mon, Feb 24, 2025 at 1:46 PM Eduard Tudenhoefner >>>>>>>>>>>> <etudenhoef...@gmail.com> wrote: >>>>>>>>>>>> > >>>>>>>>>>>> > Hi Everyone, >>>>>>>>>>>> > >>>>>>>>>>>> > I propose that we release the following RC as the official >>>>>>>>>>>> Apache Iceberg 1.8.1 release. >>>>>>>>>>>> > >>>>>>>>>>>> > The commit ID is 9ce0fcf0af7becf25ad9fc996c3bad2afdcfd33d >>>>>>>>>>>> > * This corresponds to the tag: apache-iceberg-1.8.1-rc1 >>>>>>>>>>>> > * >>>>>>>>>>>> https://github.com/apache/iceberg/commits/apache-iceberg-1.8.1-rc1 >>>>>>>>>>>> > * >>>>>>>>>>>> https://github.com/apache/iceberg/tree/9ce0fcf0af7becf25ad9fc996c3bad2afdcfd33d >>>>>>>>>>>> > >>>>>>>>>>>> > The release tarball, signature, and checksums are here: >>>>>>>>>>>> > * >>>>>>>>>>>> https://dist.apache.org/repos/dist/dev/iceberg/apache-iceberg-1.8.1-rc1 >>>>>>>>>>>> > >>>>>>>>>>>> > You can find the KEYS file here: >>>>>>>>>>>> > * https://downloads.apache.org/iceberg/KEYS >>>>>>>>>>>> > >>>>>>>>>>>> > Convenience binary artifacts are staged on Nexus. The Maven >>>>>>>>>>>> repository URL is: >>>>>>>>>>>> > * >>>>>>>>>>>> https://repository.apache.org/content/repositories/orgapacheiceberg-1184/ >>>>>>>>>>>> > >>>>>>>>>>>> > Please download, verify, and test. >>>>>>>>>>>> > >>>>>>>>>>>> > Please vote in the next 72 hours. >>>>>>>>>>>> > >>>>>>>>>>>> > [ ] +1 Release this as Apache Iceberg 1.8.1 >>>>>>>>>>>> > [ ] +0 >>>>>>>>>>>> > [ ] -1 Do not release this because... >>>>>>>>>>>> > >>>>>>>>>>>> > Only PMC members have binding votes, but other community >>>>>>>>>>>> members are encouraged to cast >>>>>>>>>>>> > non-binding votes. This vote will pass if there are 3 binding >>>>>>>>>>>> +1 votes and more binding >>>>>>>>>>>> > +1 votes than -1 votes. >>>>>>>>>>>> > >>>>>>>>>>>> >>>>>>>>>>>