[ 
https://issues.apache.org/jira/browse/HBASE-10294?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13870729#comment-13870729
 ] 

stack commented on HBASE-10294:
-------------------------------

-1

Without the synchronization you increase the incidence during which a view of 
the Map can happen while it is in the midst of being modified (synchronization 
on object is distinct from how concurrenthashmap achieves its internal 
concurrency).

What speedup or 'fix' is provided by this patch in a rarely used method?  Why 
disturb important code that does not seem to be broken?

bq. Note: not all accesses to ServerManager#onlineServers are synchronized.

Why not fix the above -- rule whether or not the synchronization is needed (it 
looks like it is) -- and act on it rather than add to the uncertainty on 
onlineServers uncertainty.

> Some synchronization on ServerManager#onlineServers can be removed
> ------------------------------------------------------------------
>
>                 Key: HBASE-10294
>                 URL: https://issues.apache.org/jira/browse/HBASE-10294
>             Project: HBase
>          Issue Type: Task
>            Reporter: Ted Yu
>            Assignee: Ted Yu
>            Priority: Minor
>             Fix For: 0.99.0
>
>         Attachments: 10294-v1.txt
>
>
> ServerManager#onlineServers is a ConcurrentHashMap
> Yet I found that some accesses to it are synchronized and unnecessary.
> Here is one example:
> {code}
>   public Map<ServerName, ServerLoad> getOnlineServers() {
>     // Presumption is that iterating the returned Map is OK.
>     synchronized (this.onlineServers) {
>       return Collections.unmodifiableMap(this.onlineServers);
> {code}
> Note: not all accesses to ServerManager#onlineServers are synchronized.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to