[ 
https://issues.apache.org/jira/browse/KYLIN-3517?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16608882#comment-16608882
 ] 

ASF GitHub Bot commented on KYLIN-3517:
---------------------------------------

shaofengshi closed pull request #224: KYLIN-3517 Update Coprocessor is 
avaliable for HDP3.0
URL: https://github.com/apache/kylin/pull/224
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/build/deploy/server.xml b/build/deploy/server.xml
index 96f329b8fe..920be253e4 100644
--- a/build/deploy/server.xml
+++ b/build/deploy/server.xml
@@ -26,7 +26,7 @@
     <!--APR library loader. Documentation at /docs/apr.html -->
     <Listener className="org.apache.catalina.core.AprLifecycleListener" 
SSLEngine="on" />
     <!--Initialize Jasper prior to webapps are loaded. Documentation at 
/docs/jasper-howto.html -->
-    <Listener className="org.apache.catalina.core.JasperListener" />
+    <!-- <Listener className="org.apache.catalina.core.JasperListener" /> -->
     <!-- Prevent memory leaks due to use of particular java/javax APIs-->
     <Listener 
className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
     <Listener 
className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
diff --git a/build/script/elimate-jar-conflict.sh 
b/build/script/elimate-jar-conflict.sh
new file mode 100644
index 0000000000..d02a87416e
--- /dev/null
+++ b/build/script/elimate-jar-conflict.sh
@@ -0,0 +1,20 @@
+#!/usr/bin/env bash
+
+current_dir=`pwd`
+cd ${current_dir}/build/tomcat/webapps
+unzip kylin.war && rm -f kylin.war
+cd WEB-INF/lib
+#remove slf4j-api-1.7.21.jar to solve slf4j conflict
+rm -f slf4j-api-1.7.21.jar
+mkdir modify_avatica_jar && mv avatica-1.10.0.jar modify_avatica_jar
+cd modify_avatica_jar
+#remove org/slf4j in avatica-1.10.0.jar and repackage it to solve slf4j 
conflict
+unzip avatica-1.10.0.jar && rm -f avatica-1.10.0.jar
+rm -rf org/slf4j && jar -cf avatica-1.10.0.jar ./
+rm -rf `ls | egrep -v avatica-1.10.0.jar`
+mv avatica-1.10.0.jar ..
+cd .. && rm -rf modify_avatica_jar
+cd ${current_dir}/build/tomcat/webapps
+#repackage kylin.war
+jar -cf kylin.war ./ && rm -rf `ls | egrep -v kylin.war`
+cd ${current_dir}
\ No newline at end of file
diff --git a/build/script/prepare.sh b/build/script/prepare.sh
index deaf58de91..be9dd9d0a8 100755
--- a/build/script/prepare.sh
+++ b/build/script/prepare.sh
@@ -31,6 +31,9 @@ export version
 sh build/script/prepare-libs.sh || { exit 1; }
 
 cp server/target/kylin-server-${version}.war build/tomcat/webapps/kylin.war
+
+sh build/script/elimate-jar-conflict.sh
+
 chmod 644 build/tomcat/webapps/kylin.war
 
 echo "add js css to war"
diff --git 
a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/cube/v2/coprocessor/endpoint/CubeVisitService.java
 
b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/cube/v2/coprocessor/endpoint/CubeVisitService.java
index ded35009da..2beddc7439 100644
--- 
a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/cube/v2/coprocessor/endpoint/CubeVisitService.java
+++ 
b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/cube/v2/coprocessor/endpoint/CubeVisitService.java
@@ -24,6 +24,7 @@
 import java.net.InetAddress;
 import java.nio.BufferOverflowException;
 import java.nio.ByteBuffer;
+import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 
@@ -31,12 +32,11 @@
 import org.apache.commons.lang.ArrayUtils;
 import org.apache.hadoop.hbase.Cell;
 import org.apache.hadoop.hbase.CellUtil;
-import org.apache.hadoop.hbase.Coprocessor;
 import org.apache.hadoop.hbase.CoprocessorEnvironment;
 import org.apache.hadoop.hbase.DoNotRetryIOException;
 import org.apache.hadoop.hbase.client.Scan;
 import org.apache.hadoop.hbase.coprocessor.CoprocessorException;
