From 8cef5c809a95f9788e643082d1c828ed7f1313f1 Mon Sep 17 00:00:00 2001 From: hongdongdong Date: Wed, 21 Jul 2021 12:13:46 +0800 Subject: [PATCH] [KYUUBI #839]Fix load user specific defaults from properties file ### _Why are the changes needed?_ loadFromMap ignored user specific defaults that start with '___'. ### _How was this patch tested?_ - [X] Add some test cases that check the changes thoroughly including negative and positive cases if possible - [ ] Add screenshots for manual tests if appropriate - [ ] [Run test](https://kyuubi.readthedocs.io/en/latest/tools/testing.html#running-tests) locally before make a pull request Closes #840 from hddong/kyuubi-839. Closes #839 ba3683e3 [hongdongdong] fix comments a7753849 [hongdongdong] fix test 07f82667 [hongdongdong] fix test b2a4c3cb [hongdongdong] [KYUUBI#839]Fix load user specific defaults from properties file Authored-by: hongdongdong Signed-off-by: ulysses-you --- .../scala/org/apache/kyuubi/config/KyuubiConf.scala | 4 +++- .../src/test/resources/kyuubi-defaults.conf | 4 ++++ .../org/apache/kyuubi/config/KyuubiConfSuite.scala | 13 +++---------- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/kyuubi-common/src/main/scala/org/apache/kyuubi/config/KyuubiConf.scala b/kyuubi-common/src/main/scala/org/apache/kyuubi/config/KyuubiConf.scala index cacc0bc9e..5aeb4ee0c 100644 --- a/kyuubi-common/src/main/scala/org/apache/kyuubi/config/KyuubiConf.scala +++ b/kyuubi-common/src/main/scala/org/apache/kyuubi/config/KyuubiConf.scala @@ -39,7 +39,9 @@ case class KyuubiConf(loadSysDefault: Boolean = true) extends Logging { } private def loadFromMap(props: Map[String, String] = Utils.getSystemProperties): KyuubiConf = { - for ((key, value) <- props if key.startsWith("kyuubi.") || key.startsWith("spark.")) { + for ((key, value) <- props if key.startsWith("kyuubi.") || key.startsWith("spark.") || + // for user specific defaults + key.startsWith("___")) { set(key, value) } this diff --git a/kyuubi-common/src/test/resources/kyuubi-defaults.conf b/kyuubi-common/src/test/resources/kyuubi-defaults.conf index 0bd89b938..ef781757a 100644 --- a/kyuubi-common/src/test/resources/kyuubi-defaults.conf +++ b/kyuubi-common/src/test/resources/kyuubi-defaults.conf @@ -18,3 +18,7 @@ kyuubi.yes yes spark.kyuubi.yes no # kyuubi.no no + +spark.user.test a +___userb___.spark.user.test b +___userc___.spark.user.test c \ No newline at end of file diff --git a/kyuubi-common/src/test/scala/org/apache/kyuubi/config/KyuubiConfSuite.scala b/kyuubi-common/src/test/scala/org/apache/kyuubi/config/KyuubiConfSuite.scala index fc7065fca..e49f2878a 100644 --- a/kyuubi-common/src/test/scala/org/apache/kyuubi/config/KyuubiConfSuite.scala +++ b/kyuubi-common/src/test/scala/org/apache/kyuubi/config/KyuubiConfSuite.scala @@ -97,17 +97,10 @@ class KyuubiConfSuite extends KyuubiFunSuite { test("get user specific defaults") { - val conf = KyuubiConf(false) - .set("spark.user.test", "a") - .set("___userb___.spark.user.test", "b") - .set("___userc___.spark.user.test", "c") + val conf = KyuubiConf().loadFileDefaults() - val all1 = conf.getUserDefaults("kyuubi").getAll - assert(all1.size === 1) - assert(all1("spark.user.test") === "a") - val all2 = conf.getUserDefaults("userb").getAll - assert(all2.size === 1) - assert(all2("spark.user.test") === "b") + assert(conf.getUserDefaults("kyuubi").getOption("spark.user.test").get === "a") + assert(conf.getUserDefaults("userb").getOption("spark.user.test").get === "b") assert(conf.getUserDefaults("userc").getOption("spark.user.test").get === "c") }