Details
-
Bug
-
Resolution: Fixed
-
Critical
-
Morpheus
-
Untriaged
-
1
-
No
-
CX Sprint 285, CX Sprint 286
Description
When a remote link and a connected collection on the link exist in different scopes, if the scope containing the collection is dropped while the link is connected, this leaves the metadata in an inconsistent state and leads to variety of failures.
We need to prevent dropping the scope of the connected collection while the link is connected and only allow it after disconnecting the link.
Repro steps:
- create dataverse firstDataverse
- create dataverse secondDataverse
- create couchbase remote link firstDataverse.cbLink
- create dataset in secondDataverse on firstDataverse.cbLink, secondDataverse.mydataset
- connect link firstDataverse.cbLink
- drop dataverse secondDataverse
Observe the following error:
n_0:org.apache.hyracks.api.exceptions.HyracksDataException: HYR0105: Cannot drop in-use index (dataset2)
|
n_0: at org.apache.hyracks.api.exceptions.HyracksDataException.create(HyracksDataException.java:70) ~[hyracks-api-7.2.0-0000.jar:7.2.0-0000]
|
n_0: at org.apache.hyracks.api.util.ExceptionUtils.setNodeIds(ExceptionUtils.java:70) ~[hyracks-api-7.2.0-0000.jar:7.2.0-0000]
|
After trying to re-create the delete dataverse secondDataverse, observe the following error:
n_0:org.apache.hyracks.algebricks.common.exceptions.AlgebricksException: HYR0033: Inserting duplicate keys into the primary storage
|
n_0: at org.apache.asterix.metadata.MetadataNode.addEntity(MetadataNode.java:237) ~[asterix-metadata-7.2.0-0000.jar:7.2.0-0000]
|
n_0: at org.apache.asterix.metadata.MetadataNode.addEntity(MetadataNode.java:305) ~[asterix-metadata-7.2.0-0000.jar:7.2.0-0000]
|
n_0: at org.apache.asterix.metadata.MetadataManager.addEntity(MetadataManager.java:1158) ~[asterix-metadata-7.2.0-0000.jar:7.2.0-0000]
|
n_0: at com.couchbase.analytics.lang.CBStatementExecutor.doCreateDataverseStatement(CBStatementExecutor.java:366) ~[cbas-connector-7.2.0-0000.jar:7.2.0-0000]
|
Now do the following steps:
- Disconnect the link firstDataverse.myLink
- Drop secondDataverse (successful)
- Connect firstDataverse.myLink
- Create dataverse secondDataverse (successful)
- Create dataset secondDataverse.myDataset on firstDataverse.myLink
- Observe the following error:
n_0:org.apache.hyracks.api.exceptions.HyracksDataException: org.apache.hyracks.algebricks.common.exceptions.AlgebricksException: Couldn't find node group secondDataverse.beers_cdfc5c6f-1106-4730-90db-ccf195bfa85a
|
n_0: at org.apache.hyracks.api.exceptions.HyracksDataException.create(HyracksDataException.java:49) ~[hyracks-api-7.2.0-0000.jar:7.2.0-0000]
|
n_0: at com.couchbase.analytics.lang.ConnectLinkStatement.doConnect(ConnectLinkStatement.java:738) ~[cbas-connector-7.2.0-0000.jar:7.2.0-0000]
|
n_0: at com.couchbase.analytics.metadata.BucketEventsListener.doConnect(BucketEventsListener.java:454) ~[cbas-connector-7.2.0-0000.jar:7.2.0-0000]
|