[ 
https://issues.apache.org/jira/browse/ASTERIXDB-2329?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Murtadha Hubail resolved ASTERIXDB-2329.
----------------------------------------
    Resolution: Fixed

> Drop Dataverse Throws Resource Not Exists Exception
> ---------------------------------------------------
>
>                 Key: ASTERIXDB-2329
>                 URL: https://issues.apache.org/jira/browse/ASTERIXDB-2329
>             Project: Apache AsterixDB
>          Issue Type: Bug
>          Components: MTD - Metadata
>            Reporter: Chen Luo
>            Assignee: Murtadha Hubail
>            Priority: Critical
>
> Previously I constantly encounter ResourceNotExistException when dropping 
> dataverse. After some digging, I found the problem is caused as follows:
> 1. Start a fresh AsterixDB, and create dataverse/dataset.
> {code}
> drop dataverse test if exists;
> create dataverse test;
> use test;
> create type testType as{id:int};
> create dataset testDS(testType) primary key id;
> create primary index primaryIdx on testDS;
> {code}
> 2. Insert a record.
> {code}
> use test;
> insert into testDS{"id":1};
> {code}
> 3. Shutdown AsterixDB.
> 4. Re-start AsterixDB.
> 5. Drop and recreate the same dataverse.
> {code}
> drop dataverse test if exists;
> create dataverse test;
> use test;
> create type testType as{id:int};
> create dataset testDS(testType) primary key id;
> create primary index primaryIdx on testDS;
> {code}
> Now we can get an exception:
> {code}
> org.apache.hyracks.api.exceptions.HyracksDataException: HYR0055: Resource 
> does not exist for storage/partition_1/test/testDS/0/testDS
>       at 
> org.apache.hyracks.api.exceptions.HyracksDataException.create(HyracksDataException.java:55)
>  ~[classes/:?]
>       at 
> org.apache.asterix.transaction.management.resource.PersistentLocalResourceRepository.delete(PersistentLocalResourceRepository.java:210)
>  ~[classes/:?]
>       at 
> org.apache.hyracks.storage.am.common.build.IndexBuilder.build(IndexBuilder.java:78)
>  ~[classes/:?]
>       at 
> org.apache.hyracks.storage.am.common.dataflow.IndexCreateOperatorNodePushable.initialize(IndexCreateOperatorNodePushable.java:52)
>  ~[classes/:?]
>       at 
> org.apache.hyracks.api.rewriter.runtime.SuperActivityOperatorNodePushable.lambda$runInParallel$0(SuperActivityOperatorNodePushable.java:204)
>  ~[classes/:?]
>       at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
> ~[?:1.8.0_121]
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>  [?:1.8.0_121]
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>  [?:1.8.0_121]
>       at java.lang.Thread.run(Thread.java:745) [?:1.8.0_121]
> {code}
> The root cause seems to be that drop dataverse in step 5 is not executed 
> properly. It suppose to drop all datasets, all indexes associated with the 
> dataverse. However, line 1253 of QueryTranslator returns empty index list 
> (MetadataManager.getDatasetIndexes returns at line 292 because the dataset 
> does not exist in cache), which causes indexes are not dropped properly.



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

Reply via email to