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

Nick Dimiduk commented on HBASE-13378:
--------------------------------------

>From server.org

bq. 3. PATCH version when you make backwards-compatible bug fixes

and

bq. 6. Patch version Z (x.y.Z | x > 0) MUST be incremented if only backwards 
compatible bug fixes are introduced. A bug fix is defined as an internal change 
that fixes incorrect behavior.

Was the pervious behavior incorrect? I think this is a performance enhancement 
that changes behavior in a backward-incompatible way. Someone depending on 
READ_UNCOMMITTED scanners to record the readpoint will need to deploy different 
versions of their code to run on, say 1.1.0 and 1.1.1. I think that means it's 
not compatible for a patch release. For instance, if Phoenix was depending on 
this behavior, we would reject this change as a patch release, but I think it 
would be accepted for for a minor release.

READ_UNCOMMITTED is probably not a widely used feature, but it is a publicly 
available feature. I think the semantics of our operations are just as precious 
as our APIs. To be on the safe side, I'd prefer this go into branch-1 but not 
branch-1.0 or branch-1.1.

> RegionScannerImpl synchronized for READ_UNCOMMITTED Isolation Levels
> --------------------------------------------------------------------
>
>                 Key: HBASE-13378
>                 URL: https://issues.apache.org/jira/browse/HBASE-13378
>             Project: HBase
>          Issue Type: New Feature
>            Reporter: John Leach
>            Assignee: John Leach
>            Priority: Minor
>         Attachments: HBASE-13378.patch, HBASE-13378.txt
>
>   Original Estimate: 2h
>          Time Spent: 2h
>  Remaining Estimate: 0h
>
> This block of code below coupled with the close method could be changed so 
> that READ_UNCOMMITTED does not synchronize.  
> {CODE:JAVA}
>       // synchronize on scannerReadPoints so that nobody calculates
>       // getSmallestReadPoint, before scannerReadPoints is updated.
>       IsolationLevel isolationLevel = scan.getIsolationLevel();
>       synchronized(scannerReadPoints) {
>         this.readPt = getReadpoint(isolationLevel);
>         scannerReadPoints.put(this, this.readPt);
>       }
> {CODE}
> This hotspots for me under heavy get requests.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to