hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lars Hofhansl (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-11232) Region fail to release the updatelock for illegal CF in multi row mutations
Date Sat, 23 Aug 2014 04:39:11 GMT

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

Lars Hofhansl commented on HBASE-11232:
---------------------------------------

So the test passes even when I do apply the other changes, so it does not test this condition.

I also looked at the current code and appears to no longer have this issue. The issue was
that in the finally block we try to rollback the memstore, and then that would fail. Now I
see we have a memstoreUpdated flag, which can only be set to true after we successfully checked
all families.

All is good.

With this I will only commit the test, which is nice.

> Region fail to release the updatelock for illegal CF in multi row mutations
> ---------------------------------------------------------------------------
>
>                 Key: HBASE-11232
>                 URL: https://issues.apache.org/jira/browse/HBASE-11232
>             Project: HBase
>          Issue Type: Bug
>          Components: regionserver
>    Affects Versions: 0.94.19
>            Reporter: Liu Shaohui
>            Assignee: Liu Shaohui
>             Fix For: 0.94.23
>
>         Attachments: HBASE-11232-0.94.diff
>
>
> The failback code in processRowsWithLocks did not check the column family. If there is
an illegal CF in the muation, it will  throw NullPointException and the update lock will not
be released.  So the region can not be flushed and compacted. 
> HRegion #4946
> {code}
>         if (!mutations.isEmpty() && !walSyncSuccessful) {
>           LOG.warn("Wal sync failed. Roll back " + mutations.size() +
>               " memstore keyvalues for row(s):" +
>               processor.getRowsToLock().iterator().next() + "...");
>           for (KeyValue kv : mutations) {
>             stores.get(kv.getFamily()).rollback(kv);
>           }
>         }
>         // 11. Roll mvcc forward
>         if (writeEntry != null) {
>           mvcc.completeMemstoreInsert(writeEntry);
>           writeEntry = null;
>         }
>         if (locked) {
>           this.updatesLock.readLock().unlock();
>           locked = false;
>         }
> {code}



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Mime
View raw message