You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "churro morales (JIRA)" <ji...@apache.org> on 2014/06/11 00:37:02 UTC

[jira] [Created] (HBASE-11322) SnapshotHFileCleaner makes the wrong check for lastModified time thus causing too many cache refreshes

churro morales created HBASE-11322:
--------------------------------------

             Summary: SnapshotHFileCleaner makes the wrong check for lastModified time thus causing too many cache refreshes
                 Key: HBASE-11322
                 URL: https://issues.apache.org/jira/browse/HBASE-11322
             Project: HBase
          Issue Type: Bug
    Affects Versions: 0.94.19
            Reporter: churro morales
            Assignee: churro morales
            Priority: Critical


In the SnapshotFileCache:
The last modified time is done via this operation:
{code}
this.lastModifiedTime = Math.min(dirStatus.getModificationTime(),
                                     tempStatus.getModificationTime());
{code}

and the check to see if the snapshot directories have been modified:
{code}
// if the snapshot directory wasn't modified since we last check, we are done
    if (dirStatus.getModificationTime() <= lastModifiedTime &&
        tempStatus.getModificationTime() <= lastModifiedTime) {
      return;
    }
{code}

so if the dirStatus and tmpStatus are modified at different times, we will always assume they have been modified and refresh the cache.

In our cluster, this was a huge performance hit.  The cleaner chain fell behind, thus almost filling up dfs and our namenode heap.

Its a simple fix, instead of Math.min we use Math.max for the lastModified, I believe that will be correct.

I'll apply a patch for you guys.





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