[
https://issues.apache.org/jira/browse/TRAFODION-2535?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Suresh Subbiah updated TRAFODION-2535:
--------------------------------------
Description:
If more than 32 HFiles are created for a single region of an index or table
during bulkload, then LOAD COMPLETE step will fail. However if snapshot
recovery is not enabled the error is silently ignored and LOAD (or CREATE INDEX
which uses LOAD) statement appears to succeed. But the table or index will be
empty leading to wrong results for subsequent queries.
To reproduce
create table test1 (a int not null primary key, b int not null) salt using 40
partitions;
insert into test1 values
(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10) ;
upsert using load into test1 select a+10, b+10 from test1;
upsert using load into test1 select a+20, b+20 from test1;
upsert using load into test1 select a+40, b+40 from test1;
upsert using load into test1 select a+80, b+80 from test1;
upsert using load into test1 select a+160, b+160 from test1;
upsert using load into test1 select a+320, b+320 from test1;
upsert using load into test1 select a+640, b+640 from test1;
upsert using load into test1 select a+1280, b+1280 from test1;
upsert using load into test1 select a+2560, b+2560 from test1;
upsert using load into test1 select a+5120, b+5120 from test1;
upsert using load into test1 select a+10240, b+10240 from test1;
upsert using load into test1 select a+20480, b+20480 from test1;
upsert using load into test1 select a+40960, b+40960 from test1;
upsert using load into test1 select a+81920, b+81920 from test1;
exit ;
from HBase shell flush 'TRAFODION.SCH.TEST1'
-- new sqlci
cqd HBASE_MIN_BYTES_PER_ESP_PARTITION '10' ;
cqd parallel_num_esps '40' ;
create index ix1 on test1(b) ;
set parserflags 1 ;
select * from table(index_table ix1) ;
-- will have 0 rows when this problem is present.
in logs directory (cdl), trafodion.hdfs.log will have a similar message.
2017-03-14 01:28:29,242 ,ERROR ,mapreduce.LoadIncrementalHFiles ,Trying to load
more than 32 hfiles to family #1 of region with start key
With the fix we get this message in sqlci and index is not created.
>>create index ix1 on test1(b) ;
*** ERROR[8448] Unable to access Hbase interface. Call to
ExpHbaseInterface::doBulkLoad returned error HBASE_DOBULK_LOAD_ERROR(-715).
Cause: java.io.IOException: Trying to load more than 32 hfiles to one family of
one region
org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles.doBulkLoad(LoadIncrementalHFiles.java:377)
org.trafodion.sql.HBulkLoadClient.doSnapshotNBulkLoad(HBulkLoadClient.java:381)
org.trafodion.sql.HBulkLoadClient.doBulkLoad(HBulkLoadClient.java:454).
*** ERROR[1081] Loading of index TRAFODION.SCH.IX1 failed unexpectedly.
*** ERROR[8811] Trying to close a statement that is either not in the open
state or has not reached EOF.
--- SQL operation failed with errors.
>>showddl test1 ;
CREATE TABLE TRAFODION.SCH.TEST1
(
A INT NO DEFAULT NOT NULL NOT DROPPABLE NOT
SERIALIZED
, B INT NO DEFAULT NOT NULL NOT DROPPABLE NOT
SERIALIZED
, PRIMARY KEY (A ASC)
)
SALT USING 40 PARTITIONS
ATTRIBUTES ALIGNED FORMAT
;
-- GRANT SELECT, INSERT, DELETE, UPDATE, REFERENCES ON TRAFODION.SCH.TEST1 TO
DB__ROOT WITH GRANT OPTION;
--- SQL operation complete.
>>exit ;
> Create index succeeds but resulting index is empty, if dop > 32
> ---------------------------------------------------------------
>
> Key: TRAFODION-2535
> URL: https://issues.apache.org/jira/browse/TRAFODION-2535
> Project: Apache Trafodion
> Issue Type: Bug
> Components: sql-exe
> Affects Versions: any
> Reporter: Suresh Subbiah
> Assignee: Suresh Subbiah
> Fix For: 2.2-incubating
>
>
> If more than 32 HFiles are created for a single region of an index or table
> during bulkload, then LOAD COMPLETE step will fail. However if snapshot
> recovery is not enabled the error is silently ignored and LOAD (or CREATE
> INDEX which uses LOAD) statement appears to succeed. But the table or index
> will be empty leading to wrong results for subsequent queries.
> To reproduce
> create table test1 (a int not null primary key, b int not null) salt using 40
> partitions;
> insert into test1 values
> (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10) ;
> upsert using load into test1 select a+10, b+10 from test1;
> upsert using load into test1 select a+20, b+20 from test1;
> upsert using load into test1 select a+40, b+40 from test1;
> upsert using load into test1 select a+80, b+80 from test1;
> upsert using load into test1 select a+160, b+160 from test1;
> upsert using load into test1 select a+320, b+320 from test1;
> upsert using load into test1 select a+640, b+640 from test1;
> upsert using load into test1 select a+1280, b+1280 from test1;
> upsert using load into test1 select a+2560, b+2560 from test1;
> upsert using load into test1 select a+5120, b+5120 from test1;
> upsert using load into test1 select a+10240, b+10240 from test1;
> upsert using load into test1 select a+20480, b+20480 from test1;
> upsert using load into test1 select a+40960, b+40960 from test1;
> upsert using load into test1 select a+81920, b+81920 from test1;
> exit ;
> from HBase shell flush 'TRAFODION.SCH.TEST1'
> -- new sqlci
> cqd HBASE_MIN_BYTES_PER_ESP_PARTITION '10' ;
> cqd parallel_num_esps '40' ;
> create index ix1 on test1(b) ;
> set parserflags 1 ;
> select * from table(index_table ix1) ;
> -- will have 0 rows when this problem is present.
> in logs directory (cdl), trafodion.hdfs.log will have a similar message.
> 2017-03-14 01:28:29,242 ,ERROR ,mapreduce.LoadIncrementalHFiles ,Trying to
> load more than 32 hfiles to family #1 of region with start key
> With the fix we get this message in sqlci and index is not created.
> >>create index ix1 on test1(b) ;
> *** ERROR[8448] Unable to access Hbase interface. Call to
> ExpHbaseInterface::doBulkLoad returned error HBASE_DOBULK_LOAD_ERROR(-715).
> Cause: java.io.IOException: Trying to load more than 32 hfiles to one family
> of one region
> org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles.doBulkLoad(LoadIncrementalHFiles.java:377)
> org.trafodion.sql.HBulkLoadClient.doSnapshotNBulkLoad(HBulkLoadClient.java:381)
> org.trafodion.sql.HBulkLoadClient.doBulkLoad(HBulkLoadClient.java:454).
> *** ERROR[1081] Loading of index TRAFODION.SCH.IX1 failed unexpectedly.
> *** ERROR[8811] Trying to close a statement that is either not in the open
> state or has not reached EOF.
> --- SQL operation failed with errors.
> >>showddl test1 ;
> CREATE TABLE TRAFODION.SCH.TEST1
> (
> A INT NO DEFAULT NOT NULL NOT DROPPABLE NOT
> SERIALIZED
> , B INT NO DEFAULT NOT NULL NOT DROPPABLE NOT
> SERIALIZED
> , PRIMARY KEY (A ASC)
> )
> SALT USING 40 PARTITIONS
> ATTRIBUTES ALIGNED FORMAT
> ;
> -- GRANT SELECT, INSERT, DELETE, UPDATE, REFERENCES ON TRAFODION.SCH.TEST1 TO
> DB__ROOT WITH GRANT OPTION;
> --- SQL operation complete.
> >>exit ;
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)