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;
- }
- }
-}