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

Ted Yu commented on HBASE-7268:
-------------------------------

{code}
+   * @return SeqNum, or -1 if there's no value for server name.
{code}
Looks like javadoc update was incomplete.
{code}
+    if (openSeqNum == HConstants.NO_SEQNUM) {
+      if (!r.getRegionInfo().isRootRegion()) {
+        // If we opened non-root region, we should have read some sequence 
number from it.
+        LOG.error("No sequence number found when opening " + 
r.getRegionNameAsString());
+      }
+      openSeqNum = 0;
{code}
Why assigning 0 as seqNum above ?
{code}
+  public long getEarliestMemstoreSeqNum(byte[] encodedRegionName) {
+    cacheFlushLock.lock();
+    try {
+      Long result = lastSeqWritten.get(encodedRegionName);
{code}
lastSeqWritten is ConcurrentSkipListMap, do we need the lock ?
                
> correct local region location cache information can be overwritten w/stale 
> information from an old server
> ---------------------------------------------------------------------------------------------------------
>
>                 Key: HBASE-7268
>                 URL: https://issues.apache.org/jira/browse/HBASE-7268
>             Project: HBase
>          Issue Type: Bug
>    Affects Versions: 0.96.0
>            Reporter: Sergey Shelukhin
>            Assignee: Sergey Shelukhin
>            Priority: Minor
>             Fix For: 0.96.0
>
>         Attachments: HBASE-7268-v0.patch, HBASE-7268-v0.patch, 
> HBASE-7268-v1.patch, HBASE-7268-v2.patch, HBASE-7268-v2-plus-masterTs.patch, 
> HBASE-7268-v2-plus-masterTs.patch, HBASE-7268-v3.patch
>
>
> Discovered via HBASE-7250; related to HBASE-5877.
> Test is writing from multiple threads.
> Server A has region R; client knows that.
> R gets moved from A to server B.
> B gets killed.
> R gets moved by master to server C.
> ~15 seconds later, client tries to write to it (on A?).
> Multiple client threads report from RegionMoved exception processing logic "R 
> moved from C to B", even though such transition never happened (neither in 
> nor before the sequence described below). Not quite sure how the client 
> learned of the transition to C, I assume it's from meta from some other 
> thread...
> Then, put fails (it may fail due to accumulated errors that are not logged, 
> which I am investigating... but the bogus cache update is there 
> nonwithstanding).
> I have a patch but not sure if it works, test still fails locally for yet 
> unknown reason.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to