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:51:31 UTC
[hbase] branch branch-2.2 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.2
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/branch-2.2 by this push:
new d4067c5 Revert "HBASE-24051 Allows indirect inheritance to CanUnbuffer (#1406)"
d4067c5 is described below
commit d4067c59f22bac4a1bb695d58dd06ab4a73d2f56
Author: stack <st...@apache.org>
AuthorDate: Wed Apr 1 15:51:16 2020 -0700
Revert "HBASE-24051 Allows indirect inheritance to CanUnbuffer (#1406)"
This reverts commit b9a53752b528b8c660ec6ad92e971abc61ea648d.
---
.../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 ee302d7..6c73405 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;
@@ -271,18 +270,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;
- }
- }
-}