Uploaded image for project: 'HBase'
  1. HBase
  2. HBASE-20821

Re-creating a dropped namespace and contained table inherits previously set space quota settings

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Patch Available
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: 3.0.0, 2.1.0
    • Fix Version/s: 3.0.0, 2.1.0
    • Component/s: None
    • Labels:

      Description

      As demonstarted in HBASE-20662.master.002.patch re-creating a dropped namespace and contained table inherits previously set space quota settings.

      Steps:

      • Create a namespace and a table in it
      • Set space quota on namespace
      • Violate namespace quota
      • Drop table and then namespace
      • Re create same namespace and same table
      • Put data into the table (more than the previosuly set namespace quota limit)
        private void setQuotaAndThenDropNamespace(final String namespace, SpaceViolationPolicy policy)
            throws Exception {
          Put put = new Put(Bytes.toBytes("to_reject"));
          put.addColumn(Bytes.toBytes(SpaceQuotaHelperForTests.F1), Bytes.toBytes("to"),
            Bytes.toBytes("reject"));
          createNamespaceIfNotExist(TEST_UTIL.getAdmin(), namespace);
          // Do puts until we violate space policy
          final TableName tn = writeUntilNSSpaceViolationAndVerifyViolation(namespace, policy, put);
          // Now, drop the table
          TEST_UTIL.deleteTable(tn);
          LOG.debug("Successfully deleted table ", tn);
          // Now, drop the namespace
          TEST_UTIL.getAdmin().deleteNamespace(namespace);
          LOG.debug("Successfully deleted the namespace ", namespace);
          // Now re-create the namespace
          createNamespaceIfNotExist(TEST_UTIL.getAdmin(), namespace);
          LOG.debug("Successfully re-created the namespace ", namespace);
          TEST_UTIL.createTable(tn, Bytes.toBytes(SpaceQuotaHelperForTests.F1));
          LOG.debug("Successfully re-created table ", tn);
          // Put some rows now: should not violate as namespace/quota was dropped
          verifyNoViolation(policy, tn, put);
        }
        

      Expected: SpaceQuota settings should not exist on the newly re-created table and we should be able to put limit less data into the table

      Actual: We fail to put data into newly created table as SpaceQuota settings (systematically created due to previously added namespace space quota) exist on table

        Attachments

        1. HBASE-20821.master.003.patch
          10 kB
          Shardul Singh
        2. HBASE-20821.master.002.patch
          10 kB
          Shardul Singh
        3. HBASE-20821.master.001.patch
          10 kB
          Shardul Singh

          Activity

            People

            • Assignee:
              shardulsingh Shardul Singh
              Reporter:
              nihaljain.cs Nihal Jain
            • Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

              • Created:
                Updated: