HBase
  1. HBase
  2. HBASE-6691

HFile quarantine fails with missing files in hadoop 2.0

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 0.95.2
    • Fix Version/s: 0.95.0
    • Component/s: hadoop2, hbck
    • Labels:
      None
    • Hadoop Flags:
      Reviewed

      Description

      Trunk/0.96 has a specific issue mentioned in HBASE-6686 when run against hadoop 2.0. This addresses this problem.

      2012-08-29 12:55:26,031 ERROR [IPC Server handler 0 on 41070] security.UserGroupInformation(1235): PriviledgedActionException as:jon (auth:SIMPLE) cause:java.io.FileNotFoundException: File does not exist: /user/jon/hbase/testQuarantineMissingHFile/4332ea87d02d33e443550537722ff4fc/fam/befbe65ff30e4a46866f04a5671f0e44
      2012-08-29 12:55:26,085 WARN  [Thread-2994] hbck.HFileCorruptionChecker(253): Failed to quaratine an HFile in regiondir hdfs://localhost:41070/user/jon/hbase/testQuarantineMissingHFile/4332ea87d02d33e443550537722ff4fc
      java.lang.reflect.UndeclaredThrowableException
      	at $Proxy23.getBlockLocations(Unknown Source)
      	at org.apache.hadoop.hdfs.DFSClient.callGetBlockLocations(DFSClient.java:882)
      	at org.apache.hadoop.hdfs.DFSInputStream.fetchLocatedBlocksAndGetLastBlockLength(DFSInputStream.java:152)
      	at org.apache.hadoop.hdfs.DFSInputStream.openInfo(DFSInputStream.java:119)
      	at org.apache.hadoop.hdfs.DFSInputStream.<init>(DFSInputStream.java:112)
      	at org.apache.hadoop.hdfs.DFSClient.open(DFSClient.java:955)
      	at org.apache.hadoop.hdfs.DistributedFileSystem.open(DistributedFileSystem.java:212)
      	at org.apache.hadoop.hdfs.DistributedFileSystem.open(DistributedFileSystem.java:75)
      	at org.apache.hadoop.fs.FileSystem.open(FileSystem.java:664)
      	at org.apache.hadoop.hbase.io.hfile.HFile.createReaderWithEncoding(HFile.java:575)
      	at org.apache.hadoop.hbase.io.hfile.HFile.createReader(HFile.java:605)
      	at org.apache.hadoop.hbase.util.hbck.HFileCorruptionChecker.checkHFile(HFileCorruptionChecker.java:94)
      	at org.apache.hadoop.hbase.util.TestHBaseFsck$1$1.checkHFile(TestHBaseFsck.java:1401)
      	at org.apache.hadoop.hbase.util.hbck.HFileCorruptionChecker.checkColFamDir(HFileCorruptionChecker.java:175)
      	at org.apache.hadoop.hbase.util.hbck.HFileCorruptionChecker.checkRegionDir(HFileCorruptionChecker.java:208)
      	at org.apache.hadoop.hbase.util.hbck.HFileCorruptionChecker$RegionDirChecker.call(HFileCorruptionChecker.java:290)
      	at org.apache.hadoop.hbase.util.hbck.HFileCorruptionChecker$RegionDirChecker.call(HFileCorruptionChecker.java:281)
      	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
      	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
      	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
      	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
      	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      	at java.lang.Thread.run(Thread.java:662)
      Caused by: java.lang.reflect.InvocationTargetException
      	at sun.reflect.GeneratedMethodAccessor27.invoke(Unknown Source)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      	at java.lang.reflect.Method.invoke(Method.java:597)
      	at org.apache.hadoop.hbase.fs.HFileSystem$1.invoke(HFileSystem.java:261)
      	... 27 more
      Caused by: java.io.FileNotFoundException: File does not exist: /user/jon/hbase/testQuarantineMissingHFile/4332ea87d02d33e443550537722ff4fc/fam/befbe65ff30e4a46866f04a5671f0e44
      	at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocationsUpdateTimes(FSNamesystem.java:1133)
      	at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocations(FSNamesystem.java:1095)
      	at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocations(FSNamesystem.java:1067)
      	at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.getBlockLocations(NameNodeRpcServer.java:384)
      	at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.getBlockLocations(ClientNamenodeProtocolServerSideTranslatorPB.java:165)
      	at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java:42586)
      	at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:427)
      	at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:916)
      	at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1692)
      	at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1688)
      	at java.security.AccessController.doPrivileged(Native Method)
      	at javax.security.auth.Subject.doAs(Subject.java:396)
      	at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1232)
      	at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1686)
      
      	at org.apache.hadoop.ipc.Client.call(Client.java:1161)
      	at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:184)
      	at $Proxy17.getBlockLocations(Unknown Source)
      	at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      	at java.lang.reflect.Method.invoke(Method.java:597)
      	at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:165)
      	at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:84)
      	at $Proxy17.getBlockLocations(Unknown Source)
      	at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.getBlockLocations(ClientNamenodeProtocolTranslatorPB.java:149)
      	... 31 more
      
      1. hbase-6691-v2.patch
        3 kB
        Jonathan Hsieh
      2. 6691.patch
        3 kB
        Jonathan Hsieh

        Issue Links

          Activity

          Hide
          Jonathan Hsieh added a comment -

          This patch follows the pattern of other invoke calls catching and unwrapping InvocationTargetExceptions if they are of known types. TestHBaseFsck::testQuarantineMissingHFile now passes against hadoop 2.0.

          Currently letting this bot run against 1.0, and having local run running against hadoop 2.0

          Show
          Jonathan Hsieh added a comment - This patch follows the pattern of other invoke calls catching and unwrapping InvocationTargetExceptions if they are of known types. TestHBaseFsck::testQuarantineMissingHFile now passes against hadoop 2.0. Currently letting this bot run against 1.0, and having local run running against hadoop 2.0
          Hide
          Hadoop QA added a comment -

          -1 overall. Here are the results of testing the latest attachment
          http://issues.apache.org/jira/secure/attachment/12543012/6691.patch
          against trunk revision .

          +1 @author. The patch does not contain any @author tags.

          -1 tests included. The patch doesn't appear to include any new or modified tests.
          Please justify why no new tests are needed for this patch.
          Also please list what manual steps were performed to verify this patch.

          +1 hadoop2.0. The patch compiles against the hadoop 2.0 profile.

          -1 javadoc. The javadoc tool appears to have generated 110 warning messages.

          -1 javac. The applied patch generated 5 javac compiler warnings (more than the trunk's current 4 warnings).

          -1 findbugs. The patch appears to introduce 9 new Findbugs (version 1.3.9) warnings.

          +1 release audit. The applied patch does not increase the total number of release audit warnings.

          +1 core tests. The patch passed unit tests in .

          Test results: https://builds.apache.org/job/PreCommit-HBASE-Build/2734//testReport/
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/2734//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop2-compat.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/2734//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop1-compat.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/2734//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-common.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/2734//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop-compat.html
          Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/2734//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-server.html
          Console output: https://builds.apache.org/job/PreCommit-HBASE-Build/2734//console

          This message is automatically generated.

          Show
          Hadoop QA added a comment - -1 overall. Here are the results of testing the latest attachment http://issues.apache.org/jira/secure/attachment/12543012/6691.patch against trunk revision . +1 @author. The patch does not contain any @author tags. -1 tests included. The patch doesn't appear to include any new or modified tests. Please justify why no new tests are needed for this patch. Also please list what manual steps were performed to verify this patch. +1 hadoop2.0. The patch compiles against the hadoop 2.0 profile. -1 javadoc. The javadoc tool appears to have generated 110 warning messages. -1 javac. The applied patch generated 5 javac compiler warnings (more than the trunk's current 4 warnings). -1 findbugs. The patch appears to introduce 9 new Findbugs (version 1.3.9) warnings. +1 release audit. The applied patch does not increase the total number of release audit warnings. +1 core tests. The patch passed unit tests in . Test results: https://builds.apache.org/job/PreCommit-HBASE-Build/2734//testReport/ Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/2734//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop2-compat.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/2734//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop1-compat.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/2734//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-common.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/2734//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop-compat.html Findbugs warnings: https://builds.apache.org/job/PreCommit-HBASE-Build/2734//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-server.html Console output: https://builds.apache.org/job/PreCommit-HBASE-Build/2734//console This message is automatically generated.
          Hide
          Jonathan Hsieh added a comment -

          Against hadoop 2, all tests eventually pass except for known bad TestImportExport and TestImportTsv. TestMasterNoCluster and TestHCM had flakies against 2.0.

          Show
          Jonathan Hsieh added a comment - Against hadoop 2, all tests eventually pass except for known bad TestImportExport and TestImportTsv. TestMasterNoCluster and TestHCM had flakies against 2.0.
          Hide
          Jonathan Hsieh added a comment -

          Can someone take a look? Otherwise, I'll commit over the weekend if there are no comments.

          Show
          Jonathan Hsieh added a comment - Can someone take a look? Otherwise, I'll commit over the weekend if there are no comments.
          Hide
          Jimmy Xiang added a comment - - edited

          If cause is UndeclaredThrowableException, could cause.getCause() be null?
          If so, it is better to move this before checking if cause is null; otherwise, it is fine with me.

          +                  if (cause != null && cause instanceof UndeclaredThrowableException) {
          +                    cause = cause.getCause();
          +                  }
          +                  if (cause == null){
          +                    throw new RuntimeException(
          +                      "Proxy invocation failed and getCause is null", e);
          +                  }
          
          Show
          Jimmy Xiang added a comment - - edited If cause is UndeclaredThrowableException, could cause.getCause() be null? If so, it is better to move this before checking if cause is null; otherwise, it is fine with me. + if (cause != null && cause instanceof UndeclaredThrowableException) { + cause = cause.getCause(); + } + if (cause == null){ + throw new RuntimeException( + "Proxy invocation failed and getCause is null", e); + }
          Hide
          Jonathan Hsieh added a comment -

          Addressed Jimmy's issue.

          Show
          Jonathan Hsieh added a comment - Addressed Jimmy's issue.
          Hide
          Jonathan Hsieh added a comment -

          Updated to be fixed the way jimmy suggested. Test passes.

          Show
          Jonathan Hsieh added a comment - Updated to be fixed the way jimmy suggested. Test passes.
          Hide
          Jimmy Xiang added a comment -

          +1

          Show
          Jimmy Xiang added a comment - +1
          Hide
          Jonathan Hsieh added a comment -

          Thanks for the review jimmy. committed to trunk.

          Show
          Jonathan Hsieh added a comment - Thanks for the review jimmy. committed to trunk.
          Hide
          Hudson added a comment -

          Integrated in HBase-TRUNK #3301 (See https://builds.apache.org/job/HBase-TRUNK/3301/)
          HBASE-6691 HFile quarantine fails with missing files in hadoop 2.0 (Revision 1380790)

          Result = FAILURE
          jmhsieh :
          Files :

          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/fs/HFileSystem.java
          Show
          Hudson added a comment - Integrated in HBase-TRUNK #3301 (See https://builds.apache.org/job/HBase-TRUNK/3301/ ) HBASE-6691 HFile quarantine fails with missing files in hadoop 2.0 (Revision 1380790) Result = FAILURE jmhsieh : Files : /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/fs/HFileSystem.java
          Hide
          Hudson added a comment -

          Integrated in HBase-TRUNK-on-Hadoop-2.0.0 #159 (See https://builds.apache.org/job/HBase-TRUNK-on-Hadoop-2.0.0/159/)
          HBASE-6691 HFile quarantine fails with missing files in hadoop 2.0 (Revision 1380790)

          Result = FAILURE
          jmhsieh :
          Files :

          • /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/fs/HFileSystem.java
          Show
          Hudson added a comment - Integrated in HBase-TRUNK-on-Hadoop-2.0.0 #159 (See https://builds.apache.org/job/HBase-TRUNK-on-Hadoop-2.0.0/159/ ) HBASE-6691 HFile quarantine fails with missing files in hadoop 2.0 (Revision 1380790) Result = FAILURE jmhsieh : Files : /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/fs/HFileSystem.java
          Hide
          stack added a comment -

          Marking closed.

          Show
          stack added a comment - Marking closed.

            People

            • Assignee:
              Jonathan Hsieh
              Reporter:
              Jonathan Hsieh
            • Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development