You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "junegunn (via GitHub)" <gi...@apache.org> on 2025/02/19 07:53:27 UTC

[PR] HBASE-29137 Add basic config type validation [hbase]

junegunn opened a new pull request, #6709:
URL: https://github.com/apache/hbase/pull/6709

   To make ALTER operations safer.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-29137 Add basic config type validation [hbase]

Posted by "junegunn (via GitHub)" <gi...@apache.org>.
junegunn commented on code in PR #6709:
URL: https://github.com/apache/hbase/pull/6709#discussion_r1961150170


##########
hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java:
##########
@@ -427,15 +430,16 @@ public enum OperationStatusCode {
    * update traffic.
    */
   public static final String HREGION_MEMSTORE_BLOCK_MULTIPLIER =
-    "hbase.hregion.memstore.block.multiplier";
+    ConfigKey.INT("hbase.hregion.memstore.block.multiplier", v -> v > 0);
 
   /**
    * Default value for hbase.hregion.memstore.block.multiplier
    */
   public static final int DEFAULT_HREGION_MEMSTORE_BLOCK_MULTIPLIER = 4;
 
   /** Conf key for the memstore size at which we flush the memstore */
-  public static final String HREGION_MEMSTORE_FLUSH_SIZE = "hbase.hregion.memstore.flush.size";
+  public static final String HREGION_MEMSTORE_FLUSH_SIZE =
+    ConfigKey.LONG("hbase.hregion.memstore.flush.size", v -> v > 0);

Review Comment:
   It it clear that it doesn't make sense to use a non-positive value here, because that would block any writes. i.e. `Region is too busy due to exceeding memstore size limit`. So I added the predicate here.



##########
hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java:
##########
@@ -427,15 +430,16 @@ public enum OperationStatusCode {
    * update traffic.
    */
   public static final String HREGION_MEMSTORE_BLOCK_MULTIPLIER =
-    "hbase.hregion.memstore.block.multiplier";
+    ConfigKey.INT("hbase.hregion.memstore.block.multiplier", v -> v > 0);
 
   /**
    * Default value for hbase.hregion.memstore.block.multiplier
    */
   public static final int DEFAULT_HREGION_MEMSTORE_BLOCK_MULTIPLIER = 4;
 
   /** Conf key for the memstore size at which we flush the memstore */
-  public static final String HREGION_MEMSTORE_FLUSH_SIZE = "hbase.hregion.memstore.flush.size";
+  public static final String HREGION_MEMSTORE_FLUSH_SIZE =
+    ConfigKey.LONG("hbase.hregion.memstore.flush.size", v -> v > 0);

Review Comment:
   It is clear that it doesn't make sense to use a non-positive value here, because that would block any writes. i.e. `Region is too busy due to exceeding memstore size limit`. So I added the predicate here.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-29137 Add basic config type validation [hbase]

Posted by "Apache-HBase (via GitHub)" <gi...@apache.org>.
Apache-HBase commented on PR #6709:
URL: https://github.com/apache/hbase/pull/6709#issuecomment-2754539670

   :confetti_ball: **+1 overall**
   
   
   
   
   
   
   | Vote | Subsystem | Runtime |  Logfile | Comment |
   |:----:|----------:|--------:|:--------:|:-------:|
   | +0 :ok: |  reexec  |   0m 31s |  |  Docker mode activated.  |
   | -0 :warning: |  yetus  |   0m  2s |  |  Unprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --author-ignore-list --blanks-eol-ignore-file --blanks-tabs-ignore-file --quick-hadoopcheck  |
   |||| _ Prechecks _ |
   |||| _ master Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 10s |  |  Maven dependency ordering for branch  |
   | +1 :green_heart: |  mvninstall  |   3m 15s |  |  master passed  |
   | +1 :green_heart: |  compile  |   1m 17s |  |  master passed  |
   | +1 :green_heart: |  javadoc  |   0m 44s |  |  master passed  |
   | +1 :green_heart: |  shadedjars  |   5m 57s |  |  branch has no errors when building our shaded downstream artifacts.  |
   |||| _ Patch Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 13s |  |  Maven dependency ordering for patch  |
   | +1 :green_heart: |  mvninstall  |   3m 31s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |   1m 46s |  |  the patch passed  |
   | +1 :green_heart: |  javac  |   1m 46s |  |  the patch passed  |
   | +1 :green_heart: |  javadoc  |   1m  2s |  |  the patch passed  |
   | +1 :green_heart: |  shadedjars  |   6m 44s |  |  patch has no errors when building our shaded downstream artifacts.  |
   |||| _ Other Tests _ |
   | +1 :green_heart: |  unit  |   2m 35s |  |  hbase-common in the patch passed.  |
   | +1 :green_heart: |  unit  | 353m 34s |  |  hbase-server in the patch passed.  |
   |  |   | 406m  5s |  |  |
   
   
   | Subsystem | Report/Notes |
   |----------:|:-------------|
   | Docker | ClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/9/artifact/yetus-jdk17-hadoop3-check/output/Dockerfile |
   | GITHUB PR | https://github.com/apache/hbase/pull/6709 |
   | Optional Tests | javac javadoc unit compile shadedjars |
   | uname | Linux 2899a145db1b 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux |
   | Build tool | maven |
   | Personality | dev-support/hbase-personality.sh |
   | git revision | master / b76e12b7f32f2991c477b8eee854f277f1bf0a21 |
   | Default Java | Eclipse Adoptium-17.0.11+9 |
   |  Test Results | https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/9/testReport/ |
   | Max. process+thread count | 4410 (vs. ulimit of 30000) |
   | modules | C: hbase-common hbase-server U: . |
   | Console output | https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/9/console |
   | versions | git=2.34.1 maven=3.9.8 |
   | Powered by | Apache Yetus 0.15.0 https://yetus.apache.org |
   
   
   This message was automatically generated.
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-29137 Add basic config type validation [hbase]

Posted by "guluo2016 (via GitHub)" <gi...@apache.org>.
guluo2016 commented on code in PR #6709:
URL: https://github.com/apache/hbase/pull/6709#discussion_r2036967657


##########
hbase-server/src/main/java/org/apache/hadoop/hbase/util/TableDescriptorChecker.java:
##########
@@ -79,6 +80,14 @@ public static void sanityCheck(final Configuration c, final TableDescriptor td)
     // Setting logs to warning instead of throwing exception if sanityChecks are disabled
     boolean logWarn = !shouldSanityCheck(conf);
 
+    // Check value types
+    warnOrThrowExceptionForFailure(logWarn, () -> ConfigKey.validate(conf));

Review Comment:
   In here, we may miss the check for table-level configuration, right?
   I think we should check configuration at table level and column level for a table in here.
   
   eg:
   `create 't01', 'info', { CONFIGURATION => { 'hbase.hstore.defaultengine.compactionpolicy.class' => 'com.test.App' }}`



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-29137 Add basic config type validation [hbase]

Posted by "junegunn (via GitHub)" <gi...@apache.org>.
junegunn commented on PR #6709:
URL: https://github.com/apache/hbase/pull/6709#issuecomment-2735060560

   ```
   [ERROR] Failures: 
   [ERROR]   TestBucketCache.testBlockAdditionWaitWhenCache:895
   [ERROR] Errors: 
   [ERROR] org.apache.hadoop.hbase.ipc.TestSecureNettyRpcServer.testHandshakeCompleteHandler[3]
   [ERROR]   Run 1: TestSecureNettyRpcServer.setup:65 » IllegalArgument Can't get Kerberos realm
   [ERROR]   Run 2: TestSecureNettyRpcServer.setup:65 » IllegalArgument Can't get Kerberos realm
   [ERROR]   Run 3: TestSecureNettyRpcServer.setup:65 » IllegalArgument Can't get Kerberos realm
   ```
   
   The errors seem unrelated since they pass locally.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-29137 Add basic config type validation [hbase]

Posted by "Apache-HBase (via GitHub)" <gi...@apache.org>.
Apache-HBase commented on PR #6709:
URL: https://github.com/apache/hbase/pull/6709#issuecomment-2732988881

   :broken_heart: **-1 overall**
   
   
   
   
   
   
   | Vote | Subsystem | Runtime |  Logfile | Comment |
   |:----:|----------:|--------:|:--------:|:-------:|
   | +0 :ok: |  reexec  |   3m 39s |  |  Docker mode activated.  |
   | -0 :warning: |  yetus  |   0m  4s |  |  Unprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --author-ignore-list --blanks-eol-ignore-file --blanks-tabs-ignore-file --quick-hadoopcheck  |
   |||| _ Prechecks _ |
   |||| _ master Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 15s |  |  Maven dependency ordering for branch  |
   | +1 :green_heart: |  mvninstall  |   4m 54s |  |  master passed  |
   | +1 :green_heart: |  compile  |   1m 50s |  |  master passed  |
   | +1 :green_heart: |  javadoc  |   0m 58s |  |  master passed  |
   | +1 :green_heart: |  shadedjars  |   8m 11s |  |  branch has no errors when building our shaded downstream artifacts.  |
   | -0 :warning: |  patch  |   8m 42s |  |  Used diff version of patch file. Binary files and potentially other changes not applied. Please rebase and squash commits if necessary.  |
   |||| _ Patch Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 20s |  |  Maven dependency ordering for patch  |
   | +1 :green_heart: |  mvninstall  |   5m 13s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |   2m 17s |  |  the patch passed  |
   | +1 :green_heart: |  javac  |   2m 17s |  |  the patch passed  |
   | +1 :green_heart: |  javadoc  |   1m 22s |  |  the patch passed  |
   | +1 :green_heart: |  shadedjars  |   8m 39s |  |  patch has no errors when building our shaded downstream artifacts.  |
   |||| _ Other Tests _ |
   | +1 :green_heart: |  unit  |   3m 33s |  |  hbase-common in the patch passed.  |
   | -1 :x: |  unit  | 269m 49s | [/patch-unit-hbase-server.txt](https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/6/artifact/yetus-jdk17-hadoop3-check/output/patch-unit-hbase-server.txt) |  hbase-server in the patch failed.  |
   |  |   | 325m 16s |  |  |
   
   
   | Subsystem | Report/Notes |
   |----------:|:-------------|
   | Docker | ClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/6/artifact/yetus-jdk17-hadoop3-check/output/Dockerfile |
   | GITHUB PR | https://github.com/apache/hbase/pull/6709 |
   | Optional Tests | javac javadoc unit compile shadedjars |
   | uname | Linux 01cd48d12ba2 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux |
   | Build tool | maven |
   | Personality | dev-support/hbase-personality.sh |
   | git revision | master / 689976c245b3f9ab7b5b65f10d5ead75dcf7d15c |
   | Default Java | Eclipse Adoptium-17.0.11+9 |
   |  Test Results | https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/6/testReport/ |
   | Max. process+thread count | 4661 (vs. ulimit of 30000) |
   | modules | C: hbase-common hbase-server U: . |
   | Console output | https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/6/console |
   | versions | git=2.34.1 maven=3.9.8 |
   | Powered by | Apache Yetus 0.15.0 https://yetus.apache.org |
   
   
   This message was automatically generated.
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-29137 Add basic config type validation [hbase]

Posted by "Apache9 (via GitHub)" <gi...@apache.org>.
Apache9 commented on code in PR #6709:
URL: https://github.com/apache/hbase/pull/6709#discussion_r1975655696


##########
hbase-common/src/main/java/org/apache/hadoop/hbase/conf/ConfigKey.java:
##########
@@ -0,0 +1,155 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hbase.conf;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.function.Predicate;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.yetus.audience.InterfaceAudience;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Utility class for basic validation of configuration values.
+ */
+@InterfaceAudience.Private
+public class ConfigKey {
+  private static final Logger LOG = LoggerFactory.getLogger(ConfigKey.class);
+
+  @FunctionalInterface
+  private interface Validator {
+    void validate(Configuration conf);
+  }
+
+  // Map of configuration keys to validators
+  private static final Map<String, Validator> validators = new ConcurrentHashMap<>();
+
+  /**
+   * Registers the configuration key that expects an integer.
+   * @param key        configuration key
+   * @param predicates additional predicates to validate the value
+   * @return the key
+   */
+  @SafeVarargs
+  public static String INT(String key, Predicate<Integer>... predicates) {
+    return register(key,
+      conf -> validateNumeric(key, "an integer", () -> conf.getInt(key, 0), predicates));
+  }
+
+  /**
+   * Registers the configuration key that expects a long.
+   * @param key        configuration key
+   * @param predicates additional predicates to validate the value
+   * @return the key
+   */
+  @SafeVarargs
+  public static String LONG(String key, Predicate<Long>... predicates) {
+    return register(key,
+      conf -> validateNumeric(key, "a long", () -> conf.getLong(key, 0), predicates));
+  }
+
+  /**
+   * Registers the configuration key that expects a float.
+   * @param key        configuration key
+   * @param predicates additional predicates to validate the value
+   * @return the key
+   */
+  @SafeVarargs
+  public static String FLOAT(String key, Predicate<Float>... predicates) {
+    return register(key,
+      conf -> validateNumeric(key, "a float", () -> conf.getFloat(key, 0), predicates));
+  }
+
+  /**
+   * Registers the configuration key that expects a double.
+   * @param key        configuration key
+   * @param predicates additional predicates to validate the value
+   * @return the key
+   */
+  @SafeVarargs
+  public static String DOUBLE(String key, Predicate<Double>... predicates) {
+    return register(key,
+      conf -> validateNumeric(key, "a double", () -> conf.getDouble(key, 0), predicates));
+  }
+
+  /**
+   * Registers the configuration key that expects a class.
+   * @param key configuration key
+   * @return the key
+   */
+  public static String CLASS(String key) {
+    return register(key, conf -> {
+      String value = conf.get(key);
+      try {
+        Class.forName(value);
+      } catch (ClassNotFoundException e) {
+        throw new IllegalArgumentException("Class " + value + " not found.");
+      }
+    });
+  }
+
+  /**
+   * Registers the configuration key that expects a boolean value. We actually don't register a
+   * validator, because {@link Configuration#getBoolean} doesn't throw an exception even if the
+   * value is not a boolean. So this is only for documentation purposes.
+   * @param key configuration key
+   * @return the key
+   */
+  public static String BOOLEAN(String key) {
+    return key;
+  }
+
+  /**
+   * Validates the configuration.
+   * @param conf a configuration to validate
+   */
+  public static void validate(Configuration conf) {
+    conf.iterator().forEachRemaining(entry -> {
+      Validator validator = validators.get(entry.getKey());
+      if (validator != null) {
+        validator.validate(conf);
+      }
+    });
+  }
+
+  @FunctionalInterface
+  private interface NumberGetter<T> {
+    T get() throws NumberFormatException;
+  }
+
+  private static <T> void validateNumeric(String name, String expected, NumberGetter<T> getter,
+    Predicate<T>... predicates) {
+    try {
+      T value = getter.get();
+      for (Predicate<T> predicate : predicates) {
+        if (!predicate.test(value)) {
+          throw new IllegalArgumentException("Invalid value for '" + name + "': " + value + ".");
+        }
+      }
+    } catch (NumberFormatException e) {
+      throw new IllegalArgumentException(String.format("'%s' must be %s.", name, expected));

Review Comment:
   Here too, let's provide the original exception.



##########
hbase-common/src/main/java/org/apache/hadoop/hbase/conf/ConfigKey.java:
##########
@@ -0,0 +1,155 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hbase.conf;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.function.Predicate;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.yetus.audience.InterfaceAudience;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Utility class for basic validation of configuration values.
+ */
+@InterfaceAudience.Private
+public class ConfigKey {
+  private static final Logger LOG = LoggerFactory.getLogger(ConfigKey.class);
+
+  @FunctionalInterface
+  private interface Validator {
+    void validate(Configuration conf);
+  }
+
+  // Map of configuration keys to validators
+  private static final Map<String, Validator> validators = new ConcurrentHashMap<>();
+
+  /**
+   * Registers the configuration key that expects an integer.
+   * @param key        configuration key
+   * @param predicates additional predicates to validate the value
+   * @return the key
+   */
+  @SafeVarargs
+  public static String INT(String key, Predicate<Integer>... predicates) {
+    return register(key,
+      conf -> validateNumeric(key, "an integer", () -> conf.getInt(key, 0), predicates));
+  }
+
+  /**
+   * Registers the configuration key that expects a long.
+   * @param key        configuration key
+   * @param predicates additional predicates to validate the value
+   * @return the key
+   */
+  @SafeVarargs
+  public static String LONG(String key, Predicate<Long>... predicates) {
+    return register(key,
+      conf -> validateNumeric(key, "a long", () -> conf.getLong(key, 0), predicates));
+  }
+
+  /**
+   * Registers the configuration key that expects a float.
+   * @param key        configuration key
+   * @param predicates additional predicates to validate the value
+   * @return the key
+   */
+  @SafeVarargs
+  public static String FLOAT(String key, Predicate<Float>... predicates) {
+    return register(key,
+      conf -> validateNumeric(key, "a float", () -> conf.getFloat(key, 0), predicates));
+  }
+
+  /**
+   * Registers the configuration key that expects a double.
+   * @param key        configuration key
+   * @param predicates additional predicates to validate the value
+   * @return the key
+   */
+  @SafeVarargs
+  public static String DOUBLE(String key, Predicate<Double>... predicates) {
+    return register(key,
+      conf -> validateNumeric(key, "a double", () -> conf.getDouble(key, 0), predicates));
+  }
+
+  /**
+   * Registers the configuration key that expects a class.
+   * @param key configuration key
+   * @return the key
+   */
+  public static String CLASS(String key) {
+    return register(key, conf -> {
+      String value = conf.get(key);
+      try {
+        Class.forName(value);
+      } catch (ClassNotFoundException e) {
+        throw new IllegalArgumentException("Class " + value + " not found.");

Review Comment:
   Better not eat the CNFE? Let's set it as the cause here.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-29137 Add basic config type validation [hbase]

Posted by "Apache-HBase (via GitHub)" <gi...@apache.org>.
Apache-HBase commented on PR #6709:
URL: https://github.com/apache/hbase/pull/6709#issuecomment-2749708504

   :broken_heart: **-1 overall**
   
   
   
   
   
   
   | Vote | Subsystem | Runtime |  Logfile | Comment |
   |:----:|----------:|--------:|:--------:|:-------:|
   | +0 :ok: |  reexec  |   0m 33s |  |  Docker mode activated.  |
   | -0 :warning: |  yetus  |   0m  3s |  |  Unprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --author-ignore-list --blanks-eol-ignore-file --blanks-tabs-ignore-file --quick-hadoopcheck  |
   |||| _ Prechecks _ |
   |||| _ master Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 38s |  |  Maven dependency ordering for branch  |
   | +1 :green_heart: |  mvninstall  |   3m 25s |  |  master passed  |
   | +1 :green_heart: |  compile  |   1m 14s |  |  master passed  |
   | +1 :green_heart: |  javadoc  |   0m 43s |  |  master passed  |
   | +1 :green_heart: |  shadedjars  |   5m 53s |  |  branch has no errors when building our shaded downstream artifacts.  |
   |||| _ Patch Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 12s |  |  Maven dependency ordering for patch  |
   | +1 :green_heart: |  mvninstall  |   3m  2s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |   1m 15s |  |  the patch passed  |
   | +1 :green_heart: |  javac  |   1m 15s |  |  the patch passed  |
   | +1 :green_heart: |  javadoc  |   0m 42s |  |  the patch passed  |
   | +1 :green_heart: |  shadedjars  |   5m 52s |  |  patch has no errors when building our shaded downstream artifacts.  |
   |||| _ Other Tests _ |
   | +1 :green_heart: |  unit  |   2m 11s |  |  hbase-common in the patch passed.  |
   | -1 :x: |  unit  | 225m 30s | [/patch-unit-hbase-server.txt](https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/8/artifact/yetus-jdk17-hadoop3-check/output/patch-unit-hbase-server.txt) |  hbase-server in the patch failed.  |
   |  |   | 256m  5s |  |  |
   
   
   | Subsystem | Report/Notes |
   |----------:|:-------------|
   | Docker | ClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/8/artifact/yetus-jdk17-hadoop3-check/output/Dockerfile |
   | GITHUB PR | https://github.com/apache/hbase/pull/6709 |
   | Optional Tests | javac javadoc unit compile shadedjars |
   | uname | Linux cfc893eba9b8 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux |
   | Build tool | maven |
   | Personality | dev-support/hbase-personality.sh |
   | git revision | master / 22574b203a2e7d5177ae0bc38a2cc9df9334df1f |
   | Default Java | Eclipse Adoptium-17.0.11+9 |
   |  Test Results | https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/8/testReport/ |
   | Max. process+thread count | 5533 (vs. ulimit of 30000) |
   | modules | C: hbase-common hbase-server U: . |
   | Console output | https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/8/console |
   | versions | git=2.34.1 maven=3.9.8 |
   | Powered by | Apache Yetus 0.15.0 https://yetus.apache.org |
   
   
   This message was automatically generated.
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-29137 Add basic config type validation [hbase]

Posted by "Apache-HBase (via GitHub)" <gi...@apache.org>.
Apache-HBase commented on PR #6709:
URL: https://github.com/apache/hbase/pull/6709#issuecomment-2791639949

   :confetti_ball: **+1 overall**
   
   
   
   
   
   
   | Vote | Subsystem | Runtime |  Logfile | Comment |
   |:----:|----------:|--------:|:--------:|:-------:|
   | +0 :ok: |  reexec  |   0m 27s |  |  Docker mode activated.  |
   |||| _ Prechecks _ |
   | +1 :green_heart: |  dupname  |   0m  0s |  |  No case conflicting files found.  |
   | +0 :ok: |  codespell  |   0m  0s |  |  codespell was not available.  |
   | +0 :ok: |  detsecrets  |   0m  0s |  |  detect-secrets was not available.  |
   | +1 :green_heart: |  @author  |   0m  0s |  |  The patch does not contain any @author tags.  |
   | +1 :green_heart: |  hbaseanti  |   0m  0s |  |  Patch does not have any anti-patterns.  |
   |||| _ master Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 10s |  |  Maven dependency ordering for branch  |
   | +1 :green_heart: |  mvninstall  |   3m 12s |  |  master passed  |
   | +1 :green_heart: |  compile  |   3m 47s |  |  master passed  |
   | +1 :green_heart: |  checkstyle  |   0m 51s |  |  master passed  |
   | +1 :green_heart: |  spotbugs  |   2m  4s |  |  master passed  |
   | +1 :green_heart: |  spotless  |   0m 45s |  |  branch has no errors when running spotless:check.  |
   |||| _ Patch Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 12s |  |  Maven dependency ordering for patch  |
   | +1 :green_heart: |  mvninstall  |   3m  8s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |   3m 44s |  |  the patch passed  |
   | -0 :warning: |  javac  |   0m 39s | [/results-compile-javac-hbase-common.txt](https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/10/artifact/yetus-general-check/output/results-compile-javac-hbase-common.txt) |  hbase-common generated 2 new + 70 unchanged - 0 fixed = 72 total (was 70)  |
   | +1 :green_heart: |  blanks  |   0m  0s |  |  The patch has no blanks issues.  |
   | +1 :green_heart: |  checkstyle  |   0m 49s |  |  the patch passed  |
   | +1 :green_heart: |  spotbugs  |   2m 14s |  |  the patch passed  |
   | +1 :green_heart: |  hadoopcheck  |  11m 50s |  |  Patch does not cause any errors with Hadoop 3.3.6 3.4.0.  |
   | +1 :green_heart: |  spotless  |   0m 43s |  |  patch has no errors when running spotless:check.  |
   |||| _ Other Tests _ |
   | +1 :green_heart: |  asflicense  |   0m 17s |  |  The patch does not generate ASF License warnings.  |
   |  |   |  41m 37s |  |  |
   
   
   | Subsystem | Report/Notes |
   |----------:|:-------------|
   | Docker | ClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/10/artifact/yetus-general-check/output/Dockerfile |
   | GITHUB PR | https://github.com/apache/hbase/pull/6709 |
   | Optional Tests | dupname asflicense javac spotbugs checkstyle codespell detsecrets compile hadoopcheck hbaseanti spotless |
   | uname | Linux 39d63ff38a03 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux |
   | Build tool | maven |
   | Personality | dev-support/hbase-personality.sh |
   | git revision | master / befa54ade137e904a53d422b02c89d66dced604e |
   | Default Java | Eclipse Adoptium-17.0.11+9 |
   | Max. process+thread count | 85 (vs. ulimit of 30000) |
   | modules | C: hbase-common hbase-server U: . |
   | Console output | https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/10/console |
   | versions | git=2.34.1 maven=3.9.8 spotbugs=4.7.3 |
   | Powered by | Apache Yetus 0.15.0 https://yetus.apache.org |
   
   
   This message was automatically generated.
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-29137 Add basic config type validation [hbase]

Posted by "junegunn (via GitHub)" <gi...@apache.org>.
junegunn commented on code in PR #6709:
URL: https://github.com/apache/hbase/pull/6709#discussion_r1976238788


##########
hbase-common/src/main/java/org/apache/hadoop/hbase/conf/ConfigKey.java:
##########
@@ -0,0 +1,155 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hbase.conf;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.function.Predicate;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.yetus.audience.InterfaceAudience;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Utility class for basic validation of configuration values.
+ */
+@InterfaceAudience.Private
+public class ConfigKey {
+  private static final Logger LOG = LoggerFactory.getLogger(ConfigKey.class);
+
+  @FunctionalInterface
+  private interface Validator {
+    void validate(Configuration conf);
+  }
+
+  // Map of configuration keys to validators
+  private static final Map<String, Validator> validators = new ConcurrentHashMap<>();
+
+  /**
+   * Registers the configuration key that expects an integer.
+   * @param key        configuration key
+   * @param predicates additional predicates to validate the value
+   * @return the key
+   */
+  @SafeVarargs
+  public static String INT(String key, Predicate<Integer>... predicates) {
+    return register(key,
+      conf -> validateNumeric(key, "an integer", () -> conf.getInt(key, 0), predicates));
+  }
+
+  /**
+   * Registers the configuration key that expects a long.
+   * @param key        configuration key
+   * @param predicates additional predicates to validate the value
+   * @return the key
+   */
+  @SafeVarargs
+  public static String LONG(String key, Predicate<Long>... predicates) {
+    return register(key,
+      conf -> validateNumeric(key, "a long", () -> conf.getLong(key, 0), predicates));
+  }
+
+  /**
+   * Registers the configuration key that expects a float.
+   * @param key        configuration key
+   * @param predicates additional predicates to validate the value
+   * @return the key
+   */
+  @SafeVarargs
+  public static String FLOAT(String key, Predicate<Float>... predicates) {
+    return register(key,
+      conf -> validateNumeric(key, "a float", () -> conf.getFloat(key, 0), predicates));
+  }
+
+  /**
+   * Registers the configuration key that expects a double.
+   * @param key        configuration key
+   * @param predicates additional predicates to validate the value
+   * @return the key
+   */
+  @SafeVarargs
+  public static String DOUBLE(String key, Predicate<Double>... predicates) {
+    return register(key,
+      conf -> validateNumeric(key, "a double", () -> conf.getDouble(key, 0), predicates));
+  }
+
+  /**
+   * Registers the configuration key that expects a class.
+   * @param key configuration key
+   * @return the key
+   */
+  public static String CLASS(String key) {
+    return register(key, conf -> {
+      String value = conf.get(key);
+      try {
+        Class.forName(value);
+      } catch (ClassNotFoundException e) {
+        throw new IllegalArgumentException("Class " + value + " not found.");
+      }
+    });
+  }
+
+  /**
+   * Registers the configuration key that expects a boolean value. We actually don't register a
+   * validator, because {@link Configuration#getBoolean} doesn't throw an exception even if the
+   * value is not a boolean. So this is only for documentation purposes.
+   * @param key configuration key
+   * @return the key
+   */
+  public static String BOOLEAN(String key) {
+    return key;
+  }
+
+  /**
+   * Validates the configuration.
+   * @param conf a configuration to validate
+   */
+  public static void validate(Configuration conf) {
+    conf.iterator().forEachRemaining(entry -> {
+      Validator validator = validators.get(entry.getKey());
+      if (validator != null) {
+        validator.validate(conf);
+      }
+    });
+  }
+
+  @FunctionalInterface
+  private interface NumberGetter<T> {
+    T get() throws NumberFormatException;
+  }
+
+  private static <T> void validateNumeric(String name, String expected, NumberGetter<T> getter,
+    Predicate<T>... predicates) {
+    try {
+      T value = getter.get();
+      for (Predicate<T> predicate : predicates) {
+        if (!predicate.test(value)) {
+          throw new IllegalArgumentException("Invalid value for '" + name + "': " + value + ".");
+        }
+      }
+    } catch (NumberFormatException e) {
+      throw new IllegalArgumentException(String.format("'%s' must be %s.", name, expected));

Review Comment:
   Good point. That way, we can see the invalid value.
   
   ```
   ERROR: org.apache.hadoop.hbase.DoNotRetryIOException: 'hbase.storescanner.pread.max.bytes' must be a long. Set hbase.table.sanity.checks to false at conf or table descriptor if you want to bypass sanity checks
           at org.apache.hadoop.hbase.util.TableDescriptorChecker.warnOrThrowExceptionForFailure(TableDescriptorChecker.java:327)
           at org.apache.hadoop.hbase.util.TableDescriptorChecker.warnOrThrowExceptionForFailure(TableDescriptorChecker.java:344)
           at org.apache.hadoop.hbase.util.TableDescriptorChecker.sanityCheck(TableDescriptorChecker.java:84)
           at org.apache.hadoop.hbase.master.HMaster$14.run(HMaster.java:2877)
           at org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil.submitProcedure(MasterProcedureUtil.java:137)
           at org.apache.hadoop.hbase.master.HMaster.modifyTable(HMaster.java:2871)
           at org.apache.hadoop.hbase.master.HMaster.modifyTable(HMaster.java:2907)
           at org.apache.hadoop.hbase.master.MasterRpcServices.modifyTable(MasterRpcServices.java:1547)
           at org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java)
           at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:457)
           at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:124)
           at org.apache.hadoop.hbase.ipc.RpcHandler.run(RpcHandler.java:102)
           at org.apache.hadoop.hbase.ipc.RpcHandler.run(RpcHandler.java:82)
   Caused by: java.lang.IllegalArgumentException: 'hbase.storescanner.pread.max.bytes' must be a long.
           at org.apache.hadoop.hbase.conf.ConfigKey.validateNumeric(ConfigKey.java:146)
           at org.apache.hadoop.hbase.conf.ConfigKey.lambda$LONG$3(ConfigKey.java:64)
           at org.apache.hadoop.hbase.conf.ConfigKey.lambda$validate$9(ConfigKey.java:126)
           at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
           at org.apache.hadoop.hbase.conf.ConfigKey.validate(ConfigKey.java:123)
           at org.apache.hadoop.hbase.util.TableDescriptorChecker.lambda$sanityCheck$0(TableDescriptorChecker.java:84)
           at org.apache.hadoop.hbase.util.TableDescriptorChecker.warnOrThrowExceptionForFailure(TableDescriptorChecker.java:342)
           ... 11 more
   Caused by: java.lang.NumberFormatException: For input string: "bye"
           at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
           at java.base/java.lang.Long.parseLong(Long.java:711)
           at java.base/java.lang.Long.parseLong(Long.java:836)
           at org.apache.hadoop.conf.Configuration.getLong(Configuration.java:1607)
           at org.apache.hadoop.hbase.conf.ConfigKey.lambda$LONG$2(ConfigKey.java:64)
           at org.apache.hadoop.hbase.conf.ConfigKey.validateNumeric(ConfigKey.java:139)
           ... 17 more
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-29137 Add basic config type validation [hbase]

Posted by "Apache-HBase (via GitHub)" <gi...@apache.org>.
Apache-HBase commented on PR #6709:
URL: https://github.com/apache/hbase/pull/6709#issuecomment-2792109608

   :broken_heart: **-1 overall**
   
   
   
   
   
   
   | Vote | Subsystem | Runtime |  Logfile | Comment |
   |:----:|----------:|--------:|:--------:|:-------:|
   | +0 :ok: |  reexec  |   0m 28s |  |  Docker mode activated.  |
   | -0 :warning: |  yetus  |   0m  2s |  |  Unprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --author-ignore-list --blanks-eol-ignore-file --blanks-tabs-ignore-file --quick-hadoopcheck  |
   |||| _ Prechecks _ |
   |||| _ master Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 10s |  |  Maven dependency ordering for branch  |
   | +1 :green_heart: |  mvninstall  |   3m 11s |  |  master passed  |
   | +1 :green_heart: |  compile  |   1m 13s |  |  master passed  |
   | +1 :green_heart: |  javadoc  |   0m 41s |  |  master passed  |
   | +1 :green_heart: |  shadedjars  |   5m 53s |  |  branch has no errors when building our shaded downstream artifacts.  |
   |||| _ Patch Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 13s |  |  Maven dependency ordering for patch  |
   | +1 :green_heart: |  mvninstall  |   3m  9s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |   1m 14s |  |  the patch passed  |
   | +1 :green_heart: |  javac  |   1m 14s |  |  the patch passed  |
   | +1 :green_heart: |  javadoc  |   0m 42s |  |  the patch passed  |
   | +1 :green_heart: |  shadedjars  |   5m 51s |  |  patch has no errors when building our shaded downstream artifacts.  |
   |||| _ Other Tests _ |
   | +1 :green_heart: |  unit  |   2m 11s |  |  hbase-common in the patch passed.  |
   | -1 :x: |  unit  | 212m 57s | [/patch-unit-hbase-server.txt](https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/10/artifact/yetus-jdk17-hadoop3-check/output/patch-unit-hbase-server.txt) |  hbase-server in the patch failed.  |
   |  |   | 242m 34s |  |  |
   
   
   | Subsystem | Report/Notes |
   |----------:|:-------------|
   | Docker | ClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/10/artifact/yetus-jdk17-hadoop3-check/output/Dockerfile |
   | GITHUB PR | https://github.com/apache/hbase/pull/6709 |
   | Optional Tests | javac javadoc unit compile shadedjars |
   | uname | Linux 3814f4803478 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux |
   | Build tool | maven |
   | Personality | dev-support/hbase-personality.sh |
   | git revision | master / befa54ade137e904a53d422b02c89d66dced604e |
   | Default Java | Eclipse Adoptium-17.0.11+9 |
   |  Test Results | https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/10/testReport/ |
   | Max. process+thread count | 5198 (vs. ulimit of 30000) |
   | modules | C: hbase-common hbase-server U: . |
   | Console output | https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/10/console |
   | versions | git=2.34.1 maven=3.9.8 |
   | Powered by | Apache Yetus 0.15.0 https://yetus.apache.org |
   
   
   This message was automatically generated.
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-29137 Add basic config type validation [hbase]

Posted by "junegunn (via GitHub)" <gi...@apache.org>.
junegunn commented on code in PR #6709:
URL: https://github.com/apache/hbase/pull/6709#discussion_r1997001304


##########
hbase-common/src/main/java/org/apache/hadoop/hbase/conf/ConfigKey.java:
##########
@@ -0,0 +1,159 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hbase.conf;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.function.Predicate;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.yetus.audience.InterfaceAudience;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Utility class for basic validation of configuration values.
+ */
+@InterfaceAudience.Private
+public class ConfigKey {

Review Comment:
   Good point. 60e6afd771b328cd7ef06e6343425f7c11ba102f



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-29137 Add basic config type validation [hbase]

Posted by "Apache-HBase (via GitHub)" <gi...@apache.org>.
Apache-HBase commented on PR #6709:
URL: https://github.com/apache/hbase/pull/6709#issuecomment-2733791958

   :confetti_ball: **+1 overall**
   
   
   
   
   
   
   | Vote | Subsystem | Runtime |  Logfile | Comment |
   |:----:|----------:|--------:|:--------:|:-------:|
   | +0 :ok: |  reexec  |   6m 17s |  |  Docker mode activated.  |
   |||| _ Prechecks _ |
   | +1 :green_heart: |  dupname  |   0m  0s |  |  No case conflicting files found.  |
   | +0 :ok: |  codespell  |   0m  1s |  |  codespell was not available.  |
   | +0 :ok: |  detsecrets  |   0m  1s |  |  detect-secrets was not available.  |
   | +1 :green_heart: |  @author  |   0m  0s |  |  The patch does not contain any @author tags.  |
   | +1 :green_heart: |  hbaseanti  |   0m  0s |  |  Patch does not have any anti-patterns.  |
   |||| _ master Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 21s |  |  Maven dependency ordering for branch  |
   | +1 :green_heart: |  mvninstall  |   3m 42s |  |  master passed  |
   | +1 :green_heart: |  compile  |   3m 57s |  |  master passed  |
   | +1 :green_heart: |  checkstyle  |   0m 54s |  |  master passed  |
   | +1 :green_heart: |  spotbugs  |   2m 12s |  |  master passed  |
   | +1 :green_heart: |  spotless  |   0m 47s |  |  branch has no errors when running spotless:check.  |
   | -0 :warning: |  patch  |   1m  0s |  |  Used diff version of patch file. Binary files and potentially other changes not applied. Please rebase and squash commits if necessary.  |
   |||| _ Patch Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 11s |  |  Maven dependency ordering for patch  |
   | +1 :green_heart: |  mvninstall  |   4m 33s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |   4m  5s |  |  the patch passed  |
   | -0 :warning: |  javac  |   0m 41s | [/results-compile-javac-hbase-common.txt](https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/7/artifact/yetus-general-check/output/results-compile-javac-hbase-common.txt) |  hbase-common generated 2 new + 70 unchanged - 0 fixed = 72 total (was 70)  |
   | +1 :green_heart: |  blanks  |   0m  0s |  |  The patch has no blanks issues.  |
   | +1 :green_heart: |  checkstyle  |   0m 53s |  |  the patch passed  |
   | +1 :green_heart: |  spotbugs  |   2m 29s |  |  the patch passed  |
   | +1 :green_heart: |  hadoopcheck  |  18m 51s |  |  Patch does not cause any errors with Hadoop 3.3.6 3.4.0.  |
   | +1 :green_heart: |  spotless  |   0m 49s |  |  patch has no errors when running spotless:check.  |
   |||| _ Other Tests _ |
   | +1 :green_heart: |  asflicense  |   0m 23s |  |  The patch does not generate ASF License warnings.  |
   |  |   |  61m 50s |  |  |
   
   
   | Subsystem | Report/Notes |
   |----------:|:-------------|
   | Docker | ClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/7/artifact/yetus-general-check/output/Dockerfile |
   | GITHUB PR | https://github.com/apache/hbase/pull/6709 |
   | Optional Tests | dupname asflicense javac spotbugs checkstyle codespell detsecrets compile hadoopcheck hbaseanti spotless |
   | uname | Linux db173b5f34a4 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux |
   | Build tool | maven |
   | Personality | dev-support/hbase-personality.sh |
   | git revision | master / 689976c245b3f9ab7b5b65f10d5ead75dcf7d15c |
   | Default Java | Eclipse Adoptium-17.0.11+9 |
   | Max. process+thread count | 85 (vs. ulimit of 30000) |
   | modules | C: hbase-common hbase-server U: . |
   | Console output | https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/7/console |
   | versions | git=2.34.1 maven=3.9.8 spotbugs=4.7.3 |
   | Powered by | Apache Yetus 0.15.0 https://yetus.apache.org |
   
   
   This message was automatically generated.
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-29137 Add basic config type validation [hbase]

Posted by "junegunn (via GitHub)" <gi...@apache.org>.
junegunn commented on code in PR #6709:
URL: https://github.com/apache/hbase/pull/6709#discussion_r2037068974


##########
hbase-server/src/main/java/org/apache/hadoop/hbase/util/TableDescriptorChecker.java:
##########
@@ -79,6 +80,14 @@ public static void sanityCheck(final Configuration c, final TableDescriptor td)
     // Setting logs to warning instead of throwing exception if sanityChecks are disabled
     boolean logWarn = !shouldSanityCheck(conf);
 
+    // Check value types
+    warnOrThrowExceptionForFailure(logWarn, () -> ConfigKey.validate(conf));

Review Comment:
   Hi @guluo2016, thanks for the review.
   
   This code does check for table-level configuration and protects against such errors.
   
   ```
   hbase:001:0> create 't01', 'info', { CONFIGURATION => { 'hbase.hstore.defaultengine.compactionpolicy.class' => 'com.test.App' }}
   
   ERROR: org.apache.hadoop.hbase.DoNotRetryIOException: 'hbase.hstore.defaultengine.compactionpolicy.class' must be a class. Set hbase.table.sanity.checks to false at conf or table descriptor if you want to bypass sanity checks
           at org.apache.hadoop.hbase.util.TableDescriptorChecker.warnOrThrowExceptionForFailure(TableDescriptorChecker.java:327)
           at org.apache.hadoop.hbase.util.TableDescriptorChecker.warnOrThrowExceptionForFailure(TableDescriptorChecker.java:344)
           at org.apache.hadoop.hbase.util.TableDescriptorChecker.sanityCheck(TableDescriptorChecker.java:84)
           at org.apache.hadoop.hbase.master.HMaster.createTable(HMaster.java:2461)
           at org.apache.hadoop.hbase.master.MasterRpcServices.createTable(MasterRpcServices.java:786)
           at org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java)
           at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:457)
           at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:124)
           at org.apache.hadoop.hbase.ipc.RpcHandler.run(RpcHandler.java:102)
           at org.apache.hadoop.hbase.ipc.RpcHandler.run(RpcHandler.java:82)
   Caused by: java.lang.IllegalArgumentException: 'hbase.hstore.defaultengine.compactionpolicy.class' must be a class.
           at org.apache.hadoop.hbase.conf.ConfigKey.lambda$CLASS$8(ConfigKey.java:109)
           at org.apache.hadoop.hbase.conf.ConfigKey.lambda$validate$9(ConfigKey.java:133)
           at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
           at org.apache.hadoop.hbase.conf.ConfigKey.validate(ConfigKey.java:130)
           at org.apache.hadoop.hbase.util.TableDescriptorChecker.lambda$sanityCheck$0(TableDescriptorChecker.java:84)
           at org.apache.hadoop.hbase.util.TableDescriptorChecker.warnOrThrowExceptionForFailure(TableDescriptorChecker.java:342)
           ... 8 more
   Caused by: java.lang.ClassNotFoundException: com.test.App
           at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
           at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
           at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
           at java.base/java.lang.Class.forName0(Native Method)
           at java.base/java.lang.Class.forName(Class.java:375)
           at org.apache.hadoop.hbase.conf.ConfigKey.lambda$CLASS$8(ConfigKey.java:104)
           ... 13 more
   
   For usage try 'help "create"'
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-29137 Add basic config type validation [hbase]

Posted by "guluo2016 (via GitHub)" <gi...@apache.org>.
guluo2016 commented on code in PR #6709:
URL: https://github.com/apache/hbase/pull/6709#discussion_r2038718568


##########
hbase-server/src/main/java/org/apache/hadoop/hbase/util/TableDescriptorChecker.java:
##########
@@ -79,6 +80,14 @@ public static void sanityCheck(final Configuration c, final TableDescriptor td)
     // Setting logs to warning instead of throwing exception if sanityChecks are disabled
     boolean logWarn = !shouldSanityCheck(conf);
 
+    // Check value types
+    warnOrThrowExceptionForFailure(logWarn, () -> ConfigKey.validate(conf));

Review Comment:
   I’ve also tested it manually,  it behaves as expected.
   No further issues for me, thanks.
   



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-29137 Add basic config type validation [hbase]

Posted by "Apache-HBase (via GitHub)" <gi...@apache.org>.
Apache-HBase commented on PR #6709:
URL: https://github.com/apache/hbase/pull/6709#issuecomment-2726421686

   :confetti_ball: **+1 overall**
   
   
   
   
   
   
   | Vote | Subsystem | Runtime |  Logfile | Comment |
   |:----:|----------:|--------:|:--------:|:-------:|
   | +0 :ok: |  reexec  |   0m 28s |  |  Docker mode activated.  |
   | -0 :warning: |  yetus  |   0m  2s |  |  Unprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --author-ignore-list --blanks-eol-ignore-file --blanks-tabs-ignore-file --quick-hadoopcheck  |
   |||| _ Prechecks _ |
   |||| _ master Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 12s |  |  Maven dependency ordering for branch  |
   | +1 :green_heart: |  mvninstall  |   3m 13s |  |  master passed  |
   | +1 :green_heart: |  compile  |   1m 16s |  |  master passed  |
   | +1 :green_heart: |  javadoc  |   0m 44s |  |  master passed  |
   | +1 :green_heart: |  shadedjars  |   6m  1s |  |  branch has no errors when building our shaded downstream artifacts.  |
   |||| _ Patch Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 12s |  |  Maven dependency ordering for patch  |
   | +1 :green_heart: |  mvninstall  |   3m 10s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |   1m 17s |  |  the patch passed  |
   | +1 :green_heart: |  javac  |   1m 17s |  |  the patch passed  |
   | +1 :green_heart: |  javadoc  |   0m 44s |  |  the patch passed  |
   | +1 :green_heart: |  shadedjars  |   5m 58s |  |  patch has no errors when building our shaded downstream artifacts.  |
   |||| _ Other Tests _ |
   | +1 :green_heart: |  unit  |   2m 16s |  |  hbase-common in the patch passed.  |
   | +1 :green_heart: |  unit  | 218m 36s |  |  hbase-server in the patch passed.  |
   |  |   | 249m 22s |  |  |
   
   
   | Subsystem | Report/Notes |
   |----------:|:-------------|
   | Docker | ClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/4/artifact/yetus-jdk17-hadoop3-check/output/Dockerfile |
   | GITHUB PR | https://github.com/apache/hbase/pull/6709 |
   | Optional Tests | javac javadoc unit compile shadedjars |
   | uname | Linux 558869f09d06 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux |
   | Build tool | maven |
   | Personality | dev-support/hbase-personality.sh |
   | git revision | master / f5ebddaebebece06d69274abf68b7253dbfe9f41 |
   | Default Java | Eclipse Adoptium-17.0.11+9 |
   |  Test Results | https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/4/testReport/ |
   | Max. process+thread count | 4630 (vs. ulimit of 30000) |
   | modules | C: hbase-common hbase-server U: . |
   | Console output | https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/4/console |
   | versions | git=2.34.1 maven=3.9.8 |
   | Powered by | Apache Yetus 0.15.0 https://yetus.apache.org |
   
   
   This message was automatically generated.
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-29137 Add basic config type validation [hbase]

Posted by "Apache-HBase (via GitHub)" <gi...@apache.org>.
Apache-HBase commented on PR #6709:
URL: https://github.com/apache/hbase/pull/6709#issuecomment-2667973959

   :confetti_ball: **+1 overall**
   
   
   
   
   
   
   | Vote | Subsystem | Runtime |  Logfile | Comment |
   |:----:|----------:|--------:|:--------:|:-------:|
   | +0 :ok: |  reexec  |   0m 42s |  |  Docker mode activated.  |
   |||| _ Prechecks _ |
   | +1 :green_heart: |  dupname  |   0m  1s |  |  No case conflicting files found.  |
   | +0 :ok: |  codespell  |   0m  0s |  |  codespell was not available.  |
   | +0 :ok: |  detsecrets  |   0m  0s |  |  detect-secrets was not available.  |
   | +1 :green_heart: |  @author  |   0m  0s |  |  The patch does not contain any @author tags.  |
   | +1 :green_heart: |  hbaseanti  |   0m  0s |  |  Patch does not have any anti-patterns.  |
   |||| _ master Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 13s |  |  Maven dependency ordering for branch  |
   | +1 :green_heart: |  mvninstall  |   4m 31s |  |  master passed  |
   | +1 :green_heart: |  compile  |   4m 41s |  |  master passed  |
   | +1 :green_heart: |  checkstyle  |   0m 58s |  |  master passed  |
   | +1 :green_heart: |  spotbugs  |   2m 25s |  |  master passed  |
   | +1 :green_heart: |  spotless  |   0m 49s |  |  branch has no errors when running spotless:check.  |
   |||| _ Patch Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 11s |  |  Maven dependency ordering for patch  |
   | +1 :green_heart: |  mvninstall  |   4m 16s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |   4m 36s |  |  the patch passed  |
   | +1 :green_heart: |  javac  |   4m 36s |  |  the patch passed  |
   | +1 :green_heart: |  blanks  |   0m  0s |  |  The patch has no blanks issues.  |
   | -0 :warning: |  checkstyle  |   0m 20s | [/results-checkstyle-hbase-common.txt](https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/1/artifact/yetus-general-check/output/results-checkstyle-hbase-common.txt) |  hbase-common: The patch generated 1 new + 0 unchanged - 0 fixed = 1 total (was 0)  |
   | -0 :warning: |  checkstyle  |   0m 41s | [/results-checkstyle-hbase-server.txt](https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/1/artifact/yetus-general-check/output/results-checkstyle-hbase-server.txt) |  hbase-server: The patch generated 1 new + 28 unchanged - 0 fixed = 29 total (was 28)  |
   | +1 :green_heart: |  spotbugs  |   2m 42s |  |  the patch passed  |
   | +1 :green_heart: |  hadoopcheck  |  17m  1s |  |  Patch does not cause any errors with Hadoop 3.3.6 3.4.0.  |
   | +1 :green_heart: |  spotless  |   1m 18s |  |  patch has no errors when running spotless:check.  |
   |||| _ Other Tests _ |
   | +1 :green_heart: |  asflicense  |   0m 41s |  |  The patch does not generate ASF License warnings.  |
   |  |   |  56m 37s |  |  |
   
   
   | Subsystem | Report/Notes |
   |----------:|:-------------|
   | Docker | ClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/1/artifact/yetus-general-check/output/Dockerfile |
   | GITHUB PR | https://github.com/apache/hbase/pull/6709 |
   | Optional Tests | dupname asflicense javac spotbugs checkstyle codespell detsecrets compile hadoopcheck hbaseanti spotless |
   | uname | Linux 8d545a98116e 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux |
   | Build tool | maven |
   | Personality | dev-support/hbase-personality.sh |
   | git revision | master / 5ac48b8d1ae787e681007b29db0ce12fabbc1eee |
   | Default Java | Eclipse Adoptium-17.0.11+9 |
   | Max. process+thread count | 87 (vs. ulimit of 30000) |
   | modules | C: hbase-common hbase-server U: . |
   | Console output | https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/1/console |
   | versions | git=2.34.1 maven=3.9.8 spotbugs=4.7.3 |
   | Powered by | Apache Yetus 0.15.0 https://yetus.apache.org |
   
   
   This message was automatically generated.
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-29137 Add basic config type validation [hbase]

Posted by "Apache-HBase (via GitHub)" <gi...@apache.org>.
Apache-HBase commented on PR #6709:
URL: https://github.com/apache/hbase/pull/6709#issuecomment-2726291740

   :confetti_ball: **+1 overall**
   
   
   
   
   
   
   | Vote | Subsystem | Runtime |  Logfile | Comment |
   |:----:|----------:|--------:|:--------:|:-------:|
   | +0 :ok: |  reexec  |   0m 28s |  |  Docker mode activated.  |
   |||| _ Prechecks _ |
   | +1 :green_heart: |  dupname  |   0m  0s |  |  No case conflicting files found.  |
   | +0 :ok: |  codespell  |   0m  0s |  |  codespell was not available.  |
   | +0 :ok: |  detsecrets  |   0m  0s |  |  detect-secrets was not available.  |
   | +1 :green_heart: |  @author  |   0m  0s |  |  The patch does not contain any @author tags.  |
   | +1 :green_heart: |  hbaseanti  |   0m  0s |  |  Patch does not have any anti-patterns.  |
   |||| _ master Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 11s |  |  Maven dependency ordering for branch  |
   | +1 :green_heart: |  mvninstall  |   3m 13s |  |  master passed  |
   | +1 :green_heart: |  compile  |   3m 47s |  |  master passed  |
   | +1 :green_heart: |  checkstyle  |   0m 49s |  |  master passed  |
   | +1 :green_heart: |  spotbugs  |   2m  0s |  |  master passed  |
   | +1 :green_heart: |  spotless  |   0m 45s |  |  branch has no errors when running spotless:check.  |
   |||| _ Patch Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 12s |  |  Maven dependency ordering for patch  |
   | +1 :green_heart: |  mvninstall  |   3m  6s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |   3m 44s |  |  the patch passed  |
   | -0 :warning: |  javac  |   0m 39s | [/results-compile-javac-hbase-common.txt](https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/4/artifact/yetus-general-check/output/results-compile-javac-hbase-common.txt) |  hbase-common generated 2 new + 70 unchanged - 0 fixed = 72 total (was 70)  |
   | +1 :green_heart: |  blanks  |   0m  0s |  |  The patch has no blanks issues.  |
   | -0 :warning: |  checkstyle  |   0m 13s | [/results-checkstyle-hbase-common.txt](https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/4/artifact/yetus-general-check/output/results-checkstyle-hbase-common.txt) |  hbase-common: The patch generated 1 new + 0 unchanged - 0 fixed = 1 total (was 0)  |
   | -0 :warning: |  checkstyle  |   0m 35s | [/results-checkstyle-hbase-server.txt](https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/4/artifact/yetus-general-check/output/results-checkstyle-hbase-server.txt) |  hbase-server: The patch generated 1 new + 28 unchanged - 0 fixed = 29 total (was 28)  |
   | +1 :green_heart: |  spotbugs  |   2m 15s |  |  the patch passed  |
   | +1 :green_heart: |  hadoopcheck  |  11m 55s |  |  Patch does not cause any errors with Hadoop 3.3.6 3.4.0.  |
   | +1 :green_heart: |  spotless  |   0m 44s |  |  patch has no errors when running spotless:check.  |
   |||| _ Other Tests _ |
   | +1 :green_heart: |  asflicense  |   0m 17s |  |  The patch does not generate ASF License warnings.  |
   |  |   |  41m 50s |  |  |
   
   
   | Subsystem | Report/Notes |
   |----------:|:-------------|
   | Docker | ClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/4/artifact/yetus-general-check/output/Dockerfile |
   | GITHUB PR | https://github.com/apache/hbase/pull/6709 |
   | Optional Tests | dupname asflicense javac spotbugs checkstyle codespell detsecrets compile hadoopcheck hbaseanti spotless |
   | uname | Linux 459be50cd7f3 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux |
   | Build tool | maven |
   | Personality | dev-support/hbase-personality.sh |
   | git revision | master / f5ebddaebebece06d69274abf68b7253dbfe9f41 |
   | Default Java | Eclipse Adoptium-17.0.11+9 |
   | Max. process+thread count | 86 (vs. ulimit of 30000) |
   | modules | C: hbase-common hbase-server U: . |
   | Console output | https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/4/console |
   | versions | git=2.34.1 maven=3.9.8 spotbugs=4.7.3 |
   | Powered by | Apache Yetus 0.15.0 https://yetus.apache.org |
   
   
   This message was automatically generated.
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-29137 Add basic config type validation [hbase]

Posted by "Apache9 (via GitHub)" <gi...@apache.org>.
Apache9 commented on code in PR #6709:
URL: https://github.com/apache/hbase/pull/6709#discussion_r1996869334


##########
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ConstantSizeRegionSplitPolicy.java:
##########
@@ -42,6 +43,9 @@ public class ConstantSizeRegionSplitPolicy extends RegionSplitPolicy {
   private double jitterRate;
   protected boolean overallHRegionFiles;
 
+  public final String MAX_FILESIZE_JITTER_KEY =

Review Comment:
   public static final?



##########
hbase-common/src/main/java/org/apache/hadoop/hbase/conf/ConfigKey.java:
##########
@@ -0,0 +1,159 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hbase.conf;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.function.Predicate;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.yetus.audience.InterfaceAudience;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Utility class for basic validation of configuration values.
+ */
+@InterfaceAudience.Private
+public class ConfigKey {

Review Comment:
   Make this class final and add a private constructor?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-29137 Add basic config type validation [hbase]

Posted by "junegunn (via GitHub)" <gi...@apache.org>.
junegunn commented on PR #6709:
URL: https://github.com/apache/hbase/pull/6709#issuecomment-2727159712

   > Please open a PR for branch-2 too?
   
   Done. #6799.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-29137 Add basic config type validation [hbase]

Posted by "junegunn (via GitHub)" <gi...@apache.org>.
junegunn commented on PR #6709:
URL: https://github.com/apache/hbase/pull/6709#issuecomment-2753423142

   Build failures seem unrelated. Rebased to master and force-pushed to trigger a rebuild.
   
   @Apache9 Hi, is there any way I can trigger a rebuild without force-pushing?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-29137 Add basic config type validation [hbase]

Posted by "Apache-HBase (via GitHub)" <gi...@apache.org>.
Apache-HBase commented on PR #6709:
URL: https://github.com/apache/hbase/pull/6709#issuecomment-2691904380

   :confetti_ball: **+1 overall**
   
   
   
   
   
   
   | Vote | Subsystem | Runtime |  Logfile | Comment |
   |:----:|----------:|--------:|:--------:|:-------:|
   | +0 :ok: |  reexec  |   0m 29s |  |  Docker mode activated.  |
   |||| _ Prechecks _ |
   | +1 :green_heart: |  dupname  |   0m  0s |  |  No case conflicting files found.  |
   | +0 :ok: |  codespell  |   0m  0s |  |  codespell was not available.  |
   | +0 :ok: |  detsecrets  |   0m  0s |  |  detect-secrets was not available.  |
   | +1 :green_heart: |  @author  |   0m  0s |  |  The patch does not contain any @author tags.  |
   | +1 :green_heart: |  hbaseanti  |   0m  0s |  |  Patch does not have any anti-patterns.  |
   |||| _ master Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 38s |  |  Maven dependency ordering for branch  |
   | +1 :green_heart: |  mvninstall  |   3m 33s |  |  master passed  |
   | +1 :green_heart: |  compile  |   3m 48s |  |  master passed  |
   | +1 :green_heart: |  checkstyle  |   0m 51s |  |  master passed  |
   | +1 :green_heart: |  spotbugs  |   2m  3s |  |  master passed  |
   | +1 :green_heart: |  spotless  |   0m 45s |  |  branch has no errors when running spotless:check.  |
   |||| _ Patch Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 11s |  |  Maven dependency ordering for patch  |
   | +1 :green_heart: |  mvninstall  |   2m 59s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |   3m 45s |  |  the patch passed  |
   | +1 :green_heart: |  javac  |   3m 45s |  |  the patch passed  |
   | +1 :green_heart: |  blanks  |   0m  0s |  |  The patch has no blanks issues.  |
   | -0 :warning: |  checkstyle  |   0m 13s | [/results-checkstyle-hbase-common.txt](https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/2/artifact/yetus-general-check/output/results-checkstyle-hbase-common.txt) |  hbase-common: The patch generated 1 new + 0 unchanged - 0 fixed = 1 total (was 0)  |
   | -0 :warning: |  checkstyle  |   0m 36s | [/results-checkstyle-hbase-server.txt](https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/2/artifact/yetus-general-check/output/results-checkstyle-hbase-server.txt) |  hbase-server: The patch generated 1 new + 28 unchanged - 0 fixed = 29 total (was 28)  |
   | +1 :green_heart: |  spotbugs  |   2m 13s |  |  the patch passed  |
   | +1 :green_heart: |  hadoopcheck  |  11m 48s |  |  Patch does not cause any errors with Hadoop 3.3.6 3.4.0.  |
   | +1 :green_heart: |  spotless  |   0m 43s |  |  patch has no errors when running spotless:check.  |
   |||| _ Other Tests _ |
   | +1 :green_heart: |  asflicense  |   0m 18s |  |  The patch does not generate ASF License warnings.  |
   |  |   |  42m 26s |  |  |
   
   
   | Subsystem | Report/Notes |
   |----------:|:-------------|
   | Docker | ClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/2/artifact/yetus-general-check/output/Dockerfile |
   | GITHUB PR | https://github.com/apache/hbase/pull/6709 |
   | Optional Tests | dupname asflicense javac spotbugs checkstyle codespell detsecrets compile hadoopcheck hbaseanti spotless |
   | uname | Linux 30164d9ca52d 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux |
   | Build tool | maven |
   | Personality | dev-support/hbase-personality.sh |
   | git revision | master / 239179b6664674064792b1d61c158f9885add17f |
   | Default Java | Eclipse Adoptium-17.0.11+9 |
   | Max. process+thread count | 83 (vs. ulimit of 30000) |
   | modules | C: hbase-common hbase-server U: . |
   | Console output | https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/2/console |
   | versions | git=2.34.1 maven=3.9.8 spotbugs=4.7.3 |
   | Powered by | Apache Yetus 0.15.0 https://yetus.apache.org |
   
   
   This message was automatically generated.
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-29137 Add basic config type validation [hbase]

Posted by "Apache-HBase (via GitHub)" <gi...@apache.org>.
Apache-HBase commented on PR #6709:
URL: https://github.com/apache/hbase/pull/6709#issuecomment-2726784124

   :confetti_ball: **+1 overall**
   
   
   
   
   
   
   | Vote | Subsystem | Runtime |  Logfile | Comment |
   |:----:|----------:|--------:|:--------:|:-------:|
   | +0 :ok: |  reexec  |   0m 29s |  |  Docker mode activated.  |
   |||| _ Prechecks _ |
   | +1 :green_heart: |  dupname  |   0m  0s |  |  No case conflicting files found.  |
   | +0 :ok: |  codespell  |   0m  0s |  |  codespell was not available.  |
   | +0 :ok: |  detsecrets  |   0m  0s |  |  detect-secrets was not available.  |
   | +1 :green_heart: |  @author  |   0m  0s |  |  The patch does not contain any @author tags.  |
   | +1 :green_heart: |  hbaseanti  |   0m  0s |  |  Patch does not have any anti-patterns.  |
   |||| _ master Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 10s |  |  Maven dependency ordering for branch  |
   | +1 :green_heart: |  mvninstall  |   3m 11s |  |  master passed  |
   | +1 :green_heart: |  compile  |   3m 47s |  |  master passed  |
   | +1 :green_heart: |  checkstyle  |   0m 50s |  |  master passed  |
   | +1 :green_heart: |  spotbugs  |   2m  3s |  |  master passed  |
   | +1 :green_heart: |  spotless  |   0m 46s |  |  branch has no errors when running spotless:check.  |
   |||| _ Patch Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 11s |  |  Maven dependency ordering for patch  |
   | +1 :green_heart: |  mvninstall  |   3m  4s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |   3m 45s |  |  the patch passed  |
   | -0 :warning: |  javac  |   0m 39s | [/results-compile-javac-hbase-common.txt](https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/5/artifact/yetus-general-check/output/results-compile-javac-hbase-common.txt) |  hbase-common generated 2 new + 70 unchanged - 0 fixed = 72 total (was 70)  |
   | +1 :green_heart: |  blanks  |   0m  0s |  |  The patch has no blanks issues.  |
   | +1 :green_heart: |  checkstyle  |   0m 50s |  |  the patch passed  |
   | +1 :green_heart: |  spotbugs  |   2m 14s |  |  the patch passed  |
   | +1 :green_heart: |  hadoopcheck  |  11m 44s |  |  Patch does not cause any errors with Hadoop 3.3.6 3.4.0.  |
   | +1 :green_heart: |  spotless  |   0m 43s |  |  patch has no errors when running spotless:check.  |
   |||| _ Other Tests _ |
   | +1 :green_heart: |  asflicense  |   0m 17s |  |  The patch does not generate ASF License warnings.  |
   |  |   |  41m 35s |  |  |
   
   
   | Subsystem | Report/Notes |
   |----------:|:-------------|
   | Docker | ClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/5/artifact/yetus-general-check/output/Dockerfile |
   | GITHUB PR | https://github.com/apache/hbase/pull/6709 |
   | Optional Tests | dupname asflicense javac spotbugs checkstyle codespell detsecrets compile hadoopcheck hbaseanti spotless |
   | uname | Linux 98826931f2dc 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux |
   | Build tool | maven |
   | Personality | dev-support/hbase-personality.sh |
   | git revision | master / 2b2cc2f74a9b0f95f275529e77a732e897b8953c |
   | Default Java | Eclipse Adoptium-17.0.11+9 |
   | Max. process+thread count | 85 (vs. ulimit of 30000) |
   | modules | C: hbase-common hbase-server U: . |
   | Console output | https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/5/console |
   | versions | git=2.34.1 maven=3.9.8 spotbugs=4.7.3 |
   | Powered by | Apache Yetus 0.15.0 https://yetus.apache.org |
   
   
   This message was automatically generated.
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-29137 Add basic config type validation [hbase]

Posted by "junegunn (via GitHub)" <gi...@apache.org>.
junegunn commented on code in PR #6709:
URL: https://github.com/apache/hbase/pull/6709#discussion_r1997003224


##########
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ConstantSizeRegionSplitPolicy.java:
##########
@@ -42,6 +43,9 @@ public class ConstantSizeRegionSplitPolicy extends RegionSplitPolicy {
   private double jitterRate;
   protected boolean overallHRegionFiles;
 
+  public final String MAX_FILESIZE_JITTER_KEY =

Review Comment:
   Good catch! 2b2cc2f74a9b0f95f275529e77a732e897b8953c



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-29137 Add basic config type validation [hbase]

Posted by "Apache-HBase (via GitHub)" <gi...@apache.org>.
Apache-HBase commented on PR #6709:
URL: https://github.com/apache/hbase/pull/6709#issuecomment-2668499798

   :confetti_ball: **+1 overall**
   
   
   
   
   
   
   | Vote | Subsystem | Runtime |  Logfile | Comment |
   |:----:|----------:|--------:|:--------:|:-------:|
   | +0 :ok: |  reexec  |   0m 45s |  |  Docker mode activated.  |
   | -0 :warning: |  yetus  |   0m  2s |  |  Unprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --author-ignore-list --blanks-eol-ignore-file --blanks-tabs-ignore-file --quick-hadoopcheck  |
   |||| _ Prechecks _ |
   |||| _ master Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 13s |  |  Maven dependency ordering for branch  |
   | +1 :green_heart: |  mvninstall  |   4m 34s |  |  master passed  |
   | +1 :green_heart: |  compile  |   1m 42s |  |  master passed  |
   | +1 :green_heart: |  javadoc  |   0m 53s |  |  master passed  |
   | +1 :green_heart: |  shadedjars  |   6m 58s |  |  branch has no errors when building our shaded downstream artifacts.  |
   |||| _ Patch Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 17s |  |  Maven dependency ordering for patch  |
   | +1 :green_heart: |  mvninstall  |   4m 11s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |   1m 38s |  |  the patch passed  |
   | +1 :green_heart: |  javac  |   1m 38s |  |  the patch passed  |
   | +1 :green_heart: |  javadoc  |   0m 54s |  |  the patch passed  |
   | +1 :green_heart: |  shadedjars  |   6m 52s |  |  patch has no errors when building our shaded downstream artifacts.  |
   |||| _ Other Tests _ |
   | +1 :green_heart: |  unit  |   2m 36s |  |  hbase-common in the patch passed.  |
   | +1 :green_heart: |  unit  | 220m  2s |  |  hbase-server in the patch passed.  |
   |  |   | 256m 47s |  |  |
   
   
   | Subsystem | Report/Notes |
   |----------:|:-------------|
   | Docker | ClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/1/artifact/yetus-jdk17-hadoop3-check/output/Dockerfile |
   | GITHUB PR | https://github.com/apache/hbase/pull/6709 |
   | Optional Tests | javac javadoc unit compile shadedjars |
   | uname | Linux a180649348e4 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux |
   | Build tool | maven |
   | Personality | dev-support/hbase-personality.sh |
   | git revision | master / 5ac48b8d1ae787e681007b29db0ce12fabbc1eee |
   | Default Java | Eclipse Adoptium-17.0.11+9 |
   |  Test Results | https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/1/testReport/ |
   | Max. process+thread count | 5082 (vs. ulimit of 30000) |
   | modules | C: hbase-common hbase-server U: . |
   | Console output | https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/1/console |
   | versions | git=2.34.1 maven=3.9.8 |
   | Powered by | Apache Yetus 0.15.0 https://yetus.apache.org |
   
   
   This message was automatically generated.
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-29137 Add basic config type validation [hbase]

Posted by "Apache-HBase (via GitHub)" <gi...@apache.org>.
Apache-HBase commented on PR #6709:
URL: https://github.com/apache/hbase/pull/6709#issuecomment-2749331245

   :confetti_ball: **+1 overall**
   
   
   
   
   
   
   | Vote | Subsystem | Runtime |  Logfile | Comment |
   |:----:|----------:|--------:|:--------:|:-------:|
   | +0 :ok: |  reexec  |   0m 29s |  |  Docker mode activated.  |
   |||| _ Prechecks _ |
   | +1 :green_heart: |  dupname  |   0m  1s |  |  No case conflicting files found.  |
   | +0 :ok: |  codespell  |   0m  0s |  |  codespell was not available.  |
   | +0 :ok: |  detsecrets  |   0m  0s |  |  detect-secrets was not available.  |
   | +1 :green_heart: |  @author  |   0m  0s |  |  The patch does not contain any @author tags.  |
   | +1 :green_heart: |  hbaseanti  |   0m  0s |  |  Patch does not have any anti-patterns.  |
   |||| _ master Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 43s |  |  Maven dependency ordering for branch  |
   | +1 :green_heart: |  mvninstall  |   3m 28s |  |  master passed  |
   | +1 :green_heart: |  compile  |   3m 56s |  |  master passed  |
   | +1 :green_heart: |  checkstyle  |   0m 53s |  |  master passed  |
   | +1 :green_heart: |  spotbugs  |   2m  7s |  |  master passed  |
   | +1 :green_heart: |  spotless  |   0m 47s |  |  branch has no errors when running spotless:check.  |
   |||| _ Patch Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 11s |  |  Maven dependency ordering for patch  |
   | +1 :green_heart: |  mvninstall  |   2m 59s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |   3m 46s |  |  the patch passed  |
   | -0 :warning: |  javac  |   0m 39s | [/results-compile-javac-hbase-common.txt](https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/8/artifact/yetus-general-check/output/results-compile-javac-hbase-common.txt) |  hbase-common generated 2 new + 70 unchanged - 0 fixed = 72 total (was 70)  |
   | +1 :green_heart: |  blanks  |   0m  0s |  |  The patch has no blanks issues.  |
   | +1 :green_heart: |  checkstyle  |   0m 49s |  |  the patch passed  |
   | +1 :green_heart: |  spotbugs  |   2m 16s |  |  the patch passed  |
   | +1 :green_heart: |  hadoopcheck  |  11m 53s |  |  Patch does not cause any errors with Hadoop 3.3.6 3.4.0.  |
   | +1 :green_heart: |  spotless  |   0m 44s |  |  patch has no errors when running spotless:check.  |
   |||| _ Other Tests _ |
   | +1 :green_heart: |  asflicense  |   0m 17s |  |  The patch does not generate ASF License warnings.  |
   |  |   |  42m 58s |  |  |
   
   
   | Subsystem | Report/Notes |
   |----------:|:-------------|
   | Docker | ClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/8/artifact/yetus-general-check/output/Dockerfile |
   | GITHUB PR | https://github.com/apache/hbase/pull/6709 |
   | Optional Tests | dupname asflicense javac spotbugs checkstyle codespell detsecrets compile hadoopcheck hbaseanti spotless |
   | uname | Linux fec069295102 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux |
   | Build tool | maven |
   | Personality | dev-support/hbase-personality.sh |
   | git revision | master / 22574b203a2e7d5177ae0bc38a2cc9df9334df1f |
   | Default Java | Eclipse Adoptium-17.0.11+9 |
   | Max. process+thread count | 84 (vs. ulimit of 30000) |
   | modules | C: hbase-common hbase-server U: . |
   | Console output | https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/8/console |
   | versions | git=2.34.1 maven=3.9.8 spotbugs=4.7.3 |
   | Powered by | Apache Yetus 0.15.0 https://yetus.apache.org |
   
   
   This message was automatically generated.
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-29137 Add basic config type validation [hbase]

Posted by "Apache-HBase (via GitHub)" <gi...@apache.org>.
Apache-HBase commented on PR #6709:
URL: https://github.com/apache/hbase/pull/6709#issuecomment-2734878431

   :broken_heart: **-1 overall**
   
   
   
   
   
   
   | Vote | Subsystem | Runtime |  Logfile | Comment |
   |:----:|----------:|--------:|:--------:|:-------:|
   | +0 :ok: |  reexec  |   5m 49s |  |  Docker mode activated.  |
   | -0 :warning: |  yetus  |   0m  3s |  |  Unprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --author-ignore-list --blanks-eol-ignore-file --blanks-tabs-ignore-file --quick-hadoopcheck  |
   |||| _ Prechecks _ |
   |||| _ master Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 16s |  |  Maven dependency ordering for branch  |
   | +1 :green_heart: |  mvninstall  |   4m 12s |  |  master passed  |
   | +1 :green_heart: |  compile  |   1m 44s |  |  master passed  |
   | +1 :green_heart: |  javadoc  |   1m  0s |  |  master passed  |
   | +1 :green_heart: |  shadedjars  |   7m 13s |  |  branch has no errors when building our shaded downstream artifacts.  |
   | -0 :warning: |  patch  |   7m 32s |  |  Used diff version of patch file. Binary files and potentially other changes not applied. Please rebase and squash commits if necessary.  |
   |||| _ Patch Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 13s |  |  Maven dependency ordering for patch  |
   | +1 :green_heart: |  mvninstall  |   4m 44s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |   1m 31s |  |  the patch passed  |
   | +1 :green_heart: |  javac  |   1m 31s |  |  the patch passed  |
   | +1 :green_heart: |  javadoc  |   0m 56s |  |  the patch passed  |
   | +1 :green_heart: |  shadedjars  |   7m  4s |  |  patch has no errors when building our shaded downstream artifacts.  |
   |||| _ Other Tests _ |
   | +1 :green_heart: |  unit  |   3m  6s |  |  hbase-common in the patch passed.  |
   | -1 :x: |  unit  | 353m 52s | [/patch-unit-hbase-server.txt](https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/7/artifact/yetus-jdk17-hadoop3-check/output/patch-unit-hbase-server.txt) |  hbase-server in the patch failed.  |
   |  |   | 413m 52s |  |  |
   
   
   | Subsystem | Report/Notes |
   |----------:|:-------------|
   | Docker | ClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/7/artifact/yetus-jdk17-hadoop3-check/output/Dockerfile |
   | GITHUB PR | https://github.com/apache/hbase/pull/6709 |
   | Optional Tests | javac javadoc unit compile shadedjars |
   | uname | Linux c6cded672a31 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux |
   | Build tool | maven |
   | Personality | dev-support/hbase-personality.sh |
   | git revision | master / 689976c245b3f9ab7b5b65f10d5ead75dcf7d15c |
   | Default Java | Eclipse Adoptium-17.0.11+9 |
   |  Test Results | https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/7/testReport/ |
   | Max. process+thread count | 4421 (vs. ulimit of 30000) |
   | modules | C: hbase-common hbase-server U: . |
   | Console output | https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/7/console |
   | versions | git=2.34.1 maven=3.9.8 |
   | Powered by | Apache Yetus 0.15.0 https://yetus.apache.org |
   
   
   This message was automatically generated.
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-29137 Add basic config type validation [hbase]

Posted by "Apache-HBase (via GitHub)" <gi...@apache.org>.
Apache-HBase commented on PR #6709:
URL: https://github.com/apache/hbase/pull/6709#issuecomment-2753551540

   :confetti_ball: **+1 overall**
   
   
   
   
   
   
   | Vote | Subsystem | Runtime |  Logfile | Comment |
   |:----:|----------:|--------:|:--------:|:-------:|
   | +0 :ok: |  reexec  |   0m 42s |  |  Docker mode activated.  |
   |||| _ Prechecks _ |
   | +1 :green_heart: |  dupname  |   0m  1s |  |  No case conflicting files found.  |
   | +0 :ok: |  codespell  |   0m  0s |  |  codespell was not available.  |
   | +0 :ok: |  detsecrets  |   0m  0s |  |  detect-secrets was not available.  |
   | +1 :green_heart: |  @author  |   0m  0s |  |  The patch does not contain any @author tags.  |
   | +1 :green_heart: |  hbaseanti  |   0m  0s |  |  Patch does not have any anti-patterns.  |
   |||| _ master Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 14s |  |  Maven dependency ordering for branch  |
   | +1 :green_heart: |  mvninstall  |   4m 23s |  |  master passed  |
   | +1 :green_heart: |  compile  |   5m 37s |  |  master passed  |
   | +1 :green_heart: |  checkstyle  |   1m 20s |  |  master passed  |
   | +1 :green_heart: |  spotbugs  |   2m 43s |  |  master passed  |
   | +1 :green_heart: |  spotless  |   1m 12s |  |  branch has no errors when running spotless:check.  |
   |||| _ Patch Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 13s |  |  Maven dependency ordering for patch  |
   | +1 :green_heart: |  mvninstall  |   4m 25s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |   5m 19s |  |  the patch passed  |
   | -0 :warning: |  javac  |   0m 56s | [/results-compile-javac-hbase-common.txt](https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/9/artifact/yetus-general-check/output/results-compile-javac-hbase-common.txt) |  hbase-common generated 2 new + 70 unchanged - 0 fixed = 72 total (was 70)  |
   | +1 :green_heart: |  blanks  |   0m  0s |  |  The patch has no blanks issues.  |
   | +1 :green_heart: |  checkstyle  |   1m 12s |  |  the patch passed  |
   | +1 :green_heart: |  spotbugs  |   3m  5s |  |  the patch passed  |
   | +1 :green_heart: |  hadoopcheck  |  16m  3s |  |  Patch does not cause any errors with Hadoop 3.3.6 3.4.0.  |
   | +1 :green_heart: |  spotless  |   0m 48s |  |  patch has no errors when running spotless:check.  |
   |||| _ Other Tests _ |
   | +1 :green_heart: |  asflicense  |   0m 19s |  |  The patch does not generate ASF License warnings.  |
   |  |   |  56m 32s |  |  |
   
   
   | Subsystem | Report/Notes |
   |----------:|:-------------|
   | Docker | ClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/9/artifact/yetus-general-check/output/Dockerfile |
   | GITHUB PR | https://github.com/apache/hbase/pull/6709 |
   | Optional Tests | dupname asflicense javac spotbugs checkstyle codespell detsecrets compile hadoopcheck hbaseanti spotless |
   | uname | Linux b0c690917173 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux |
   | Build tool | maven |
   | Personality | dev-support/hbase-personality.sh |
   | git revision | master / b76e12b7f32f2991c477b8eee854f277f1bf0a21 |
   | Default Java | Eclipse Adoptium-17.0.11+9 |
   | Max. process+thread count | 84 (vs. ulimit of 30000) |
   | modules | C: hbase-common hbase-server U: . |
   | Console output | https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/9/console |
   | versions | git=2.34.1 maven=3.9.8 spotbugs=4.7.3 |
   | Powered by | Apache Yetus 0.15.0 https://yetus.apache.org |
   
   
   This message was automatically generated.
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-29137 Add basic config type validation [hbase]

Posted by "Apache-HBase (via GitHub)" <gi...@apache.org>.
Apache-HBase commented on PR #6709:
URL: https://github.com/apache/hbase/pull/6709#issuecomment-2722036043

   :confetti_ball: **+1 overall**
   
   
   
   
   
   
   | Vote | Subsystem | Runtime |  Logfile | Comment |
   |:----:|----------:|--------:|:--------:|:-------:|
   | +0 :ok: |  reexec  |   0m 41s |  |  Docker mode activated.  |
   |||| _ Prechecks _ |
   | +1 :green_heart: |  dupname  |   0m  0s |  |  No case conflicting files found.  |
   | +0 :ok: |  codespell  |   0m  0s |  |  codespell was not available.  |
   | +0 :ok: |  detsecrets  |   0m  0s |  |  detect-secrets was not available.  |
   | +1 :green_heart: |  @author  |   0m  0s |  |  The patch does not contain any @author tags.  |
   | +1 :green_heart: |  hbaseanti  |   0m  0s |  |  Patch does not have any anti-patterns.  |
   |||| _ master Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 57s |  |  Maven dependency ordering for branch  |
   | +1 :green_heart: |  mvninstall  |   5m  7s |  |  master passed  |
   | +1 :green_heart: |  compile  |   4m 52s |  |  master passed  |
   | +1 :green_heart: |  checkstyle  |   0m 56s |  |  master passed  |
   | +1 :green_heart: |  spotbugs  |   2m 28s |  |  master passed  |
   | +1 :green_heart: |  spotless  |   0m 52s |  |  branch has no errors when running spotless:check.  |
   |||| _ Patch Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 12s |  |  Maven dependency ordering for patch  |
   | +1 :green_heart: |  mvninstall  |   4m 32s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |   4m 35s |  |  the patch passed  |
   | -0 :warning: |  javac  |   0m 50s | [/results-compile-javac-hbase-common.txt](https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/3/artifact/yetus-general-check/output/results-compile-javac-hbase-common.txt) |  hbase-common generated 2 new + 70 unchanged - 0 fixed = 72 total (was 70)  |
   | +1 :green_heart: |  blanks  |   0m  0s |  |  The patch has no blanks issues.  |
   | -0 :warning: |  checkstyle  |   0m 16s | [/results-checkstyle-hbase-common.txt](https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/3/artifact/yetus-general-check/output/results-checkstyle-hbase-common.txt) |  hbase-common: The patch generated 1 new + 0 unchanged - 0 fixed = 1 total (was 0)  |
   | -0 :warning: |  checkstyle  |   0m 40s | [/results-checkstyle-hbase-server.txt](https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/3/artifact/yetus-general-check/output/results-checkstyle-hbase-server.txt) |  hbase-server: The patch generated 1 new + 28 unchanged - 0 fixed = 29 total (was 28)  |
   | +1 :green_heart: |  spotbugs  |   2m 39s |  |  the patch passed  |
   | +1 :green_heart: |  hadoopcheck  |  16m 10s |  |  Patch does not cause any errors with Hadoop 3.3.6 3.4.0.  |
   | +1 :green_heart: |  spotless  |   1m 16s |  |  patch has no errors when running spotless:check.  |
   |||| _ Other Tests _ |
   | +1 :green_heart: |  asflicense  |   0m 38s |  |  The patch does not generate ASF License warnings.  |
   |  |   |  57m 32s |  |  |
   
   
   | Subsystem | Report/Notes |
   |----------:|:-------------|
   | Docker | ClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/3/artifact/yetus-general-check/output/Dockerfile |
   | GITHUB PR | https://github.com/apache/hbase/pull/6709 |
   | Optional Tests | dupname asflicense javac spotbugs checkstyle codespell detsecrets compile hadoopcheck hbaseanti spotless |
   | uname | Linux 2342a27dccea 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux |
   | Build tool | maven |
   | Personality | dev-support/hbase-personality.sh |
   | git revision | master / 855eb4ec0a3eee8527efea59ebb71b97347ca1e3 |
   | Default Java | Eclipse Adoptium-17.0.11+9 |
   | Max. process+thread count | 85 (vs. ulimit of 30000) |
   | modules | C: hbase-common hbase-server U: . |
   | Console output | https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/3/console |
   | versions | git=2.34.1 maven=3.9.8 spotbugs=4.7.3 |
   | Powered by | Apache Yetus 0.15.0 https://yetus.apache.org |
   
   
   This message was automatically generated.
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-29137 Add basic config type validation [hbase]

Posted by "junegunn (via GitHub)" <gi...@apache.org>.
junegunn commented on code in PR #6709:
URL: https://github.com/apache/hbase/pull/6709#discussion_r1976240570


##########
hbase-common/src/main/java/org/apache/hadoop/hbase/conf/ConfigKey.java:
##########
@@ -0,0 +1,155 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hbase.conf;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.function.Predicate;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.yetus.audience.InterfaceAudience;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Utility class for basic validation of configuration values.
+ */
+@InterfaceAudience.Private
+public class ConfigKey {
+  private static final Logger LOG = LoggerFactory.getLogger(ConfigKey.class);
+
+  @FunctionalInterface
+  private interface Validator {
+    void validate(Configuration conf);
+  }
+
+  // Map of configuration keys to validators
+  private static final Map<String, Validator> validators = new ConcurrentHashMap<>();
+
+  /**
+   * Registers the configuration key that expects an integer.
+   * @param key        configuration key
+   * @param predicates additional predicates to validate the value
+   * @return the key
+   */
+  @SafeVarargs
+  public static String INT(String key, Predicate<Integer>... predicates) {
+    return register(key,
+      conf -> validateNumeric(key, "an integer", () -> conf.getInt(key, 0), predicates));
+  }
+
+  /**
+   * Registers the configuration key that expects a long.
+   * @param key        configuration key
+   * @param predicates additional predicates to validate the value
+   * @return the key
+   */
+  @SafeVarargs
+  public static String LONG(String key, Predicate<Long>... predicates) {
+    return register(key,
+      conf -> validateNumeric(key, "a long", () -> conf.getLong(key, 0), predicates));
+  }
+
+  /**
+   * Registers the configuration key that expects a float.
+   * @param key        configuration key
+   * @param predicates additional predicates to validate the value
+   * @return the key
+   */
+  @SafeVarargs
+  public static String FLOAT(String key, Predicate<Float>... predicates) {
+    return register(key,
+      conf -> validateNumeric(key, "a float", () -> conf.getFloat(key, 0), predicates));
+  }
+
+  /**
+   * Registers the configuration key that expects a double.
+   * @param key        configuration key
+   * @param predicates additional predicates to validate the value
+   * @return the key
+   */
+  @SafeVarargs
+  public static String DOUBLE(String key, Predicate<Double>... predicates) {
+    return register(key,
+      conf -> validateNumeric(key, "a double", () -> conf.getDouble(key, 0), predicates));
+  }
+
+  /**
+   * Registers the configuration key that expects a class.
+   * @param key configuration key
+   * @return the key
+   */
+  public static String CLASS(String key) {
+    return register(key, conf -> {
+      String value = conf.get(key);
+      try {
+        Class.forName(value);
+      } catch (ClassNotFoundException e) {
+        throw new IllegalArgumentException("Class " + value + " not found.");

Review Comment:
   See 239179b6664674064792b1d61c158f9885add17f
   
   ```
   ERROR: org.apache.hadoop.hbase.DoNotRetryIOException: 'hbase.hstore.engine.class' must be a class. Set hbase.table.sanity.checks to false at conf or table descriptor if you want to bypass sanity checks
           at org.apache.hadoop.hbase.util.TableDescriptorChecker.warnOrThrowExceptionForFailure(TableDescriptorChecker.java:327)
           at org.apache.hadoop.hbase.util.TableDescriptorChecker.warnOrThrowExceptionForFailure(TableDescriptorChecker.java:344)
           at org.apache.hadoop.hbase.util.TableDescriptorChecker.sanityCheck(TableDescriptorChecker.java:84)
           at org.apache.hadoop.hbase.master.HMaster$14.run(HMaster.java:2877)
           at org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil.submitProcedure(MasterProcedureUtil.java:137)
           at org.apache.hadoop.hbase.master.HMaster.modifyTable(HMaster.java:2871)
           at org.apache.hadoop.hbase.master.HMaster.modifyTable(HMaster.java:2907)
           at org.apache.hadoop.hbase.master.MasterRpcServices.modifyTable(MasterRpcServices.java:1547)
           at org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java)
           at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:457)
           at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:124)
           at org.apache.hadoop.hbase.ipc.RpcHandler.run(RpcHandler.java:102)
           at org.apache.hadoop.hbase.ipc.RpcHandler.run(RpcHandler.java:82)
   Caused by: java.lang.IllegalArgumentException: 'hbase.hstore.engine.class' must be a class.
           at org.apache.hadoop.hbase.conf.ConfigKey.lambda$CLASS$8(ConfigKey.java:102)
           at org.apache.hadoop.hbase.conf.ConfigKey.lambda$validate$9(ConfigKey.java:126)
           at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
           at org.apache.hadoop.hbase.conf.ConfigKey.validate(ConfigKey.java:123)
           at org.apache.hadoop.hbase.util.TableDescriptorChecker.lambda$sanityCheck$0(TableDescriptorChecker.java:84)
           at org.apache.hadoop.hbase.util.TableDescriptorChecker.warnOrThrowExceptionForFailure(TableDescriptorChecker.java:342)
           ... 11 more
   Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.regionserver.DateTieredStoreEngine2
           at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
           at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
           at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
           at java.base/java.lang.Class.forName0(Native Method)
           at java.base/java.lang.Class.forName(Class.java:375)
           at org.apache.hadoop.hbase.conf.ConfigKey.lambda$CLASS$8(ConfigKey.java:100)
           ... 16 more
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-29137 Add basic config type validation [hbase]

Posted by "Apache9 (via GitHub)" <gi...@apache.org>.
Apache9 merged PR #6709:
URL: https://github.com/apache/hbase/pull/6709


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-29137 Add basic config type validation [hbase]

Posted by "NihalJain (via GitHub)" <gi...@apache.org>.
NihalJain commented on PR #6709:
URL: https://github.com/apache/hbase/pull/6709#issuecomment-2795934462

   +1, LGTM really neat solution. Great work @junegunn !


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-29137 Add basic config type validation [hbase]

Posted by "Apache-HBase (via GitHub)" <gi...@apache.org>.
Apache-HBase commented on PR #6709:
URL: https://github.com/apache/hbase/pull/6709#issuecomment-2726982625

   :confetti_ball: **+1 overall**
   
   
   
   
   
   
   | Vote | Subsystem | Runtime |  Logfile | Comment |
   |:----:|----------:|--------:|:--------:|:-------:|
   | +0 :ok: |  reexec  |   0m 29s |  |  Docker mode activated.  |
   | -0 :warning: |  yetus  |   0m  3s |  |  Unprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --author-ignore-list --blanks-eol-ignore-file --blanks-tabs-ignore-file --quick-hadoopcheck  |
   |||| _ Prechecks _ |
   |||| _ master Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 18s |  |  Maven dependency ordering for branch  |
   | +1 :green_heart: |  mvninstall  |   3m  0s |  |  master passed  |
   | +1 :green_heart: |  compile  |   1m 14s |  |  master passed  |
   | +1 :green_heart: |  javadoc  |   0m 43s |  |  master passed  |
   | +1 :green_heart: |  shadedjars  |   5m 57s |  |  branch has no errors when building our shaded downstream artifacts.  |
   |||| _ Patch Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 13s |  |  Maven dependency ordering for patch  |
   | +1 :green_heart: |  mvninstall  |   3m  8s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |   1m 14s |  |  the patch passed  |
   | +1 :green_heart: |  javac  |   1m 14s |  |  the patch passed  |
   | +1 :green_heart: |  javadoc  |   0m 42s |  |  the patch passed  |
   | +1 :green_heart: |  shadedjars  |   5m 53s |  |  patch has no errors when building our shaded downstream artifacts.  |
   |||| _ Other Tests _ |
   | +1 :green_heart: |  unit  |   2m 12s |  |  hbase-common in the patch passed.  |
   | +1 :green_heart: |  unit  | 212m 31s |  |  hbase-server in the patch passed.  |
   |  |   | 242m 40s |  |  |
   
   
   | Subsystem | Report/Notes |
   |----------:|:-------------|
   | Docker | ClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/5/artifact/yetus-jdk17-hadoop3-check/output/Dockerfile |
   | GITHUB PR | https://github.com/apache/hbase/pull/6709 |
   | Optional Tests | javac javadoc unit compile shadedjars |
   | uname | Linux 52f7020c3c48 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux |
   | Build tool | maven |
   | Personality | dev-support/hbase-personality.sh |
   | git revision | master / 2b2cc2f74a9b0f95f275529e77a732e897b8953c |
   | Default Java | Eclipse Adoptium-17.0.11+9 |
   |  Test Results | https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/5/testReport/ |
   | Max. process+thread count | 5094 (vs. ulimit of 30000) |
   | modules | C: hbase-common hbase-server U: . |
   | Console output | https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/5/console |
   | versions | git=2.34.1 maven=3.9.8 |
   | Powered by | Apache Yetus 0.15.0 https://yetus.apache.org |
   
   
   This message was automatically generated.
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-29137 Add basic config type validation [hbase]

Posted by "Apache-HBase (via GitHub)" <gi...@apache.org>.
Apache-HBase commented on PR #6709:
URL: https://github.com/apache/hbase/pull/6709#issuecomment-2731924188

   :broken_heart: **-1 overall**
   
   
   
   
   
   
   | Vote | Subsystem | Runtime |  Logfile | Comment |
   |:----:|----------:|--------:|:--------:|:-------:|
   | +0 :ok: |  reexec  |   0m 46s |  |  Docker mode activated.  |
   |||| _ Prechecks _ |
   | +1 :green_heart: |  dupname  |   0m  0s |  |  No case conflicting files found.  |
   | +0 :ok: |  codespell  |   0m  1s |  |  codespell was not available.  |
   | +0 :ok: |  detsecrets  |   0m  1s |  |  detect-secrets was not available.  |
   | +1 :green_heart: |  @author  |   0m  0s |  |  The patch does not contain any @author tags.  |
   | +1 :green_heart: |  hbaseanti  |   0m  0s |  |  Patch does not have any anti-patterns.  |
   |||| _ master Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 15s |  |  Maven dependency ordering for branch  |
   | +1 :green_heart: |  mvninstall  |   4m 25s |  |  master passed  |
   | +1 :green_heart: |  compile  |   4m 29s |  |  master passed  |
   | +1 :green_heart: |  checkstyle  |   1m  0s |  |  master passed  |
   | +1 :green_heart: |  spotbugs  |   2m 53s |  |  master passed  |
   | +1 :green_heart: |  spotless  |   1m  4s |  |  branch has no errors when running spotless:check.  |
   | -0 :warning: |  patch  |   1m 22s |  |  Used diff version of patch file. Binary files and potentially other changes not applied. Please rebase and squash commits if necessary.  |
   |||| _ Patch Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 17s |  |  Maven dependency ordering for patch  |
   | +1 :green_heart: |  mvninstall  |   4m 37s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |   5m  4s |  |  the patch passed  |
   | -0 :warning: |  javac  |   0m 58s | [/results-compile-javac-hbase-common.txt](https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/6/artifact/yetus-general-check/output/results-compile-javac-hbase-common.txt) |  hbase-common generated 2 new + 70 unchanged - 0 fixed = 72 total (was 70)  |
   | +1 :green_heart: |  blanks  |   0m  0s |  |  The patch has no blanks issues.  |
   | +1 :green_heart: |  checkstyle  |   0m 58s |  |  the patch passed  |
   | +1 :green_heart: |  spotbugs  |   3m 13s |  |  the patch passed  |
   | +1 :green_heart: |  hadoopcheck  |  17m 15s |  |  Patch does not cause any errors with Hadoop 3.3.6 3.4.0.  |
   | -1 :x: |  spotless  |   1m  6s |  |  patch has 1 errors when running spotless:check, run spotless:apply to fix.  |
   |||| _ Other Tests _ |
   | +1 :green_heart: |  asflicense  |   0m 26s |  |  The patch does not generate ASF License warnings.  |
   |  |   |  62m 49s |  |  |
   
   
   | Subsystem | Report/Notes |
   |----------:|:-------------|
   | Docker | ClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/6/artifact/yetus-general-check/output/Dockerfile |
   | GITHUB PR | https://github.com/apache/hbase/pull/6709 |
   | Optional Tests | dupname asflicense javac spotbugs checkstyle codespell detsecrets compile hadoopcheck hbaseanti spotless |
   | uname | Linux e2c0caf5d2e8 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux |
   | Build tool | maven |
   | Personality | dev-support/hbase-personality.sh |
   | git revision | master / 689976c245b3f9ab7b5b65f10d5ead75dcf7d15c |
   | Default Java | Eclipse Adoptium-17.0.11+9 |
   | spotless | https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/6/artifact/yetus-general-check/output/patch-spotless.txt |
   | Max. process+thread count | 85 (vs. ulimit of 30000) |
   | modules | C: hbase-common hbase-server U: . |
   | Console output | https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/6/console |
   | versions | git=2.34.1 maven=3.9.8 spotbugs=4.7.3 |
   | Powered by | Apache Yetus 0.15.0 https://yetus.apache.org |
   
   
   This message was automatically generated.
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-29137 Add basic config type validation [hbase]

Posted by "junegunn (via GitHub)" <gi...@apache.org>.
junegunn commented on code in PR #6709:
URL: https://github.com/apache/hbase/pull/6709#discussion_r1976238973


##########
hbase-common/src/main/java/org/apache/hadoop/hbase/conf/ConfigKey.java:
##########
@@ -0,0 +1,155 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hbase.conf;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.function.Predicate;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.yetus.audience.InterfaceAudience;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Utility class for basic validation of configuration values.
+ */
+@InterfaceAudience.Private
+public class ConfigKey {
+  private static final Logger LOG = LoggerFactory.getLogger(ConfigKey.class);
+
+  @FunctionalInterface
+  private interface Validator {
+    void validate(Configuration conf);
+  }
+
+  // Map of configuration keys to validators
+  private static final Map<String, Validator> validators = new ConcurrentHashMap<>();
+
+  /**
+   * Registers the configuration key that expects an integer.
+   * @param key        configuration key
+   * @param predicates additional predicates to validate the value
+   * @return the key
+   */
+  @SafeVarargs
+  public static String INT(String key, Predicate<Integer>... predicates) {
+    return register(key,
+      conf -> validateNumeric(key, "an integer", () -> conf.getInt(key, 0), predicates));
+  }
+
+  /**
+   * Registers the configuration key that expects a long.
+   * @param key        configuration key
+   * @param predicates additional predicates to validate the value
+   * @return the key
+   */
+  @SafeVarargs
+  public static String LONG(String key, Predicate<Long>... predicates) {
+    return register(key,
+      conf -> validateNumeric(key, "a long", () -> conf.getLong(key, 0), predicates));
+  }
+
+  /**
+   * Registers the configuration key that expects a float.
+   * @param key        configuration key
+   * @param predicates additional predicates to validate the value
+   * @return the key
+   */
+  @SafeVarargs
+  public static String FLOAT(String key, Predicate<Float>... predicates) {
+    return register(key,
+      conf -> validateNumeric(key, "a float", () -> conf.getFloat(key, 0), predicates));
+  }
+
+  /**
+   * Registers the configuration key that expects a double.
+   * @param key        configuration key
+   * @param predicates additional predicates to validate the value
+   * @return the key
+   */
+  @SafeVarargs
+  public static String DOUBLE(String key, Predicate<Double>... predicates) {
+    return register(key,
+      conf -> validateNumeric(key, "a double", () -> conf.getDouble(key, 0), predicates));
+  }
+
+  /**
+   * Registers the configuration key that expects a class.
+   * @param key configuration key
+   * @return the key
+   */
+  public static String CLASS(String key) {
+    return register(key, conf -> {
+      String value = conf.get(key);
+      try {
+        Class.forName(value);
+      } catch (ClassNotFoundException e) {
+        throw new IllegalArgumentException("Class " + value + " not found.");
+      }
+    });
+  }
+
+  /**
+   * Registers the configuration key that expects a boolean value. We actually don't register a
+   * validator, because {@link Configuration#getBoolean} doesn't throw an exception even if the
+   * value is not a boolean. So this is only for documentation purposes.
+   * @param key configuration key
+   * @return the key
+   */
+  public static String BOOLEAN(String key) {
+    return key;
+  }
+
+  /**
+   * Validates the configuration.
+   * @param conf a configuration to validate
+   */
+  public static void validate(Configuration conf) {
+    conf.iterator().forEachRemaining(entry -> {
+      Validator validator = validators.get(entry.getKey());
+      if (validator != null) {
+        validator.validate(conf);
+      }
+    });
+  }
+
+  @FunctionalInterface
+  private interface NumberGetter<T> {
+    T get() throws NumberFormatException;
+  }
+
+  private static <T> void validateNumeric(String name, String expected, NumberGetter<T> getter,
+    Predicate<T>... predicates) {
+    try {
+      T value = getter.get();
+      for (Predicate<T> predicate : predicates) {
+        if (!predicate.test(value)) {
+          throw new IllegalArgumentException("Invalid value for '" + name + "': " + value + ".");
+        }
+      }
+    } catch (NumberFormatException e) {
+      throw new IllegalArgumentException(String.format("'%s' must be %s.", name, expected));

Review Comment:
   ffc33384cdd2948debb5f4f54dd726547fb6b442



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-29137 Add basic config type validation [hbase]

Posted by "junegunn (via GitHub)" <gi...@apache.org>.
junegunn commented on code in PR #6709:
URL: https://github.com/apache/hbase/pull/6709#discussion_r1976240138


##########
hbase-common/src/main/java/org/apache/hadoop/hbase/conf/ConfigKey.java:
##########
@@ -0,0 +1,155 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hbase.conf;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.function.Predicate;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.yetus.audience.InterfaceAudience;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Utility class for basic validation of configuration values.
+ */
+@InterfaceAudience.Private
+public class ConfigKey {
+  private static final Logger LOG = LoggerFactory.getLogger(ConfigKey.class);
+
+  @FunctionalInterface
+  private interface Validator {
+    void validate(Configuration conf);
+  }
+
+  // Map of configuration keys to validators
+  private static final Map<String, Validator> validators = new ConcurrentHashMap<>();
+
+  /**
+   * Registers the configuration key that expects an integer.
+   * @param key        configuration key
+   * @param predicates additional predicates to validate the value
+   * @return the key
+   */
+  @SafeVarargs
+  public static String INT(String key, Predicate<Integer>... predicates) {
+    return register(key,
+      conf -> validateNumeric(key, "an integer", () -> conf.getInt(key, 0), predicates));
+  }
+
+  /**
+   * Registers the configuration key that expects a long.
+   * @param key        configuration key
+   * @param predicates additional predicates to validate the value
+   * @return the key
+   */
+  @SafeVarargs
+  public static String LONG(String key, Predicate<Long>... predicates) {
+    return register(key,
+      conf -> validateNumeric(key, "a long", () -> conf.getLong(key, 0), predicates));
+  }
+
+  /**
+   * Registers the configuration key that expects a float.
+   * @param key        configuration key
+   * @param predicates additional predicates to validate the value
+   * @return the key
+   */
+  @SafeVarargs
+  public static String FLOAT(String key, Predicate<Float>... predicates) {
+    return register(key,
+      conf -> validateNumeric(key, "a float", () -> conf.getFloat(key, 0), predicates));
+  }
+
+  /**
+   * Registers the configuration key that expects a double.
+   * @param key        configuration key
+   * @param predicates additional predicates to validate the value
+   * @return the key
+   */
+  @SafeVarargs
+  public static String DOUBLE(String key, Predicate<Double>... predicates) {
+    return register(key,
+      conf -> validateNumeric(key, "a double", () -> conf.getDouble(key, 0), predicates));
+  }
+
+  /**
+   * Registers the configuration key that expects a class.
+   * @param key configuration key
+   * @return the key
+   */
+  public static String CLASS(String key) {
+    return register(key, conf -> {
+      String value = conf.get(key);
+      try {
+        Class.forName(value);
+      } catch (ClassNotFoundException e) {
+        throw new IllegalArgumentException("Class " + value + " not found.");

Review Comment:
   Thanks for the review. I'll also update the message so that the user knows which parameter is invalid.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-29137 Add basic config type validation [hbase]

Posted by "Apache-HBase (via GitHub)" <gi...@apache.org>.
Apache-HBase commented on PR #6709:
URL: https://github.com/apache/hbase/pull/6709#issuecomment-2692025416

   :confetti_ball: **+1 overall**
   
   
   
   
   
   
   | Vote | Subsystem | Runtime |  Logfile | Comment |
   |:----:|----------:|--------:|:--------:|:-------:|
   | +0 :ok: |  reexec  |   0m 28s |  |  Docker mode activated.  |
   | -0 :warning: |  yetus  |   0m  3s |  |  Unprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --author-ignore-list --blanks-eol-ignore-file --blanks-tabs-ignore-file --quick-hadoopcheck  |
   |||| _ Prechecks _ |
   |||| _ master Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 11s |  |  Maven dependency ordering for branch  |
   | +1 :green_heart: |  mvninstall  |   3m 19s |  |  master passed  |
   | +1 :green_heart: |  compile  |   1m 20s |  |  master passed  |
   | +1 :green_heart: |  javadoc  |   0m 46s |  |  master passed  |
   | +1 :green_heart: |  shadedjars  |   6m  0s |  |  branch has no errors when building our shaded downstream artifacts.  |
   |||| _ Patch Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 13s |  |  Maven dependency ordering for patch  |
   | +1 :green_heart: |  mvninstall  |   3m  5s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |   1m 16s |  |  the patch passed  |
   | +1 :green_heart: |  javac  |   1m 16s |  |  the patch passed  |
   | +1 :green_heart: |  javadoc  |   0m 44s |  |  the patch passed  |
   | +1 :green_heart: |  shadedjars  |   5m 59s |  |  patch has no errors when building our shaded downstream artifacts.  |
   |||| _ Other Tests _ |
   | +1 :green_heart: |  unit  |   2m 14s |  |  hbase-common in the patch passed.  |
   | +1 :green_heart: |  unit  | 217m 40s |  |  hbase-server in the patch passed.  |
   |  |   | 247m 51s |  |  |
   
   
   | Subsystem | Report/Notes |
   |----------:|:-------------|
   | Docker | ClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/2/artifact/yetus-jdk17-hadoop3-check/output/Dockerfile |
   | GITHUB PR | https://github.com/apache/hbase/pull/6709 |
   | Optional Tests | javac javadoc unit compile shadedjars |
   | uname | Linux 70b3d14be08f 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux |
   | Build tool | maven |
   | Personality | dev-support/hbase-personality.sh |
   | git revision | master / 239179b6664674064792b1d61c158f9885add17f |
   | Default Java | Eclipse Adoptium-17.0.11+9 |
   |  Test Results | https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/2/testReport/ |
   | Max. process+thread count | 4878 (vs. ulimit of 30000) |
   | modules | C: hbase-common hbase-server U: . |
   | Console output | https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/2/console |
   | versions | git=2.34.1 maven=3.9.8 |
   | Powered by | Apache Yetus 0.15.0 https://yetus.apache.org |
   
   
   This message was automatically generated.
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-29137 Add basic config type validation [hbase]

Posted by "junegunn (via GitHub)" <gi...@apache.org>.
junegunn commented on PR #6709:
URL: https://github.com/apache/hbase/pull/6709#issuecomment-2721823906

   @Apache9 
   
   I've updated `ConfigKey.CLASS` method so we can specify the expected class or interface the value should implement. See 855eb4ec0a3eee8527efea59ebb71b97347ca1e3.
   
   Previously, something like `alter 't', CONFIGURATION => { 'hbase.hstore.engine.class' => 'org.apache.hadoop.conf.Configuration' }` would pass the verification just because the class exists. Now it fails because it's not a subclass of `StoreEngine`.
   
   ```
   hbase:003:0> alter 't', CONFIGURATION => { 'hbase.hstore.engine.class' => 'org.apache.hadoop.conf.Configuration' }
   Updating all regions with the new schema...
   
   ERROR: org.apache.hadoop.hbase.DoNotRetryIOException: org.apache.hadoop.conf.Configuration ('hbase.hstore.engine.class') is not compatible to org.apache.hadoop.hbase.regionserver.StoreEngine. Set hbase.table.sanity.checks to false at conf or table descriptor if you want to bypass sanity checks
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] HBASE-29137 Add basic config type validation [hbase]

Posted by "Apache-HBase (via GitHub)" <gi...@apache.org>.
Apache-HBase commented on PR #6709:
URL: https://github.com/apache/hbase/pull/6709#issuecomment-2722676857

   :broken_heart: **-1 overall**
   
   
   
   
   
   
   | Vote | Subsystem | Runtime |  Logfile | Comment |
   |:----:|----------:|--------:|:--------:|:-------:|
   | +0 :ok: |  reexec  |   0m 41s |  |  Docker mode activated.  |
   | -0 :warning: |  yetus  |   0m  3s |  |  Unprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --author-ignore-list --blanks-eol-ignore-file --blanks-tabs-ignore-file --quick-hadoopcheck  |
   |||| _ Prechecks _ |
   |||| _ master Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 55s |  |  Maven dependency ordering for branch  |
   | +1 :green_heart: |  mvninstall  |   5m  5s |  |  master passed  |
   | +1 :green_heart: |  compile  |   1m 48s |  |  master passed  |
   | +1 :green_heart: |  javadoc  |   0m 56s |  |  master passed  |
   | +1 :green_heart: |  shadedjars  |   6m 53s |  |  branch has no errors when building our shaded downstream artifacts.  |
   |||| _ Patch Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 14s |  |  Maven dependency ordering for patch  |
   | +1 :green_heart: |  mvninstall  |   4m 28s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |   1m 39s |  |  the patch passed  |
   | +1 :green_heart: |  javac  |   1m 39s |  |  the patch passed  |
   | +1 :green_heart: |  javadoc  |   0m 51s |  |  the patch passed  |
   | +1 :green_heart: |  shadedjars  |   6m 50s |  |  patch has no errors when building our shaded downstream artifacts.  |
   |||| _ Other Tests _ |
   | +1 :green_heart: |  unit  |   2m 32s |  |  hbase-common in the patch passed.  |
   | -1 :x: |  unit  | 246m 49s | [/patch-unit-hbase-server.txt](https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/3/artifact/yetus-jdk17-hadoop3-check/output/patch-unit-hbase-server.txt) |  hbase-server in the patch failed.  |
   |  |   | 286m 36s |  |  |
   
   
   | Subsystem | Report/Notes |
   |----------:|:-------------|
   | Docker | ClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/3/artifact/yetus-jdk17-hadoop3-check/output/Dockerfile |
   | GITHUB PR | https://github.com/apache/hbase/pull/6709 |
   | Optional Tests | javac javadoc unit compile shadedjars |
   | uname | Linux fb41c993d881 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux |
   | Build tool | maven |
   | Personality | dev-support/hbase-personality.sh |
   | git revision | master / 855eb4ec0a3eee8527efea59ebb71b97347ca1e3 |
   | Default Java | Eclipse Adoptium-17.0.11+9 |
   |  Test Results | https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/3/testReport/ |
   | Max. process+thread count | 5612 (vs. ulimit of 30000) |
   | modules | C: hbase-common hbase-server U: . |
   | Console output | https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-6709/3/console |
   | versions | git=2.34.1 maven=3.9.8 |
   | Powered by | Apache Yetus 0.15.0 https://yetus.apache.org |
   
   
   This message was automatically generated.
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@hbase.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org