Code Review 6965924: java.net.HttpCookie using static SimpleDateFormat which is not thread safe
Michael McMahon
michael.x.mcmahon at oracle.com
Thu Aug 19 09:44:06 PDT 2010
gustav trede wrote:
> On 19 August 2010 17:50, Chris Hegarty <chris.hegarty at oracle.com
> <mailto:chris.hegarty at oracle.com>> wrote:
>
> gustav trede wrote:
>
>
> On 18 August 2010 13:22, Michael McMahon
> <michael.x.mcmahon at oracle.com
> <mailto:michael.x.mcmahon at oracle.com>
> <mailto:michael.x.mcmahon at oracle.com
> <mailto:michael.x.mcmahon at oracle.com>>> wrote:
>
> gustav trede wrote:
>
>
> On 18 August 2010 12:10, Chris Hegarty
> <chris.hegarty at oracle.com <mailto:chris.hegarty at oracle.com>
> <mailto:chris.hegarty at oracle.com
> <mailto:chris.hegarty at oracle.com>>
> <mailto:chris.hegarty at oracle.com
> <mailto:chris.hegarty at oracle.com>
> <mailto:chris.hegarty at oracle.com
> <mailto:chris.hegarty at oracle.com>>>> wrote:
>
> Michael,
>
> java.net.HttpCookie uses static SimpleDateFormat
> which is not
> thread safe. I think the best solution here is to
> simply create
> local SimpleDateFormat as needed.
>
> Webrev:
>
> http://cr.openjdk.java.net/~chegar/6965924/webrev.00/webrev/
> <http://cr.openjdk.java.net/%7Echegar/6965924/webrev.00/webrev/>
>
> <http://cr.openjdk.java.net/%7Echegar/6965924/webrev.00/webrev/>
>
> <http://cr.openjdk.java.net/%7Echegar/6965924/webrev.00/webrev/>
>
>
>
> Why not use a threadlocal dateformater ?.
>
> perhaps ...
>
> For certain cases Its also viable to exploit the fact
> that its
> enough to generate a new value once per second for HTTP
> timestamps.
> Even if its not "needed", it would imo be nice if the
> JDK code
> itself could somehow act as reference / good examples
> of how to
> THINK(design) and implement.
>
> I suspect you're looking at this from a server perspective.
> This
> code is involved with parsing
> of incoming cookies. So, the generation of timestamps isn't
> being
> done here.
>
> Yes i am quite server focused =), servers can act as http
> clients too, different kind of intermediate logic etc.
> Anyhow, my apologies for wasting your time with this not so
> important issue, my brain just pings on code it finds strange /.
>
>
> We use ThreadLocal to store the formatter for the HttpServer
> implementation, com.sun.net.httpserver, see 6967684 "httpserver
> using a non thread-safe SimpleDateFormat" [1]. The threads
> creating the HTTP timestamps are part of an execurtorService and
> will need a timestamp per response. These threads will not be used
> for anything else, and are most probably going to handle many
> requests. I think adding a threadLocal makes sense for these.
>
> For HttpCookie, it is client side and a thread may only ever
> handle a few cookies for its lifetime. I think adding the overhead
> of three formatters may just be wasteful since the thread may
> never do any more than a few HTTP requests.
>
> Are you ok with this change?
>
> Sounds ok to me, considering how the current overall design and public
> API is, the hands are a bit tied for radical changes.
>
> regards
> gustav trede
Me too.
- Michael.
More information about the net-dev
mailing list