Details

    • Type: Sub-task
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.1.0
    • Fix Version/s: 1.1.0
    • Component/s: master
    • Labels:
      None
    • Release Note:
      Hide
      In 1.1 release, we implemented Procedure V2 to execute table DDL operations (create/delete/modify/truncate/enable/disable table; add/delete/modify column) to replace 1.0 release's handler implementation. By default, Procedure V2 feature is enabled in 1.1 release. We provide a config for customer to go back to 1.0 release implementation.
      The "hbase.master.procedure.tableddl" configuration accepts 2 values to change the behavior (other values treats as default - Procedure "enabled"):
      (1). "unused"
      (1a). uses handler implementation to execute new table DDLs;
      (1b).in case of unclean shutdown (crash), we could have unfinished DDLs in Procedure store, Procedure code will replay those operations and completes them.
      (2). "disabled" - (in case customer run into some problem and want to completely disable the Procedure V2 feature),
      (2a). this value would use handler implementation to execute new table DDLs;
      (2b). in case of unclean shutdown (crash), we could have unfinished DDLs in Procedure store, to prevent possible problem, the files in procedure store (WAL) will be deleted so that we would get into a clean state when the Procedure is enabled.
      Note:
      (A). This configuration is only checked during master start up (in constructor) - so you have to re-start master after changing the value
      (B). In case of crash and unclean shut down, HBCK is needed to clean up corruptions. "disable" case has more chance to lead to half-completed operation and hence customer should not be surprised when running HBCK is needed.
      Show
      In 1.1 release, we implemented Procedure V2 to execute table DDL operations (create/delete/modify/truncate/enable/disable table; add/delete/modify column) to replace 1.0 release's handler implementation. By default, Procedure V2 feature is enabled in 1.1 release. We provide a config for customer to go back to 1.0 release implementation. The "hbase.master.procedure.tableddl" configuration accepts 2 values to change the behavior (other values treats as default - Procedure "enabled"): (1). "unused" (1a). uses handler implementation to execute new table DDLs; (1b).in case of unclean shutdown (crash), we could have unfinished DDLs in Procedure store, Procedure code will replay those operations and completes them. (2). "disabled" - (in case customer run into some problem and want to completely disable the Procedure V2 feature), (2a). this value would use handler implementation to execute new table DDLs; (2b). in case of unclean shutdown (crash), we could have unfinished DDLs in Procedure store, to prevent possible problem, the files in procedure store (WAL) will be deleted so that we would get into a clean state when the Procedure is enabled. Note: (A). This configuration is only checked during master start up (in constructor) - so you have to re-start master after changing the value (B). In case of crash and unclean shut down, HBCK is needed to clean up corruptions. "disable" case has more chance to lead to half-completed operation and hence customer should not be surprised when running HBCK is needed.

      Description

      In branch-1, I think we want proc v2 to be configurable, so that if any non-recoverable issue is found, at least there is a workaround. We already have the handlers and code laying around. It will be just introducing the config to enable / disable. We can even make it dynamically configurable via the new framework.

        Attachments

          Activity

            People

            • Assignee:
              syuanjiang Stephen Yuan Jiang
              Reporter:
              enis Enis Soztutar
            • Votes:
              0 Vote for this issue
              Watchers:
              7 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: