Hi all,

I've fixed the remaining Guard.secrets issue following Tim advises:
 - removed the setSecrets() method in trunk
 - eagerly instantiate the secrets map

I've also fixed potential issues with RouteList using an underlying CopyOnWriteArrayList instance.

If you see remaining threading issues, please reopen:
http://restlet.tigris.org/issues/show_bug.cgi?id=368

Best,
Jerome

Jerome Louvel a écrit :
Hi Tim,

What's the best way for me (or anyone else) to report other concurrency and documentation issues that I encounter? In this discussion group? This thread? Or somewhere else?

For issues similar to the one we discussed, the best place is in the issue,
via the comments system. I've just broaden the scope of this issue:

"Fix thread safety issues"
http://restlet.tigris.org/issues/show_bug.cgi?id=368

If you have time to contribute patches, that would be more than welcome.
Here's my understanding of the basic concurrency requirements of the Restlet framework: Restlets of all flavors must be @ThreadSafe because they will in general be accessed concurrently by many threads. Requests and Responses are @NotThreadSafe; their handling is confined to a single thread. Representations might or might not be thread-safe, depending on whether they will be re-used in subsequent request handling. Does that sound right?

It is mostly right. For Representations, I don't think they should be shared
by multiple threads. The instances are generally short-lived, bounded to the
Request/Response life cycle.
I posted some basic rules for writing @ThreadSafe classes <http://tembrel.blogspot.com/2007/10/basic-rules-for-threadsaf
e-classes.html>  on my blog. I hope they're helpful.

Cool, I've added the link to the threading documentation RFE:
http://www.outerthought.com/

Best regards,
Jerome

Reply via email to