From 7566d0115dc34073d9f07580ab2400de99bdd250 Mon Sep 17 00:00:00 2001 From: Wei-Chiu Chuang Date: Mon, 25 Mar 2019 13:02:11 +0100 Subject: [PATCH] HBASE-22103 Change-Id: Ib9c15538aa864a0e0bd7631575c5187590c5fb80 --- .../io/asyncfs/FanOutOneBlockAsyncDFSOutputHelper.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputHelper.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputHelper.java index 0e5cf81..f8f5701 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputHelper.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputHelper.java @@ -497,6 +497,18 @@ public final class FanOutOneBlockAsyncDFSOutputHelper { Class.forName("org.apache.hadoop.hdfs.DFSClient$Conf")); } + private static FileCreator createFileCreator3_3() throws NoSuchMethodException { + Method createMethod = ClientProtocol.class.getMethod("create", String.class, FsPermission.class, + String.class, EnumSetWritable.class, boolean.class, short.class, long.class, + CryptoProtocolVersion[].class, String.class, String.class); + + return (instance, src, masked, clientName, flag, createParent, replication, blockSize, + supportedVersions) -> { + return (HdfsFileStatus) createMethod.invoke(instance, src, masked, clientName, flag, + createParent, replication, blockSize, supportedVersions, null, null); + }; + } + private static FileCreator createFileCreator3() throws NoSuchMethodException { Method createMethod = ClientProtocol.class.getMethod("create", String.class, FsPermission.class, String.class, EnumSetWritable.class, boolean.class, short.class, long.class, @@ -523,6 +535,12 @@ public final class FanOutOneBlockAsyncDFSOutputHelper { private static FileCreator createFileCreator() throws NoSuchMethodException { try { + return createFileCreator3_3(); + } catch (NoSuchMethodException e) { + LOG.debug("ClientProtocol::create wrong number of arguments, should be hadoop 3.2 or below"); + } + + try { return createFileCreator3(); } catch (NoSuchMethodException e) { LOG.debug("ClientProtocol::create wrong number of arguments, should be hadoop 2.x"); -- 2.5.3