Re: [jdk25] RFR: 8359364: java/net/URL/EarlyOrDelayedParsing test fails intermittently

2025-06-13 Thread Alan Bateman
On Fri, 13 Jun 2025 15:01:46 GMT, Daniel Fuchs  wrote:

> Hi,
> 
> I would like to backport this test-only stabilization fix to the JDK 25.
> This will remove some noise from the CI when running on macOS.
> 
> This is a clean backport.

Marked as reviewed by alanb (Reviewer).

-

PR Review: https://git.openjdk.org/jdk/pull/25804#pullrequestreview-2925184804


[jdk25] RFR: 8359364: java/net/URL/EarlyOrDelayedParsing test fails intermittently

2025-06-13 Thread Daniel Fuchs
Hi,

I would like to backport this test-only stabilization fix to the JDK 25.
This will remove some noise from the CI when running on macOS.

This is a clean backport.

-

Commit messages:
 - Backport 57cabc6d741c14a8029aec324ba96e8ced4afcbd

Changes: https://git.openjdk.org/jdk/pull/25804/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=25804&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8359364
  Stats: 18 lines in 1 file changed: 17 ins; 0 del; 1 mod
  Patch: https://git.openjdk.org/jdk/pull/25804.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/25804/head:pull/25804

PR: https://git.openjdk.org/jdk/pull/25804


Re: RFR: 7116990: (spec) Socket.connect(addr,timeout) not clear if IOException because of TCP timeout [v3]

2025-06-13 Thread Mark Sheppard
On Fri, 13 Jun 2025 13:49:55 GMT, Jaikiran Pai  wrote:

>The timeout values noted in that text are mere examples to convey the detail 
>that application developers need to >be aware that the timeout they pass to 
>the connect() method may not influence connection establishment failure >due 
>to timeout. They aren't exhaustive. I had considered including 21 in that text 
>too. Alan's suggestion was to >mention "60 or 75 seconds".

Right, the objective is to convey to a developer that when specifying a timeout 
to the connect method, that this timeout may be superseded by an OS's TCP/IP 
configuration's Connect timeout settings.

This is all that needs to be said. There is no need to state any typical 
values, but if you do then those values need to be factually correct, and for 
the currently supported platforms 60 seconds is not typical, it's 21, 75, and 
128 seconds

-

PR Review Comment: https://git.openjdk.org/jdk/pull/25690#discussion_r2145194457


Re: RFR: 7116990: (spec) Socket.connect(addr,timeout) not clear if IOException because of TCP timeout [v3]

2025-06-13 Thread Mark Sheppard
On Fri, 13 Jun 2025 14:36:21 GMT, Alan Bateman  wrote:

>> "The timeout values noted in that text are mere examples to convey the 
>> detail that application developers need to be aware that the timeout they 
>> pass to the connect() method may not influence connection establishment 
>> failure due to timeout. They aren't exhaustive. I had considered including 
>> 21 in that text too. Alan's suggestion was to mention "60 or 75 seconds". "
>> 
>> Right, the objective is to convey to a developer that when specifying a 
>> timeout to the connect method, that this timeout may be superseded by an 
>> OS's TCP/IP configuration's Connect timeout settings.
>> 
>> This is all that needs to be said. There is no need to state any typical 
>> values, but if you do then those values need to be factually correct, and 
>> for the currently supported platforms 60 seconds is not typical, it's 21, 
>> 75, and 128 seconds
>> 
>> But if a developer takes guidance from the "typically 60 seconds" statement  
>> on a Windows environment and set a timeout of 50 seconds, they will get
>> IOException is a java.net.ConnectException
>> java.net.ConnectException: Operation timed out
>> 
>> as reported in the original bug and as such, defeats the purpose of the 
>> apiNote
>
>> This is all that needs to be said. There is no need to state any typical 
>> values, but if you do then those values need to be factually correct, and 
>> for the currently supported platforms 60 seconds is not typical, it's 21, 
>> 75, and 128 seconds
> 
> The proposed wording in the current draft looks okay. It explains to the 
> reader that establishing a TCP/IP connection is subject to an operating 
> system timeout. It gives a sense of what that timeout might be, it's not 
> hours or days, it's tens of seconds. I don't think we should attempt to list 
> specific timeouts for specific operating system versions and configurations.

