RFR: 8255405: sun/net/ftp/imp/FtpClient uses SimpleDateFormat in not thread-safe manner [v2]
Daniel Fuchs
dfuchs at openjdk.java.net
Wed Oct 28 11:13:14 UTC 2020
On Tue, 27 Oct 2020 18:54:30 GMT, Igor Ignatyev <iignatyev at openjdk.org> wrote:
>> Hi all,
>>
>> could you please review this small and trivial fix?
>>
>> `sun/net/ftp/imp/FtpClient::dateFormats` is an array of `SimpleDateFormat` which are shared among all instances of `FtpClient`. the fact that `SimpleDateFormat` isn't thread-safe renders`FtpClient` to be non-thread-safe as well. the patch makes the only usage of `dateFormats` array, `parseRfc3659TimeValue` method, `synchronized`.
>>
>> the problem was reported in #776
>>
>> Thanks,
>> -- Igor
>
> Igor Ignatyev has updated the pull request incrementally with three additional commits since the last revision:
>
> - remove \n from MDTM response before parsing
> - added leading 0 to the test
> - use DateTimeFormatter instead of SimpleDateFormat
src/java.base/share/classes/sun/net/ftp/impl/FtpClient.java line 1770:
> 1768: try {
> 1769: var d = LocalDateTime.parse(s, RFC3659_DATETIME_FORMAT);
> 1770: result = Date.from(d.atZone(ZoneOffset.systemDefault()).toInstant());
Should this be ZoneOffset.UTC rather than System default? I thought the date returned by the server were supposed to be in GMT.
-------------
PR: https://git.openjdk.java.net/jdk/pull/867
More information about the net-dev
mailing list