You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@trafodion.apache.org by "Zhu, Wen-Jun" <we...@esgyn.cn> on 2018/01/02 12:32:55 UTC

Question about metadata table creation

Hi,

Recently I added a field for metadata table seabaseRoutinesDDL in file CmpSeabaseDDLmd.h, which is unrelated here. then I got the following error when I initialize the database in trafci:

SQL>initialize trafodion;

*** ERROR[8448] Unable to access Hbase interface. Call to ExpHbaseInterface::nextRow returned error HBASE_ACCESS_ERROR(-706). Cause: java.util.concurrent.ExecutionException: java.io.IOException: PerformScan error on coprocessor call, scannerID: 0
java.util.concurrent.FutureTask.report(FutureTask.java:122)
java.util.concurrent.FutureTask.get(FutureTask.java:188)
org.trafodion.sql.HTableClient.fetchRows(HTableClient.java:1199) Caused by
java.io.IOException: PerformScan error on coprocessor call, scannerID: 0
org.apache.hadoop.hbase.client.transactional.TransactionalScanner.next(TransactionalScanner.java:249)
org.apache.hadoop.hbase.client.AbstractClientScanner.next(AbstractClientScanner.java:70)
org.trafodion.sql.HTableClient$ScanHelper.call(HTableClient.java:286)
org.trafodion.sql.HTableClient$ScanHelper.call(HTableClient.java:284)
java.util.concurrent.FutureTask.run(FutureTask.java:262)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:622)
java.lang.Thread.run(Thread.java:748) Caused by
com.google.protobuf.ServiceException: Error calling method TrxRegionService.performScan
org.apache.hadoop.hbase.ipc.CoprocessorRpcChannel.callBlockingMethod(CoprocessorRpcChannel.java:75)
org.apache.hadoop.hbase.coprocessor.transactional.generated.TrxRegionProtos$TrxRegionService$BlockingStub.performScan(TrxRegionProtos.java:50273)
org.apache.hadoop.hbase.client.transactional.TransactionalScanner.next(TransactionalScanner.java:244)
org.apache.hadoop.hbase.client.AbstractClientScanner.next(AbstractClientScanner.java:70)
org.trafodion.sql.HTableClient$ScanHelper.call(HTableClient.java:286)
org.trafodion.sql.HTableClient$ScanHelper.call(HTableClient.java:284)
java.util.concurrent.FutureTask.run(FutureTask.java:262)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:622)
java.lang.Thread.run(Thread.java:748) Caused by
org.apache.hadoop.hbase.DoNotRetryIOException: org.apache.hadoop.hbase.DoNotRetryIOException: java.lang.NoClassDefFoundError: Could not initialize class org.apache.hadoop.hbase.coprocessor.transactional.generated.TrxRegionProtos$PerformScanRequest
        at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2212)
        at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:109)
        at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:133)
        at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:108)
        at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.apache.hadoop.hbase.coprocessor.transactional.generated.TrxRegionProtos$PerformScanRequest
        at org.apache.hadoop.hbase.coprocessor.transactional.generated.TrxRegionProtos$TrxRegionService.getRequestPrototype(TrxRegionProtos.java:49210)
        at org.apache.hadoop.hbase.regionserver.HRegion.execService(HRegion.java:7786)
        at org.apache.hadoop.hbase.regionserver.RSRpcServices.execServiceOnRegion(RSRpcServices.java:1988)
        at org.apache.hadoop.hbase.regionserver.RSRpcServices.execService(RSRpcServices.java:1970)
        at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:33652)
        at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2170)
        ... 4 more

sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
java.lang.reflect.Constructor.newInstance(Constructor.java:526)
org.apache.hadoop.ipc.RemoteException.instantiateException(RemoteException.java:106)
org.apache.hadoop.ipc.RemoteException.unwrapRemoteException(RemoteException.java:95)
org.apache.hadoop.hbase.protobuf.ProtobufUtil.getRemoteException(ProtobufUtil.java:327)
org.apache.hadoop.hbase.protobuf.ProtobufUtil.execService(ProtobufUtil.java:1624)
org.apache.hadoop.hbase.ipc.RegionCoprocessorRpcChannel$1.call(RegionCoprocessorRpcChannel.java:92)
org.apache.hadoop.hbase.ipc.RegionCoprocessorRpcChannel$1.call(RegionCoprocessorRpcChannel.java:89)
org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:126)
org.apache.hadoop.hbase.ipc.RegionCoprocessorRpcChannel.callExecService(RegionCoprocessorRpcChannel.java:95)
org.apache.hadoop.hbase.ipc.CoprocessorRpcChannel.callBlockingMethod(CoprocessorRpcChannel.java:73)
org.apache.hadoop.hbase.coprocessor.transactional.generated.TrxRegionProtos$TrxRegionService$BlockingStub.performScan(TrxRegionProtos.java:50273)
org.apache.hadoop.hbase.client.transactional.TransactionalScanner.next(TransactionalScanner.java:244)
org.apache.hadoop.hbase.client.AbstractClientScanner.next(AbstractClientScanner.java:70)
org.trafodion.sql.HTableClient$ScanHelper.call(HTableClient.java:286)
org.trafodion.sql.HTableClient$ScanHelper.call(HTableClient.java:284)
java.util.concurrent.FutureTask.run(FutureTask.java:262)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:622)
java.lang.Thread.run(Thread.java:748) Caused by
org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.DoNotRetryIOException): org.apache.hadoop.hbase.DoNotRetryIOException: java.lang.NoClassDefFoundError: Could not initialize class org.apache.hadoop.hbase.coprocessor.transactional.generated.TrxRegionProtos$PerformScanRequest
        at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2212)
        at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:109)
        at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:133)
        at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:108)
        at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.apache.hadoop.hbase.coprocessor.transactional.generated.TrxRegionProtos$PerformScanRequest
        at org.apache.hadoop.hbase.coprocessor.transactional.generated.TrxRegionProtos$TrxRegionService.getRequestPrototype(TrxRegionProtos.java:49210)
        at org.apache.hadoop.hbase.regionserver.HRegion.execService(HRegion.java:7786)
        at org.apache.hadoop.hbase.regionserver.RSRpcServices.execServiceOnRegion(RSRpcServices.java:1988)
        at org.apache.hadoop.hbase.regionserver.RSRpcServices.execService(RSRpcServices.java:1970)
        at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:33652)
        at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2170)
        ... 4 more