why are you insisting on specifying 60 seconds? It does not exist on any 
supported OS platform. There is no need to specify any value in the apiNote, 
all it does is add misinformation

-

PR Review Comment: https://git.openjdk.org/jdk/pull/25690#discussion_r2145324159


Re: RFR: 8353113: Peer supported certificate signature algorithms are not being checked with default SunX509 key manager [v4]

2025-06-13 Thread Artur Barashev
On Fri, 6 Jun 2025 21:11:16 GMT, Artur Barashev  wrote:

>> src/java.base/share/classes/sun/security/ssl/SunX509KeyManagerImpl.java line 
>> 401:
>> 
>>> 399: continue;
>>> 400: }
>>> 401: 
>> 
>> I think we should also call `CertType.check` here, like in 
>> `X509KeyManagerImpl`. Since this change is now only selecting certificates 
>> with algorithms that are not disabled, I think it also makes sense to select 
>> certificates that have the proper extensions, etc and will not cause 
>> subsequent certificate chain validation failures.
>> 
>> This means we would have to change the name of the property so that it isn't 
>> only about disabling constraints checking. Perhaps: 
>> `jdk.tls.keymanager.disableCertSelectionChecking`.
>
> Yes, makes sense.

Done.

-

PR Review Comment: https://git.openjdk.org/jdk/pull/25016#discussion_r2145256449


Re: RFR: 7116990: (spec) Socket.connect(addr,timeout) not clear if IOException because of TCP timeout [v3]

2025-06-13 Thread Alan Bateman
On Fri, 13 Jun 2025 14:14:25 GMT, Mark Sheppard  wrote:

> This is all that needs to be said. There is no need to state any typical 
> values, but if you do then those values need to be factually correct, and for 
> the currently supported platforms 60 seconds is not typical, it's 21, 75, and 
> 128 seconds

The proposed wording in the current draft looks okay. It explains to the reader 
that establishing a TCP/IP connection is subject to an operating system 
timeout. It gives a sense of what that timeout might be, it's not hours or 
days, it's tens of seconds. I don't think we should attempt to list specific 
timeouts for specific operating system versions and configurations.

-

PR Review Comment: https://git.openjdk.org/jdk/pull/25690#discussion_r2145237517


Re: RFR: 7116990: (spec) Socket.connect(addr,timeout) not clear if IOException because of TCP timeout [v3]

2025-06-13 Thread Mark Sheppard
On Fri, 13 Jun 2025 16:08:43 GMT, Daniel Fuchs  wrote:

>> why are you insisting on specifying 60 seconds? It does not exist on any 
>> supported OS platform. There is no need to specify any value in the apiNote, 
>> all it does is add misinformation
>
> Maybe we could say:
> 
> 
> The typical operating system timeout ranges within tens of seconds to minutes.

šŸ‘ very good suggestion

-

PR Review Comment: https://git.openjdk.org/jdk/pull/25690#discussion_r2145459046


Re: RFR: 8353113: Peer supported certificate signature algorithms are not being checked with default SunX509 key manager [v5]

