Description
1) Start the HBase server with 4.15.0 Phoenix
2) Connect with a 4.15.0 client
3) Create a base table and a view on top of the base table and create an index on top of this view:
CREATE TABLE IF NOT EXISTS Z_BASE_TABLE (ID INTEGER NOT NULL PRIMARY KEY, HOST VARCHAR(10), FLAG BOOLEAN); CREATE VIEW Z_VIEW1 (col1 INTEGER, col2 INTEGER, col3 INTEGER, col4 INTEGER, col5 INTEGER) AS SELECT * FROM Z_BASE_TABLE WHERE ID>10; CREATE INDEX V_I ON Z_VIEW1(COL4);
4) Drop the base table with the cascade option:
DROP TABLE Z_BASE_TABLE CASCADE;
5) DropChildViewsTask gets added to the SYSTEM.TASK table as expected, but when it gets scheduled and subsequently executed, it fails with the following exception:
2019-10-24 22:44:34,214 ERROR [pool-121-thread-1] tasks.DropChildViewsTask: Exception while dropping a child view task. null.Z_BASE_TABLE with tenant id IS NULL and timestamp 292278994-08-16 23:12:55.807 org.apache.phoenix.exception.PhoenixIOException: Z_BASE_TABLE at org.apache.phoenix.query.ConnectionQueryServicesImpl.flushTable(ConnectionQueryServicesImpl.java:4442) at org.apache.phoenix.query.ConnectionQueryServicesImpl.flushParentPhysicalTable(ConnectionQueryServicesImpl.java:1922) at org.apache.phoenix.query.ConnectionQueryServicesImpl.dropTable(ConnectionQueryServicesImpl.java:1888) at org.apache.phoenix.schema.MetaDataClient.dropTable(MetaDataClient.java:3152) at org.apache.phoenix.schema.MetaDataClient.dropTable(MetaDataClient.java:3060) at org.apache.phoenix.util.ViewUtil.dropChildViews(ViewUtil.java:207) at org.apache.phoenix.coprocessor.tasks.DropChildViewsTask.run(DropChildViewsTask.java:60) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.phoenix.coprocessor.TaskRegionObserver$SelfHealingTask.run(TaskRegionObserver.java:204) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: org.apache.hadoop.hbase.TableNotFoundException: Z_BASE_TABLE at org.apache.hadoop.hbase.client.HBaseAdmin.checkTableExists(HBaseAdmin.java:2863) at org.apache.hadoop.hbase.client.HBaseAdmin.flush(HBaseAdmin.java:1904) at org.apache.hadoop.hbase.client.HBaseAdmin.flush(HBaseAdmin.java:1949) at org.apache.phoenix.query.ConnectionQueryServicesImpl.flushTable(ConnectionQueryServicesImpl.java:4440) ... 18 more
Note that this marks the DropChildViews task for the base table as failed and so if the base table has any other views, those views will also not be dropped.
Attachments
Attachments
Issue Links
- links to