org.apache.hadoop.hbase.ipc.RpcClientImpl.call(RpcClientImpl.java:1268)
org.apache.hadoop.hbase.ipc.AbstractRpcClient.callBlockingMethod(AbstractRpcClient.java:226)
org.apache.hadoop.hbase.ipc.AbstractRpcClient$BlockingRpcChannelImplementation.callBlockingMethod(AbstractRpcClient.java:331)
org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$BlockingStub.execService(ClientProtos.java:34118)
org.apache.hadoop.hbase.protobuf.ProtobufUtil.execService(ProtobufUtil.java:1620)
org.apache.hadoop.hbase.ipc.RegionCoprocessorRpcChannel$1.call(RegionCoprocessorRpcChannel.java:92)
org.apache.hadoop.hbase.ipc.RegionCoprocessorRpcChannel$1.call(RegionCoprocessorRpcChannel.java:89)
org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:126)
org.apache.hadoop.hbase.ipc.RegionCoprocessorRpcChannel.callExecService(RegionCoprocessorRpcChannel.java:95)
org.apache.hadoop.hbase.ipc.CoprocessorRpcChannel.callBlockingMethod(CoprocessorRpcChannel.java:73)
org.apache.hadoop.hbase.coprocessor.transactional.generated.TrxRegionProtos$TrxRegionService$BlockingStub.performScan(TrxRegionProtos.java:50273)
org.apache.hadoop.hbase.client.transactional.TransactionalScanner.next(TransactionalScanner.java:244)
org.apache.hadoop.hbase.client.AbstractClientScanner.next(AbstractClientScanner.java:70)
org.trafodion.sql.HTableClient$ScanHelper.call(HTableClient.java:286)
org.trafodion.sql.HTableClient$ScanHelper.call(HTableClient.java:284)
java.util.concurrent.FutureTask.run(FutureTask.java:262)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:622)
java.lang.Thread.run(Thread.java:748). [2018-01-02 16:55:15]
*** ERROR[8448] Unable to access Hbase interface. Call to ExpHbaseInterface::scanOpen returned error HBASE_OPEN_ERROR(-704). Cause: org.apache.hadoop.hbase.TableNotFoundException: TRAFODION._MD_.AUTHS
org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegionInMeta(ConnectionManager.java:1404)
org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegion(ConnectionManager.java:1199)
org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegion(ConnectionManager.java:1179)
org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegion(ConnectionManager.java:1136)
org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.getRegionLocation(ConnectionManager.java:971)
org.apache.hadoop.hbase.client.HRegionLocator.getRegionLocation(HRegionLocator.java:83)
org.apache.hadoop.hbase.client.HTable.getRegionLocation(HTable.java:569)
org.apache.hadoop.hbase.client.transactional.TransactionalTable.getRegionLocation(TransactionalTable.java:1115)
org.apache.hadoop.hbase.client.transactional.RMInterface.registerTransaction(RMInterface.java:349)
org.apache.hadoop.hbase.client.transactional.RMInterface.registerTransaction(RMInterface.java:393)
org.apache.hadoop.hbase.client.transactional.RMInterface.getScanner(RMInterface.java:592)
org.trafodion.sql.HTableClient.startScan(HTableClient.java:997). [2018-01-02 16:55:15]
*** ERROR[8448] Unable to access Hbase interface. Call to ExpHbaseInterface::scanOpen returned error HBASE_OPEN_ERROR(-704). Cause: org.apache.hadoop.hbase.TableNotFoundException: TRAFODION._MD_.OBJECTS_UNIQ_IDX
org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegionInMeta(ConnectionManager.java:1404)
org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegion(ConnectionManager.java:1199)
org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.relocateRegion(ConnectionManager.java:1166)
org.apache.hadoop.hbase.client.RpcRetryingCallerWithReadReplicas.getRegionLocations(RpcRetryingCallerWithReadReplicas.java:303)
org.apache.hadoop.hbase.client.ScannerCallable.prepare(ScannerCallable.java:153)
org.apache.hadoop.hbase.client.ScannerCallableWithReplicas$RetryingRPC.prepare(ScannerCallableWithReplicas.java:372)
org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:124)
org.apache.hadoop.hbase.client.ResultBoundedCompletionService$QueueingFuture.run(ResultBoundedCompletionService.java:65)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:622)
java.lang.Thread.run(Thread.java:748). [2018-01-02 16:55:15]

and then I checked the table TRAFODION._MD_.OBJECT_UNIQ_IDX on other's database, and I found none.
But there is a index with the same name for metadata table TRAFODION._MD_.OBJECTS in CmpSeabaseDDLmd.h.

static const QString seabaseObjectsUniqIdxIndexDDL[] =
{
  {" create unique index " SEABASE_OBJECTS_UNIQ_IDX" on " TRAFODION_SYSCAT_LIT".\"" SEABASE_MD_SCHEMA"\"." SEABASE_OBJECTS" "},
  {" ( "},
  {"   object_uid "},
  {" ) "},
  {" attribute hbase format "},
  {" ; "}
};

static const QString seabaseObjectsUniqIdxDDL[] =
{
  {" create table " SEABASE_OBJECTS_UNIQ_IDX" "},
  {" ( "},
  {"   \"OBJECT_UID@\" largeint not null not serialized, "},
  {"   catalog_name varchar(256 bytes) character set utf8 not null not serialized, "},
  {"   schema_name varchar(256 bytes) character set utf8 not null not serialized, "},
  {"   object_name varchar(256 bytes) character set utf8 not null not serialized, "},
  {"   object_type char(2) character set iso88591 not null not serialized "},
  {" ) "},
  {" primary key (\"OBJECT_UID@\") "},
  {" attribute hbase format "},
  {" ; "}
};

In the source code, I found that there is a table and a index, with the same name, is that correct?
But in trafci, they cannot be created with identical name.


Back to the the initialization issue, before my adding the field, it is all right. So I guess have I broke some procedure?
like there is a order in metadata table creation, and one failed, causing the following failing, and absent.
If so, is the order that in array allMDtablesInfo? How can I check the result of each creation, i.e. success or failure?

Thanks.

---
Regards,
Wenjun Zhu.