2025-06-13 Thread Artur Barashev
> When the deafult SunX509KeyManagerImpl is being used we are in violation of 
> TLSv1.3 RFC spec because we ignore peer supported certificate signatures sent 
> to us in "signature_algorithms"/"signature_algorithms_cert" extensions:
> https://datatracker.ietf.org/doc/html/rfc8446#section-4.4.2.2
> https://datatracker.ietf.org/doc/html/rfc8446#section-4.4.2.3
> 
> X509KeyManagerImpl on the other hand includes the algorithms sent by the peer 
> in "signature_algorithms_cert" extension (or in "signature_algorithms" 
> extension when "signature_algorithms_cert" extension isn't present) in the 
> algorithm constraints being checked.
> 
> **SUNX509 KeyManager performance before change**
> Benchmark(resume)  (tlsVersion)   Mode  
> Cnt  Score Error  Units
> SSLHandshake.doHandshake  true   TLSv1.2  thrpt   15  19758.012 ± 
> 758.237  ops/s
> SSLHandshake.doHandshake  true   TLS  thrpt   15   1861.695 ±  
> 14.681  ops/s
> SSLHandshake.doHandshake false   TLSv1.2  thrpt   15   **1186.962** ± 
>  12.085  ops/s
> SSLHandshake.doHandshake false   TLS  thrpt   15   **1056.288** ± 
>   7.197  ops/s
> 
> **SUNX509 KeyManager performance after change**
> Benchmark (resume)  (tlsVersion)   Mode  Cnt  Score 
> Error  Units
> SSLHandshake.doHandshake  true   TLSv1.2  thrpt   15  20954.399 ± 
> 260.817  ops/s
> SSLHandshake.doHandshake  true   TLS  thrpt   15   1813.401 ±  
> 13.917  ops/s
> SSLHandshake.doHandshake false   TLSv1.2  thrpt   15   **1158.190** ± 
>   6.023  ops/s
> SSLHandshake.doHandshake false   TLS  thrpt   15   **1012.988** ± 
>  10.943  ops/s

Artur Barashev has updated the pull request with a new target base due to a 
merge or a rebase. The incremental webrev excludes the unrelated changes 
brought in by the merge/rebase. The pull request contains 19 additional commits 
since the last revision:

 - Support certificate checks in SunX509 key manager
 - Address some review comments
 - Merge branch 'master' into JDK-8353113
 - Make the test run on TLSv1.3
 - Make sure the exception happens during KeyManager's algorithm check
 - Add PeerConstraintsCheck unit test
 - Add unit test
 - Code refactoring
 - Fix open unit tests
 - Adding a system property to skip the constraints checking. Remove SunX509c.
 - ... and 9 more: https://git.openjdk.org/jdk/compare/5479addb...448442e9

-

Changes:
  - all: https://git.openjdk.org/jdk/pull/25016/files
  - new: https://git.openjdk.org/jdk/pull/25016/files/451e1efd..448442e9

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=25016&range=04
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=25016&range=03-04

  Stats: 228571 lines in 4300 files changed: 142799 ins; 58830 del; 26942 mod
  Patch: https://git.openjdk.org/jdk/pull/25016.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/25016/head:pull/25016

PR: https://git.openjdk.org/jdk/pull/25016


Re: RFR: 8351983: HttpCookie Parser Incorrectly Handles Cookies with Expires Attribute [v6]

2025-06-13 Thread Michael McMahon
> Hi,
> 
> This is a fix to j.n.HttpCookie (which has a doc/spec change). So, I'm 
> targeting it to 26.
> We currently do not obey the rule in RFC 6265 that says if both Max-Age and 
> Expires attributes
> are present in a cookie, the Max-Age should take precedence.
> 
> Thanks
> Michael

Michael McMahon has updated the pull request incrementally with one additional 
commit since the last revision:

  impl update

-

Changes:
  - all: https://git.openjdk.org/jdk/pull/25636/files
  - new: https://git.openjdk.org/jdk/pull/25636/files/9a495d7f..b2211311

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=25636&range=05
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=25636&range=04-05

  Stats: 39 lines in 1 file changed: 19 ins; 15 del; 5 mod
  Patch: https://git.openjdk.org/jdk/pull/25636.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/25636/head:pull/25636

PR: https://git.openjdk.org/jdk/pull/25636


Re: RFR: 7116990: (spec) Socket.connect(addr,timeout) not clear if IOException because of TCP timeout [v3]

2025-06-13 Thread Daniel Fuchs
On Fri, 13 Jun 2025 15:20:47 GMT, Mark Sheppard  wrote:

>>> This is all that needs to be said. There is no need to state any typical 
>>> values, but if you do then those values need to be factually correct, and 
>>> for the currently supported platforms 60 seconds is not typical, it's 21, 
>>> 75, and 128 seconds
>> 
>> The proposed wording in the current draft looks okay. It explains to the 
>> reader that establishing a TCP/IP connection is subject to an operating 
>> system timeout. It gives a sense of what that timeout might be, it's not 
>> hours or days, it's tens of seconds. I don't think we should attempt to list 
>> specific timeouts for specific operating system versions and configurations.
>
> why are you insisting on specifying 60 seconds? It does not exist on any 
> supported OS platform. There is no need to specify any value in the apiNote, 
> all it does is add misinformation

Maybe we could say:


The typical operating system timeout ranges within tens of seconds to minutes.

-

PR Review Comment: https://git.openjdk.org/jdk/pull/25690#discussion_r2145436929


[jdk25] Integrated: 8359364: java/net/URL/EarlyOrDelayedParsing test fails intermittently

2025-06-13 Thread Daniel Fuchs
On Fri, 13 Jun 2025 15:01:46 GMT, Daniel Fuchs  wrote:

> Hi,
> 
> I would like to backport this test-only stabilization fix to the JDK 25.
> This will remove some noise from the CI when running on macOS.
> 
> This is a clean backport.

This pull request has now been integrated.

Changeset: 41117308
Author:Daniel Fuchs 
URL:   
https://git.openjdk.org/jdk/commit/41117308450a09df2de3ba608612b1ec67988761
Stats: 18 lines in 1 file changed: 17 ins; 0 del; 1 mod

8359364: java/net/URL/EarlyOrDelayedParsing test fails intermittently

Reviewed-by: alanb
Backport-of: 57cabc6d741c14a8029aec324ba96e8ced4afcbd

-

PR: https://git.openjdk.org/jdk/pull/25804


Re: RFR: 8359364: java/net/URL/EarlyOrDelayedParsing test fails intermittently [v2]

2025-06-13 Thread Alan Bateman
On Thu, 12 Jun 2025 18:52:12 GMT, Daniel Fuchs  wrote:

>> Like 
>> [java/net/HttpURLConnection/HttpURLConnectionExpectContinueTest.java](https://git.openjdk.org/jdk/pull/25692),
>>  the test java/net/URL/EarlyOrDelayedParsing doesn't expect proxies, and may 
>> fail if a proxy is selected.
>> 
>> The test sets system properties and runs in otrhervm. The fix is to set up a 
>> default ProxySelector that will always return NO_PROXY.
>
> Daniel Fuchs has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Copyright update

Marked as reviewed by alanb (Reviewer).

-

PR Review: https://git.openjdk.org/jdk/pull/25783#pullrequestreview-2924763153


Re: RFR: 8359364: java/net/URL/EarlyOrDelayedParsing test fails intermittently [v2]

2025-06-13 Thread Jaikiran Pai
On Thu, 12 Jun 2025 18:52:12 GMT, Daniel Fuchs  wrote:

>> Like 
>> [java/net/HttpURLConnection/HttpURLConnectionExpectContinueTest.java](https://git.openjdk.org/jdk/pull/25692),
>>  the test java/net/URL/EarlyOrDelayedParsing doesn't expect proxies, and may 
>> fail if a proxy is selected.
>> 
>> The test sets system properties and runs in otrhervm. The fix is to set up a 
>> default ProxySelector that will always return NO_PROXY.
>
> Daniel Fuchs has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Copyright update

This looks fine to me. Although there's a test `@run` which is not `othervm`, 
setting this default ProxySelector (and not resetting it back) should be fine 
since `jdk.net.url.delayParsing` by default is `false` and we don't set the 
ProxySelector in those cases.

-

Marked as reviewed by jpai (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/25783#pullrequestreview-2924775768


Integrated: 8359364: java/net/URL/EarlyOrDelayedParsing test fails intermittently

2025-06-13 Thread Daniel Fuchs
On Thu, 12 Jun 2025 16:02:51 GMT, Daniel Fuchs  wrote:

> Like 
> [java/net/HttpURLConnection/HttpURLConnectionExpectContinueTest.java](https://git.openjdk.org/jdk/pull/25692),
>  the test java/net/URL/EarlyOrDelayedParsing doesn't expect proxies, and may 
> fail if a proxy is selected.
> 
> The test sets system properties and runs in otrhervm. The fix is to set up a 
> default ProxySelector that will always return NO_PROXY.

This pull request has now been integrated.

Changeset: 57cabc6d
Author:Daniel Fuchs 
URL:   
https://git.openjdk.org/jdk/commit/57cabc6d741c14a8029aec324ba96e8ced4afcbd
Stats: 18 lines in 1 file changed: 17 ins; 0 del; 1 mod

8359364: java/net/URL/EarlyOrDelayedParsing test fails intermittently

Reviewed-by: vyazici, syan, alanb

-

PR: https://git.openjdk.org/jdk/pull/25783


Re: RFR: 7116990: (spec) Socket.connect(addr,timeout) not clear if IOException because of TCP timeout [v3]

2025-06-13 Thread Jaikiran Pai
On Fri, 13 Jun 2025 09:16:39 GMT, Mark Sheppard  wrote:

> Also first sentence need minor refinement changing connection timeout to 
> connect timeout
>
> connection timeout is when the connection is established

I haven't previously seen connection timeout term being used to mean a timeout 
(for the connection?) after the connection has been established. I'll however 
change that text to say "connect timeout" shortly.

> I don't understand why you are persisting with 60 seconds, when the original 
> reporter shows its a default of 21 seconds on Windows, which I have also 
> confirmed and that windows requires. 21 seconds is a very much not typically 
> 60 seconds

The timeout values noted in that text are mere examples to convey the detail 
that application developers need to be aware that the `timeout` they pass to 
the `connect()` method may not influence connection establishment failure due 
to timeout. They aren't exhaustive. I had considered including 21 in that text 
too. Alan's suggestion was to mention "60 or 75 seconds".

-

PR Review Comment: https://git.openjdk.org/jdk/pull/25690#discussion_r2145148121


Re: RFR: 8351983: HttpCookie Parser Incorrectly Handles Cookies with Expires Attribute [v5]

2025-06-13 Thread Michael McMahon
On Thu, 12 Jun 2025 18:20:58 GMT, Volkan Yazici  wrote:

> @Michael-Mc-Mahon, instead of making an exception for `max-age` and 
> `expires`, and removing them from `assignors`, can't we convert the type of 
> `assignors` from `Map` to `List` and add `max-age` & `expires` entries at the 
> end?

Just converting from Map to List wouldn't be enough. The problem is that both 
attribute types need to be handled together. You could change the attribute 
name recognition to some kind of pattern match to recognise either of them. 
Then you need to know which of them was set and what their values were.

Maybe, I could at least use the assignor pattern to recognise the two 
attributes and limit the special code to just actioning the values. I'll take a 
look at that now.

-

PR Review Comment: https://git.openjdk.org/jdk/pull/25636#discussion_r2145264788


Re: RFR: 7116990: (spec) Socket.connect(addr,timeout) not clear if IOException because of TCP timeout [v3]

2025-06-13 Thread Daniel Fuchs
On Fri, 13 Jun 2025 07:12:17 GMT, Jaikiran Pai  wrote:

>> Can I please get a review of this doc-only change which proposes to add a 
>> `@apiNote` to the `Socket.connect(SocketAddress endpoint, int timeout)` 
>> method? This addresses https://bugs.openjdk.org/browse/JDK-7116990.
>> 
>> As noted in that issue, users can find it surprising that when the 
>> `Socket.connect(...)` method is called with a `timeout` value, then if that 
>> timeout value happens to be greater than the connect timeout that operating 
>> systems typically impose, then a `IOException` gets thrown instead of the 
>> `SocketTimeoutException`. The change in this PR proposes to add a `@apiNote` 
>> which explains this current behaviour.
>> 
>> If this requires a CSR, I'll open one once we settle on the proposed text.
>
> Jaikiran Pai has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   improve text

Marked as reviewed by dfuchs (Reviewer).

-

PR Review: https://git.openjdk.org/jdk/pull/25690#pullrequestreview-2923879325


Re: RFR: 8340182: Java HttpClient does not follow default retry limit of 3 retries [v6]

2025-06-13 Thread duke
On Thu, 12 Jun 2025 17:52:51 GMT, p-nima  wrote:

>> The AuthenticationFilter did not respect the default retry limit of 3 
>> retries in case of invalid credentials supplied.
>> 
>> This PR helps to resolve the bug and tests it with default and updated retry 
>> limit set via `jdk.httpclient.auth.retrylimit=1`.
>> 
>> The test is green with tiers 1, 2, 3 and the test is stable.
>
> p-nima has updated the pull request incrementally with one additional commit 
> since the last revision:
> 
>   update copyright

@p-nima 
Your change (at version 8803830b39f03ef60e2e96a33773bf0fcd0e70e7) is now ready 
to be sponsored by a Committer.

-

PR Comment: https://git.openjdk.org/jdk/pull/25490#issuecomment-2969602241


Re: RFR: 8359402: TesCloseDescriptors.java should throw SkippedException when there is no lsof/sctp

2025-06-13 Thread Volkan Yazici
On Fri, 13 Jun 2025 06:36:19 GMT, SendaoYan  wrote:

> Hi all,
> 
> Test com/sun/nio/sctp/SctpChannel/CloseDescriptors.java should throw 
> jtreg.SkippedException when there is no lsof command or there is no SCTP in 
> test machine.
> Before this PR, this test report Execution successful when there is no SCTP.
> 
> 
> --
> TEST: com/sun/nio/sctp/SctpChannel/CloseDescriptors.java
> TEST RESULT: Passed. Execution successful
> --
> 
> 
> After this PR, it will report `jtreg.SkippedException` when there is no SCTP
> 
> 
> --
> TEST: com/sun/nio/sctp/SctpChannel/CloseDescriptors.java
> TEST RESULT: Passed. Skipped: jtreg.SkippedException: SCTP protocol is not 
> supported
> --
> 
> 
> Change has been verified locally, test-fix only, no risk.

Marked as reviewed by vyazici (Committer).

test/jdk/com/sun/nio/sctp/SctpChannel/CloseDescriptors.java line 30:

> 28:  * @requires (os.family == "linux")
> 29:  * @library /test/lib
> 30:  * @build jtreg.SkippedException

I've totally missed that `jtreg.SkippedException` should indeed be added to 
`@build`. Now I can land a PR touching thousands of test files using `SE`. 😈 
(No, I won't. šŸ˜…)

-

PR Review: https://git.openjdk.org/jdk/pull/25790#pullrequestreview-2923605868
PR Review Comment: https://git.openjdk.org/jdk/pull/25790#discussion_r2144328418


Re: RFR: 7116990: (spec) Socket.connect(addr,timeout) not clear if IOException because of TCP timeout [v3]

2025-06-13 Thread Jaikiran Pai
On Thu, 12 Jun 2025 10:19:21 GMT, Mark Sheppard  wrote:

>> Looking at this on the 3 main OS platforms (Windows, OL and macOS) and 
>> running a simple test to trigger a connect timeout then finding are
>> 
>> macOS the connect timeout is 75 seconds as this is derived from 4.3 BSD
>> 
>> If OL linux has a syn retries set to 6 and an RTO == 1 sec then it’s connect 
>> timeout is 130 seconds approx 
>> That’s initial syn timeout of 1 seconds and then 6 retries totalling 127 
>> seconds
>> 
>> Windows by default connect timeout is 21 seconds
>> RTT == 3 seconds and two connect retries
>> Initial syn timeout 3 seconds + 2 retries at 6 and 12 seconds == 21 seconds
>
> FWIW an possible alternative wording
> 
> Establishing a TCP/IP connection is subject to a connect timeout, determined 
> by configuration settings
> of the operating system, for example the number of connect retries together 
> with a TCP/IP implementation’s back off strategy. Thus, TCP/IP Connect 
> timeout values can vary across operating system, for example 75 seconds on 
> macOS, with a  default value of 21 seconds on Windows system. As such, the 
> operating system TCP/IP Connect timeout may expire before that specified to 
> the connect method. If the operating system Connect timeout expires 
> before the {@code timeout} specified to this method then an {@code 
> IOException} is thrown. The {@code timeout} 
> specified to this method is typically a timeout value that is shorter than 
> the operating system timeout.

Hello Mark, I discussed this with Alan and based on those discussions I have 
now reworded that sentence to make it clear that 60 second isn't the only 
typical timeout and at the same time keep the text concise.

-

PR Review Comment: https://git.openjdk.org/jdk/pull/25690#discussion_r2144350812


Re: RFR: 7116990: (spec) Socket.connect(addr,timeout) not clear if IOException because of TCP timeout [v3]

2025-06-13 Thread Jaikiran Pai
> Can I please get a review of this doc-only change which proposes to add a 
> `@apiNote` to the `Socket.connect(SocketAddress endpoint, int timeout)` 
> method? This addresses https://bugs.openjdk.org/browse/JDK-7116990.
> 
> As noted in that issue, users can find it surprising that when the 
> `Socket.connect(...)` method is called with a `timeout` value, then if that 
> timeout value happens to be greater than the connect timeout that operating 
> systems typically impose, then a `IOException` gets thrown instead of the 
> `SocketTimeoutException`. The change in this PR proposes to add a `@apiNote` 
> which explains this current behaviour.
> 
> If this requires a CSR, I'll open one once we settle on the proposed text.

Jaikiran Pai has updated the pull request incrementally with one additional 
commit since the last revision:

  improve text

-

Changes:
  - all: https://git.openjdk.org/jdk/pull/25690/files
  - new: https://git.openjdk.org/jdk/pull/25690/files/d6978f0d..124e0970

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=25690&range=02
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=25690&range=01-02

  Stats: 5 lines in 1 file changed: 1 ins; 0 del; 4 mod
  Patch: https://git.openjdk.org/jdk/pull/25690.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/25690/head:pull/25690

PR: https://git.openjdk.org/jdk/pull/25690


Re: RFR: 8359223: HttpClient: Remove leftovers from the SecurityManager cleanup [v2]

2025-06-13 Thread Volkan Yazici
> Removes following files added in 
> [JDK-8235459](https://bugs.openjdk.org/browse/JDK-8235459) and are forgotten 
> to be removed during the `SecurityManager`-removal 
> ([JDK-8344228](https://bugs.openjdk.org/browse/JDK-8344228)):
> 
> 
> test/jdk/java/net/httpclient/FilePublisher/FilePublisherPermsTest.java
> test/jdk/java/net/httpclient/FilePublisher/SecureZipFSProvider.java

Volkan Yazici has updated the pull request with a new target base due to a 
merge or a rebase. The incremental webrev excludes the unrelated changes 
brought in by the merge/rebase. The pull request contains three additional 
commits since the last revision:

 - Move `FilePublisherTest` one level up
 - Merge remote-tracking branch 'upstream/master' into hcSmFollowUp
 - Remove leftover tests from the SecurityManager cleanup

-

Changes:
  - all: https://git.openjdk.org/jdk/pull/25747/files
  - new: https://git.openjdk.org/jdk/pull/25747/files/4a911af9..8eb99336

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=25747&range=01
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=25747&range=00-01

  Stats: 10935 lines in 147 files changed: 8513 ins; 1685 del; 737 mod
  Patch: https://git.openjdk.org/jdk/pull/25747.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/25747/head:pull/25747

PR: https://git.openjdk.org/jdk/pull/25747


Re: RFR: 7116990: (spec) Socket.connect(addr,timeout) not clear if IOException because of TCP timeout [v3]

2025-06-13 Thread Mark Sheppard
On Fri, 13 Jun 2025 07:08:58 GMT, Jaikiran Pai  wrote:

>> FWIW an possible alternative wording
>> 
>> Establishing a TCP/IP connection is subject to a connect timeout, determined 
>> by configuration settings
>> of the operating system, for example the number of connect retries together 
>> with a TCP/IP implementation’s back off strategy. Thus, TCP/IP Connect 
>> timeout values can vary across operating system, for example 75 seconds on 
>> macOS, with a  default value of 21 seconds on Windows system. As such, the 
>> operating system TCP/IP Connect timeout may expire before that specified to 
>> the connect method. If the operating system Connect timeout expires 
>> before the {@code timeout} specified to this method then an {@code 
>> IOException} is thrown. The {@code timeout} 
>> specified to this method is typically a timeout value that is shorter than 
>> the operating system timeout.
>
> Hello Mark, I discussed this with Alan and based on those discussions I have 
> now reworded that sentence to make it clear that 60 second isn't the only 
> typical timeout and at the same time keep the text concise.

Hi JP,
I don't understand why you are persisting with 60 seconds, when the original 
reporter shows its a default of 21 seconds on Windows, which I have also 
confirmed and that windows requires TcpMaxConnectRetransmissions to adjusted to 
enable a higher connect timeout. 21 seconds is a very much not typically 60 
seconds

I have given feedback as a developer of the type of detail and wording which I 
would find useful. The "typically" statement is inaccurate and misleading

Also first sentence need minor refinement changing connection timeout to 
connect timeout 

connection timeout is when the connection is established
Thus should read:

Establishing a TCP/IP connection is subject to connect timeout settings in the 
operating system.

I think it is important to have some accurate details in this wording, as such 
documentation is taken a de facto standard and will persist for aeons

-

PR Review Comment: https://git.openjdk.org/jdk/pull/25690#discussion_r2144570845


Integrated: 8340182: Java HttpClient does not follow default retry limit of 3 retries

2025-06-13 Thread p-nima
On Wed, 28 May 2025 11:26:17 GMT, p-nima  wrote:

> The AuthenticationFilter did not respect the default retry limit of 3 retries 
> in case of invalid credentials supplied.
> 
> This PR helps to resolve the bug and tests it with default and updated retry 
> limit set via `jdk.httpclient.auth.retrylimit=1`.
> 
> The test is green with tiers 1, 2, 3 and the test is stable.

This pull request has now been integrated.

Changeset: ead4529c
Author:Prateek Nima 
Committer: Daniel Fuchs 
URL:   
https://git.openjdk.org/jdk/commit/ead4529c9219009fc4224e52e9ac4af5055e7137
Stats: 136 lines in 2 files changed: 135 ins; 0 del; 1 mod

8340182: Java HttpClient does not follow default retry limit of 3 retries

Reviewed-by: dfuchs

-

PR: https://git.openjdk.org/jdk/pull/25490


java.net.URLConnection.getContent()

2025-06-13 Thread Philip Race

java.net.URLConnection has
public Object getContent();

It uses the desktop module to find handlers for image and audio data

Briefly, the desktop module
Ā Ā Ā  "provides java.net.ContentHandlerFactory with
Ā Ā Ā  sun.awt.www.content.MultimediaContentHandlers;"

That knows about several audio and image mime types.

And URLConnection passes a mimetype string to the ContentHandlerFactory

If it is one of the mimetypes known to the desktop provider 
URLConnection gets returned one of

URLImageSource
java.awt.Image
java.applet.AudioClip

But the return type of getContent() is just java.lang.Object and nothing 
is specified.


How does anything use this API ?

The reason this comes up is that when removing the Applet API, this 
needs to transition to something
other than AudioClip - but who would notice if it got back null instead 
? Or just a byte[] of the raw data ?

Or something else ?

Is this API actually used ? Or useful ?

-phil