I was looking at moving up to the 2.1 version of the HBase REST API and was
poking around the code base wondering how I set headers on a per request
basis, when I noticed the the "Client" class at:
https://github.com/apache/hbase/blob/branch-2.1/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/client/Client.java
appears to have HttpGet and HttpResponse instance variables (line 68 and
69) that are not synchronised, nor do they have any kind of associated
lock. The thread safety of the Client is undocumented, but usually Client
classes can assumed to be thread safe.

These instance variables are used further down in the class in
unsynchronized blocks, meaning that were more than one thread to access
methods that accessed the variables there is a potential race condition. I
was wondering if this is a known issue, a deliberate choice for some
reason, or if the class is not supposed to be used in a multithreaded
manner, and is intended to be used only within ThreadLocal?

I checked in the master branch of the project and the issue appears to be
present there also.

Thanks

Jon

Reply via email to