You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2020/04/01 22:50:04 UTC

[hbase] branch branch-2.3 updated: Revert "HBASE-24051 Allows indirect inheritance to CanUnbuffer (#1406)"

This is an automated email from the ASF dual-hosted git repository.

stack pushed a commit to branch branch-2.3
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/branch-2.3 by this push:
     new e632739  Revert "HBASE-24051 Allows indirect inheritance to CanUnbuffer (#1406)"
e632739 is described below

commit e6327398bd3b67b51aa4686723e06128e0d9aa0f
Author: stack <st...@apache.org>
AuthorDate: Wed Apr 1 15:49:45 2020 -0700

    Revert "HBASE-24051 Allows indirect inheritance to CanUnbuffer (#1406)"
    
    This reverts commit 34aca9457387023128b3d3879794b9cf0808eb7b.
---
 .../hadoop/hbase/io/FSDataInputStreamWrapper.java  | 25 +++---
 .../hbase/io/TestFSDataInputStreamWrapper.java     | 88 ----------------------
 2 files changed, 14 insertions(+), 99 deletions(-)

diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/FSDataInputStreamWrapper.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/FSDataInputStreamWrapper.java
index 9562f99..989d0aa 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/FSDataInputStreamWrapper.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/FSDataInputStreamWrapper.java
@@ -25,7 +25,6 @@ import java.lang.reflect.Method;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.commons.io.IOUtils;
-import org.apache.hadoop.fs.CanUnbuffer;
 import org.apache.hadoop.fs.FSDataInputStream;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
@@ -332,18 +331,22 @@ public class FSDataInputStreamWrapper implements Closeable {
       if (this.instanceOfCanUnbuffer == null) {
         // To ensure we compute whether the stream is instance of CanUnbuffer only once.
         this.instanceOfCanUnbuffer = false;
-        if(wrappedStream instanceof CanUnbuffer){
-          try {
-            this.unbuffer = streamClass.getDeclaredMethod("unbuffer");
-          } catch (NoSuchMethodException | SecurityException e) {
-            if (isLogTraceEnabled) {
-              LOG.trace("Failed to find 'unbuffer' method in class " + streamClass
-                      + " . So there may be a TCP socket connection "
-                      + "left open in CLOSE_WAIT state.", e);
+        Class<?>[] streamInterfaces = streamClass.getInterfaces();
+        for (Class c : streamInterfaces) {
+          if (c.getCanonicalName().toString().equals("org.apache.hadoop.fs.CanUnbuffer")) {
+            try {
+              this.unbuffer = streamClass.getDeclaredMethod("unbuffer");
+            } catch (NoSuchMethodException | SecurityException e) {
+              if (isLogTraceEnabled) {
+                LOG.trace("Failed to find 'unbuffer' method in class " + streamClass
+                    + " . So there may be a TCP socket connection "
+                    + "left open in CLOSE_WAIT state.", e);
+              }
+              return;
             }
-            return;
+            this.instanceOfCanUnbuffer = true;
+            break;
           }
-          this.instanceOfCanUnbuffer = true;
         }
       }
       if (this.instanceOfCanUnbuffer) {
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/io/TestFSDataInputStreamWrapper.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/io/TestFSDataInputStreamWrapper.java
deleted file mode 100644
index 9b031af..0000000
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/io/TestFSDataInputStreamWrapper.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.hbase.io;
-
-import org.apache.hadoop.fs.CanUnbuffer;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
-import org.apache.hadoop.hbase.testclassification.IOTests;
-import org.apache.hadoop.hbase.testclassification.SmallTests;
-import org.junit.Assert;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.lang.reflect.Method;
-
-@Category({IOTests.class, SmallTests.class})
-public class TestFSDataInputStreamWrapper {
-    private Method unbuffer = null;
-
-    @ClassRule
-    public static final HBaseClassTestRule CLASS_RULE =
-            HBaseClassTestRule.forClass(TestFSDataInputStreamWrapper.class);
-
-
-    @Test
-    public void TestUnbuffer() {
-        InputStream wrappedStream = new SonStream();
-        final Class<? extends InputStream> streamClass = wrappedStream.getClass();
-        Class<?>[] streamInterfaces = streamClass.getInterfaces();
-        for (Class c : streamInterfaces) {
-            if (c.getCanonicalName().toString().equals("org.apache.hadoop.fs.CanUnbuffer")) {
-                try {
-                    this.unbuffer = streamClass.getDeclaredMethod("unbuffer");
-                } catch (NoSuchMethodException | SecurityException e) {
-                    return;
-                }
-                break;
-            }
-        }
-        Assert.assertEquals(false, unbuffer != null);
-        unbuffer = null;
-        if (wrappedStream instanceof CanUnbuffer) {
-            try {
-                this.unbuffer = streamClass.getDeclaredMethod("unbuffer");
-            } catch (NoSuchMethodException | SecurityException e) {
-                return;
-            }
-        }
-        Assert.assertEquals(true, unbuffer != null);
-    }
-
-    public class SonStream extends FatherStream {
-        @Override
-        public void unbuffer() {
-
-        }
-    }
-
-    public class FatherStream extends InputStream implements CanUnbuffer {
-
-        @Override
-        public void unbuffer() {
-
-        }
-
-        @Override
-        public int read() throws IOException {
-            return 0;
-        }
-    }
-}