-import org.apache.hadoop.hbase.coprocessor.CoprocessorService;
+import org.apache.hadoop.hbase.coprocessor.RegionCoprocessor;
 import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;
 import org.apache.hadoop.hbase.regionserver.HRegion;
 import org.apache.hadoop.hbase.regionserver.RegionScanner;
@@ -78,7 +78,7 @@
 
 @SuppressWarnings("unused")
 //used in hbase endpoint
-public class CubeVisitService extends CubeVisitProtos.CubeVisitService 
implements Coprocessor, CoprocessorService {
+public class CubeVisitService extends CubeVisitProtos.CubeVisitService 
implements RegionCoprocessor {
 
     private static final Logger logger = 
LoggerFactory.getLogger(CubeVisitService.class);
     //TODO limit memory footprint
@@ -448,7 +448,7 @@ public void stop(CoprocessorEnvironment env) throws 
IOException {
     }
 
     @Override
-    public Service getService() {
-        return this;
+    public Iterable<Service> getServices() {
+        return Collections.singleton(this);
     }
 }
diff --git 
a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/lookup/LookupTableToHFileJob.java
 
b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/lookup/LookupTableToHFileJob.java
index 054e1466b6..27894010f7 100644
--- 
a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/lookup/LookupTableToHFileJob.java
+++ 
b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/lookup/LookupTableToHFileJob.java
@@ -26,12 +26,12 @@
 import org.apache.commons.lang.StringUtils;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hbase.HBaseConfiguration;
-import org.apache.hadoop.hbase.HColumnDescriptor;
-import org.apache.hadoop.hbase.HTableDescriptor;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.Admin;
+import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;
 import org.apache.hadoop.hbase.client.Connection;
 import org.apache.hadoop.hbase.client.HTable;
+import org.apache.hadoop.hbase.client.TableDescriptorBuilder;
 import org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2;
 import org.apache.hadoop.hbase.regionserver.DisabledRegionSplitPolicy;
 import org.apache.hadoop.hdfs.DFSConfigKeys;
@@ -207,24 +207,24 @@ private void 
removeSnapshotIfExist(ExtTableSnapshotInfoManager extSnapshotInfoMa
         String hTableName = genHTableName(kylinConfig, admin, sourceTableName);
 
         TableName tableName = TableName.valueOf(hTableName);
-        HTableDescriptor hTableDesc = new HTableDescriptor(tableName);
-        hTableDesc.setCompactionEnabled(false);
-        hTableDesc.setValue(HTableDescriptor.SPLIT_POLICY, 
DisabledRegionSplitPolicy.class.getName());
-        hTableDesc.setValue(IRealizationConstants.HTableTag, 
kylinConfig.getMetadataUrlPrefix());
-        hTableDesc.setValue(IRealizationConstants.HTableCreationTime, 
String.valueOf(System.currentTimeMillis()));
+        TableDescriptorBuilder descBuilder = 
TableDescriptorBuilder.newBuilder(tableName);
+        descBuilder.setCompactionEnabled(false);
+        descBuilder.setValue(TableDescriptorBuilder.SPLIT_POLICY, 
DisabledRegionSplitPolicy.class.getName());
+        descBuilder.setValue(IRealizationConstants.HTableTag, 
kylinConfig.getMetadataUrlPrefix());
+        descBuilder.setValue(IRealizationConstants.HTableCreationTime, 
String.valueOf(System.currentTimeMillis()));
         String commitInfo = KylinVersion.getGitCommitInfo();
         if (!StringUtils.isEmpty(commitInfo)) {
-            hTableDesc.setValue(IRealizationConstants.HTableGitTag, 
commitInfo);
+            descBuilder.setValue(IRealizationConstants.HTableGitTag, 
commitInfo);
         }
 
-        HColumnDescriptor cf = CubeHTableUtil.createColumnFamily(kylinConfig, 
HBaseLookupRowEncoder.CF_STRING, false);
-        hTableDesc.addFamily(cf);
+        ColumnFamilyDescriptor cf = 
CubeHTableUtil.createColumnFamily(kylinConfig, HBaseLookupRowEncoder.CF_STRING, 
false);
+        descBuilder.modifyColumnFamily(cf);
 
         try {
             if (shardNum > 1) {
-                admin.createTable(hTableDesc, getSplitsByShardNum(shardNum));
+                admin.createTable(descBuilder.build(), 
getSplitsByShardNum(shardNum));
             } else {
-                admin.createTable(hTableDesc);
+                admin.createTable(descBuilder.build());
             }
         } finally {
             IOUtils.closeQuietly(admin);
diff --git 
a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/CubeHTableUtil.java
 
b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/CubeHTableUtil.java
index f006adb748..9e3703c409 100644
--- 
a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/CubeHTableUtil.java
+++ 
b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/steps/CubeHTableUtil.java
@@ -23,11 +23,12 @@
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HColumnDescriptor;
-import org.apache.hadoop.hbase.HTableDescriptor;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.Admin;
+import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;
+import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;
 import org.apache.hadoop.hbase.client.Connection;
+import org.apache.hadoop.hbase.client.TableDescriptorBuilder;
 import org.apache.hadoop.hbase.io.compress.Compression.Algorithm;
 import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;
 import org.apache.hadoop.hbase.regionserver.BloomType;
@@ -35,6 +36,7 @@
 import org.apache.hadoop.hbase.security.User;
 import org.apache.kylin.common.KylinConfig;
 import org.apache.kylin.common.KylinVersion;
+import org.apache.kylin.common.util.Bytes;
 import org.apache.kylin.cube.CubeInstance;
 import org.apache.kylin.cube.CubeSegment;
 import org.apache.kylin.cube.model.CubeDesc;
@@ -59,25 +61,25 @@ public static void createHTable(CubeSegment cubeSegment, 
byte[][] splitKeys) thr
         CubeDesc cubeDesc = cubeInstance.getDescriptor();
         KylinConfig kylinConfig = cubeDesc.getConfig();
 
-        HTableDescriptor tableDesc = new 
HTableDescriptor(TableName.valueOf(cubeSegment.getStorageLocationIdentifier()));
-        tableDesc.setValue(HTableDescriptor.SPLIT_POLICY, 
DisabledRegionSplitPolicy.class.getName());
-        tableDesc.setValue(IRealizationConstants.HTableTag, 
kylinConfig.getMetadataUrlPrefix());
-        tableDesc.setValue(IRealizationConstants.HTableCreationTime, 
String.valueOf(System.currentTimeMillis()));
+        TableDescriptorBuilder descBuilder = 
TableDescriptorBuilder.newBuilder(TableName.valueOf(cubeSegment.getStorageLocationIdentifier()));
+        descBuilder.setValue(TableDescriptorBuilder.SPLIT_POLICY, 
DisabledRegionSplitPolicy.class.getName());
+        descBuilder.setValue(IRealizationConstants.HTableTag, 
kylinConfig.getMetadataUrlPrefix());
+        descBuilder.setValue(IRealizationConstants.HTableCreationTime, 
String.valueOf(System.currentTimeMillis()));
 
         if (!StringUtils.isEmpty(kylinConfig.getKylinOwner())) {
             //HTableOwner is the team that provides kylin service
-            tableDesc.setValue(IRealizationConstants.HTableOwner, 
kylinConfig.getKylinOwner());
+            descBuilder.setValue(IRealizationConstants.HTableOwner, 
kylinConfig.getKylinOwner());
         }
 
         String commitInfo = KylinVersion.getGitCommitInfo();
         if (!StringUtils.isEmpty(commitInfo)) {
-            tableDesc.setValue(IRealizationConstants.HTableGitTag, commitInfo);
+            descBuilder.setValue(IRealizationConstants.HTableGitTag, 
commitInfo);
         }
 
         //HTableUser is the cube owner, which will be the "user"
-        tableDesc.setValue(IRealizationConstants.HTableUser, 
cubeInstance.getOwner());
+        descBuilder.setValue(IRealizationConstants.HTableUser, 
cubeInstance.getOwner());
 
-        tableDesc.setValue(IRealizationConstants.HTableSegmentTag, 
cubeSegment.toString());
+        descBuilder.setValue(IRealizationConstants.HTableSegmentTag, 
cubeSegment.toString());
 
         Configuration conf = HBaseConnection.getCurrentHBaseConfiguration();
         Connection conn = HBaseConnection.get(kylinConfig.getStorageUrl());
@@ -86,12 +88,12 @@ public static void createHTable(CubeSegment cubeSegment, 
byte[][] splitKeys) thr
         try {
             if (User.isHBaseSecurityEnabled(conf)) {
                 // add coprocessor for bulk load
-                
tableDesc.addCoprocessor("org.apache.hadoop.hbase.security.access.SecureBulkLoadEndpoint");
+                
descBuilder.addCoprocessor("org.apache.hadoop.hbase.security.access.SecureBulkLoadEndpoint");
             }
 
             for (HBaseColumnFamilyDesc cfDesc : 
cubeDesc.getHbaseMapping().getColumnFamily()) {
-                HColumnDescriptor cf = createColumnFamily(kylinConfig, 
cfDesc.getName(), cfDesc.isMemoryHungry());
-                tableDesc.addFamily(cf);
+                ColumnFamilyDescriptor cf = createColumnFamily(kylinConfig, 
cfDesc.getName(), cfDesc.isMemoryHungry());
+                descBuilder.setColumnFamily(cf);
             }
 
             if (admin.tableExists(TableName.valueOf(tableName))) {
@@ -100,9 +102,9 @@ public static void createHTable(CubeSegment cubeSegment, 
byte[][] splitKeys) thr
                 throw new RuntimeException("HBase table " + tableName + " 
exists!");
             }
 
-            DeployCoprocessorCLI.deployCoprocessor(tableDesc);
+            DeployCoprocessorCLI.deployCoprocessor(descBuilder);
 
-            admin.createTable(tableDesc, splitKeys);
+            admin.createTable(descBuilder.build(), splitKeys);
             
Preconditions.checkArgument(admin.isTableAvailable(TableName.valueOf(tableName)),
 "table " + tableName + " created, but is not available due to some reasons");
             logger.info("create hbase table " + tableName + " done.");
         } finally {
@@ -136,14 +138,14 @@ public static void createBenchmarkHTable(TableName 
tableName, String cfName) thr
                 admin.deleteTable(tableName);
             }
 
-            HTableDescriptor tableDesc = new HTableDescriptor(tableName);
-            tableDesc.setValue(HTableDescriptor.SPLIT_POLICY, 
DisabledRegionSplitPolicy.class.getName());
+            TableDescriptorBuilder descBuilder = 
TableDescriptorBuilder.newBuilder(tableName);
+            descBuilder.setValue(TableDescriptorBuilder.SPLIT_POLICY, 
DisabledRegionSplitPolicy.class.getName());
 
             KylinConfig kylinConfig = KylinConfig.getInstanceFromEnv();
-            tableDesc.addFamily(createColumnFamily(kylinConfig, cfName, 
false));
+            descBuilder.modifyColumnFamily(createColumnFamily(kylinConfig, 
cfName, false));
 
             logger.info("creating hbase table " + tableName);
-            admin.createTable(tableDesc, null);
+            admin.createTable(descBuilder.build(), null);
             Preconditions.checkArgument(admin.isTableAvailable(tableName), 
"table " + tableName + " created, but is not available due to some reasons");
             logger.info("create hbase table " + tableName + " done.");
         } finally {
@@ -151,8 +153,8 @@ public static void createBenchmarkHTable(TableName 
tableName, String cfName) thr
         }
     }
 
-    public static HColumnDescriptor createColumnFamily(KylinConfig 
kylinConfig, String cfName, boolean isMemoryHungry) {
-        HColumnDescriptor cf = new HColumnDescriptor(cfName);
+    public static ColumnFamilyDescriptor createColumnFamily(KylinConfig 
kylinConfig, String cfName, boolean isMemoryHungry) {
+        ColumnFamilyDescriptorBuilder cf = 
ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes(cfName));
         cf.setMaxVersions(1);
 
         if (isMemoryHungry) {
@@ -203,7 +205,7 @@ public static HColumnDescriptor 
createColumnFamily(KylinConfig kylinConfig, Stri
         cf.setInMemory(false);
         cf.setBloomFilterType(BloomType.NONE);
         cf.setScope(kylinConfig.getHBaseReplicationScope());
-        return cf;
+        return cf.build();
     }
 
 }
diff --git 
a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/DeployCoprocessorCLI.java
 
b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/DeployCoprocessorCLI.java
index 46363b2a6e..362a105fe6 100644
--- 
a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/DeployCoprocessorCLI.java
+++ 
b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/DeployCoprocessorCLI.java
@@ -41,11 +41,12 @@
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hbase.HConstants;
-import org.apache.hadoop.hbase.HTableDescriptor;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.TableNotFoundException;
 import org.apache.hadoop.hbase.client.Admin;
 import org.apache.hadoop.hbase.client.Connection;
+import org.apache.hadoop.hbase.client.TableDescriptor;
+import org.apache.hadoop.hbase.client.TableDescriptorBuilder;
 import org.apache.kylin.common.KylinConfig;
 import org.apache.kylin.common.KylinVersion;
 import org.apache.kylin.common.util.Bytes;
@@ -178,7 +179,7 @@ private static void printUsageAndExit() {
         }
         logger.info("Commit Information: " + commitInfo);
         for (String tableName : tableNames) {
-            HTableDescriptor tableDesc = 
hbaseAdmin.getTableDescriptor(TableName.valueOf(tableName));
+            TableDescriptor tableDesc = 
hbaseAdmin.getDescriptor(TableName.valueOf(tableName));
             String gitTag = 
tableDesc.getValue(IRealizationConstants.HTableGitTag);
             if (commitInfo.equals(gitTag)) {
                 filteredList.add(tableName);
@@ -249,18 +250,18 @@ private static void printUsageAndExit() {
         return result;
     }
 
-    public static void deployCoprocessor(HTableDescriptor tableDesc) {
+    public static void deployCoprocessor(TableDescriptorBuilder desBuilder) {
         try {
-            initHTableCoprocessor(tableDesc);
-            logger.info("hbase table " + tableDesc.getTableName() + " deployed 
with coprocessor.");
+            initHTableCoprocessor(desBuilder);
+            logger.info("hbase table " + desBuilder.build().getTableName() + " 
deployed with coprocessor.");
 
         } catch (Exception ex) {
-            logger.error("Error deploying coprocessor on " + 
tableDesc.getTableName(), ex);
+            logger.error("Error deploying coprocessor on " + 
desBuilder.build().getTableName(), ex);
             logger.error("Will try creating the table without coprocessor.");
         }
     }
 
-    private static void initHTableCoprocessor(HTableDescriptor desc) throws 
IOException {
+    private static void initHTableCoprocessor(TableDescriptorBuilder 
descBuilder) throws IOException {
         KylinConfig kylinConfig = KylinConfig.getInstanceFromEnv();
         Configuration hconf = HBaseConnection.getCurrentHBaseConfiguration();
         FileSystem fileSystem = FileSystem.get(hconf);
@@ -268,17 +269,18 @@ private static void 
initHTableCoprocessor(HTableDescriptor desc) throws IOExcept
         String localCoprocessorJar = kylinConfig.getCoprocessorLocalJar();
         Path hdfsCoprocessorJar = 
DeployCoprocessorCLI.uploadCoprocessorJar(localCoprocessorJar, fileSystem, 
null);
 
-        DeployCoprocessorCLI.addCoprocessorOnHTable(desc, hdfsCoprocessorJar);
+        DeployCoprocessorCLI.addCoprocessorOnHTable(descBuilder, 
hdfsCoprocessorJar);
     }
 
-    public static void addCoprocessorOnHTable(HTableDescriptor desc, Path 
hdfsCoprocessorJar) throws IOException {
-        logger.info("Add coprocessor on " + desc.getNameAsString());
-        desc.addCoprocessor(CubeEndpointClass, hdfsCoprocessorJar, 1001, null);
+    public static void addCoprocessorOnHTable(TableDescriptorBuilder 
descBuilder, Path hdfsCoprocessorJar) throws IOException {
+        logger.info("Add coprocessor on " + 
descBuilder.build().getTableName().toString());
+        descBuilder.addCoprocessor(CubeEndpointClass, hdfsCoprocessorJar, 
1001, null);
     }
 
     public static boolean resetCoprocessor(String tableName, Admin hbaseAdmin, 
Path hdfsCoprocessorJar) throws IOException {
         KylinConfig kylinConfig = KylinConfig.getInstanceFromEnv();
-        HTableDescriptor desc = 
hbaseAdmin.getTableDescriptor(TableName.valueOf(tableName));
+        TableDescriptor desc = 
hbaseAdmin.getDescriptor(TableName.valueOf(tableName));
+        TableDescriptorBuilder descBuilder = 
TableDescriptorBuilder.newBuilder(desc);
 
         //when the table has migrated from dev env to test(prod) env, the dev 
server
         //should not reset the coprocessor of the table.
@@ -294,30 +296,30 @@ public static boolean resetCoprocessor(String tableName, 
Admin hbaseAdmin, Path
         hbaseAdmin.disableTable(TableName.valueOf(tableName));
 
         while (desc.hasCoprocessor(CubeObserverClassOld2)) {
-            desc.removeCoprocessor(CubeObserverClassOld2);
+            desc = 
descBuilder.removeCoprocessor(CubeObserverClassOld2).build();
         }
         while (desc.hasCoprocessor(CubeEndpointClass)) {
-            desc.removeCoprocessor(CubeEndpointClass);
+            desc = descBuilder.removeCoprocessor(CubeEndpointClass).build();
         }
         while (desc.hasCoprocessor(IIEndpointClass)) {
-            desc.removeCoprocessor(IIEndpointClass);
+            desc = descBuilder.removeCoprocessor(IIEndpointClass).build();
         }
         // remove legacy coprocessor from v1.x
         while (desc.hasCoprocessor(CubeObserverClassOld)) {
-            desc.removeCoprocessor(CubeObserverClassOld);
+            desc = descBuilder.removeCoprocessor(CubeObserverClassOld).build();
         }
         while (desc.hasCoprocessor(IIEndpointClassOld)) {
-            desc.removeCoprocessor(IIEndpointClassOld);
+            desc = descBuilder.removeCoprocessor(IIEndpointClassOld).build();
         }
-        addCoprocessorOnHTable(desc, hdfsCoprocessorJar);
+        addCoprocessorOnHTable(descBuilder, hdfsCoprocessorJar);
 
         // update commit tags
         String commitInfo = KylinVersion.getGitCommitInfo();
         if (!StringUtils.isEmpty(commitInfo)) {
-            desc.setValue(IRealizationConstants.HTableGitTag, commitInfo);
+            descBuilder.setValue(IRealizationConstants.HTableGitTag, 
commitInfo);
         }
 
-        hbaseAdmin.modifyTable(TableName.valueOf(tableName), desc);
+        hbaseAdmin.modifyTable(descBuilder.build());
 
         logger.info("Enable " + tableName);
         hbaseAdmin.enableTable(TableName.valueOf(tableName));
@@ -490,9 +492,9 @@ private static Path getCoprocessorHDFSDir(FileSystem 
fileSystem, KylinConfig con
         HashSet<String> result = new HashSet<String>();
 
         for (String tableName : tableNames) {
-            HTableDescriptor tableDescriptor = null;
+            TableDescriptor tableDescriptor = null;
             try {
-                tableDescriptor = 
hbaseAdmin.getTableDescriptor(TableName.valueOf(tableName));
+                tableDescriptor = 
hbaseAdmin.getDescriptor(TableName.valueOf(tableName));
             } catch (TableNotFoundException e) {
                 logger.warn("Table not found " + tableName, e);
                 continue;


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


> Couldn't update coprocessor on HBase 2.0
> ----------------------------------------
>
>                 Key: KYLIN-3517
>                 URL: https://issues.apache.org/jira/browse/KYLIN-3517
>             Project: Kylin
>          Issue Type: Bug
>          Components: Storage - HBase
>            Reporter: Shaofeng SHI
>            Assignee: Lijun Cao
>            Priority: Major
>
> On HDP 3.0, run update coprocessor, got this error:
>  
> {code:java}
> 2018-08-28 00:24:26,683 ERROR [pool-7-thread-1] util.DeployCoprocessorCLI:383 
> : Error processing KYLIN_O9JRT8XOQ9
> java.lang.UnsupportedOperationException: HTableDescriptor is read-only
> at 
> org.apache.hadoop.hbase.client.ImmutableHTableDescriptor.getDelegateeForModification(ImmutableHTableDescriptor.java:59)
> at 
> org.apache.hadoop.hbase.HTableDescriptor.removeCoprocessor(HTableDescriptor.java:768)
> at 
> org.apache.kylin.storage.hbase.util.DeployCoprocessorCLI.resetCoprocessor(DeployCoprocessorCLI.java:300)
> at 
> org.apache.kylin.storage.hbase.util.DeployCoprocessorCLI$ResetCoprocessorWorker.run(DeployCoprocessorCLI.java:375)
> at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
> at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> at java.lang.Thread.run(Thread.java:745)
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to