Uploaded image for project: 'Couchbase Server'
  1. Couchbase Server
  2. MB-51789

[CX] Inconsistent metadata state after dropping scope containing connected collections

    XMLWordPrintable

Details

    • 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] 

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            umang.agrawal Umang
            Hussain.Towaileb Hussain Towaileb
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes

                PagerDuty