This is an automated email from the ASF dual-hosted git repository. xxyu pushed a commit to branch kylin5 in repository https://gitbox.apache.org/repos/asf/kylin.git
The following commit(s) were added to refs/heads/kylin5 by this push: new ce5c40393a Kylin 5256 Add a cache for the system property get by the optional config in KylinConfigBase (#1969) ce5c40393a is described below commit ce5c40393a73664344a9275e9f31af4722d651f7 Author: zznlime <68555081+zznl...@users.noreply.github.com> AuthorDate: Wed Sep 28 10:04:07 2022 +0800 Kylin 5256 Add a cache for the system property get by the optional config in KylinConfigBase (#1969) * KYLIN-5256 Add a cache for the system property get by the optional config in KylinConfigBase limitation during loading properties to Kylin config. * KYLIN-5256 Add ICachedExternalConfigLoader. * KYLIN-5256 Fix UT * Revert "KYLIN-5256 Add ICachedExternalConfigLoader." This reverts commit 3231653d * KYLIN-5256 Fix UT * KYLIN-5256 Fix UT --- .../rest/controller/NEpochControllerTest.java | 3 +- .../org/apache/kylin/common/KylinConfigBase.java | 69 ++++++++++++++++------ .../org/apache/kylin/common/AbstractTestCase.java | 4 +- .../org/apache/kylin/junit/MetadataExtension.java | 3 +- .../apache/kylin/junit/OverwritePropExtension.java | 9 +-- .../controller/StreamingJobControllerTest.java | 3 +- .../rest/service/StreamingTableServiceTest.java | 3 +- .../kylin/rest/controller/KafkaControllerTest.java | 3 +- .../controller/StreamingTableControllerTest.java | 3 +- .../open/OpenStreamingJobControllerTest.java | 3 +- .../kylin/source/hive/HiveCmdBuilderTest.java | 7 ++- .../utils/HiveTransactionTableHelperTest.java | 5 +- .../rest/service/StreamingJobServiceTest.java | 3 +- 13 files changed, 81 insertions(+), 37 deletions(-) diff --git a/src/common-server/src/test/java/org/apache/kylin/rest/controller/NEpochControllerTest.java b/src/common-server/src/test/java/org/apache/kylin/rest/controller/NEpochControllerTest.java index d2c70b6910..83eb177b76 100644 --- a/src/common-server/src/test/java/org/apache/kylin/rest/controller/NEpochControllerTest.java +++ b/src/common-server/src/test/java/org/apache/kylin/rest/controller/NEpochControllerTest.java @@ -19,6 +19,7 @@ package org.apache.kylin.rest.controller; import static org.apache.kylin.common.constant.HttpConstant.HTTP_VND_APACHE_KYLIN_JSON; +import org.apache.kylin.common.KylinConfigBase; import org.apache.kylin.rest.constant.Constant; import org.apache.kylin.common.util.NLocalFileMetadataTestCase; import org.apache.kylin.rest.service.EpochService; @@ -62,7 +63,7 @@ public class NEpochControllerTest extends NLocalFileMetadataTestCase { @Before public void setupResource() { - System.setProperty("HADOOP_USER_NAME", "root"); + KylinConfigBase.setSystemProperty("HADOOP_USER_NAME", "root"); createTestMetadata(); } diff --git a/src/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java b/src/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java index fedbd83f9d..57cd5e6306 100644 --- a/src/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java +++ b/src/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java @@ -111,6 +111,43 @@ public abstract class KylinConfigBase implements Serializable { protected static final Map<String, String> STATIC_SYSTEM_ENV = new ConcurrentHashMap<>(System.getenv()); + // It's a workaround to avoid lock in bottom hash table + // It can be removed after updating JDK to 11 + protected static final ConcurrentHashMap<Object, Object> STATIC_SYSTEM_PROPERTY = new ConcurrentHashMap<>( + System.getProperties()); + + protected static String getSystemProperty(String key) { + checkKey(key); + Object oval = STATIC_SYSTEM_PROPERTY.get(key); + return (oval instanceof String) ? (String) oval : null; + } + + protected static String getSystemProperty(String key, String defaultValue) { + String val = getSystemProperty(key); + return (val == null) ? defaultValue : val; + } + + // Mainly invoked in tests + public static String setSystemProperty(String key, String value) { + System.setProperty(key, value); + return (String) STATIC_SYSTEM_PROPERTY.put(key, value); + } + + // Mainly invoked in tests + public static void clearSystemProperty(String key) { + System.clearProperty(key); + STATIC_SYSTEM_PROPERTY.remove(key); + } + + private static void checkKey(String key) { + if (key == null) { + throw new NullPointerException("key can't be null"); + } + if (key.equals("")) { + throw new IllegalArgumentException("key can't be empty"); + } + } + /* * DON'T DEFINE CONSTANTS FOR PROPERTY KEYS! * @@ -119,8 +156,8 @@ public abstract class KylinConfigBase implements Serializable { * For 3), key literals usually appear only once. */ - public static String vendor(){ - if(VENDOR != null) { + public static String vendor() { + if (VENDOR != null) { return VENDOR; } else { return DEFAULT_VENDOR; @@ -138,7 +175,7 @@ public abstract class KylinConfigBase implements Serializable { public static String getKylinHomeWithoutWarn() { String kylinHome = System.getenv("KYLIN_HOME"); if (StringUtils.isEmpty(kylinHome)) { - kylinHome = System.getProperty("KYLIN_HOME"); + kylinHome = getSystemProperty("KYLIN_HOME"); } return kylinHome; } @@ -146,7 +183,7 @@ public abstract class KylinConfigBase implements Serializable { public static String getKylinConfHome() { String confHome = System.getenv("KYLIN_CONF"); if (StringUtils.isEmpty(confHome)) { - confHome = System.getProperty("KYLIN_CONF"); + confHome = getSystemProperty("KYLIN_CONF"); } return confHome; } @@ -160,7 +197,7 @@ public abstract class KylinConfigBase implements Serializable { return getKylinHome() + File.separator + "spark"; } - public Map<String, String> getReadonlyProperties(){ + public Map<String, String> getReadonlyProperties() { val substitutor = getSubstitutor(); HashMap<String, String> config = Maps.newHashMap(); for (Entry<Object, Object> entry : this.properties.entrySet()) { @@ -201,7 +238,7 @@ public abstract class KylinConfigBase implements Serializable { } protected String getOptional(String prop, String dft) { - final String property = System.getProperty(prop); + final String property = getSystemProperty(prop); return property != null ? getSubstitutor().replace(property) : getSubstitutor().replace(properties.getProperty(prop, dft)); } @@ -248,7 +285,7 @@ public abstract class KylinConfigBase implements Serializable { result.put(key.substring(prefix.length()), (String) entry.getValue()); } } - for (Entry<Object, Object> entry : System.getProperties().entrySet()) { + for (Entry<Object, Object> entry : STATIC_SYSTEM_PROPERTY.entrySet()) { String key = (String) entry.getKey(); if (key.startsWith(prefix)) { result.put(key.substring(prefix.length()), (String) entry.getValue()); @@ -267,7 +304,7 @@ public abstract class KylinConfigBase implements Serializable { } protected final String[] getSystemStringArray(String prop, String[] dft) { - final String property = System.getProperty(prop); + final String property = getSystemProperty(prop); if (!StringUtils.isBlank(property)) { return property.split("\\s*,\\s*"); } else { @@ -1006,7 +1043,7 @@ public abstract class KylinConfigBase implements Serializable { public String getQueryExtensionFactory() { String dft = "org.apache.kylin.query.QueryExtension$Factory"; - if(vendor().equals("kyligence")) { + if (vendor().equals("kyligence")) { dft = "io.kyligence.kap.query.QueryExtensionFactoryEnterprise"; } return getOptional("kylin.extension.query.factory", dft); @@ -1396,12 +1433,11 @@ public abstract class KylinConfigBase implements Serializable { public List<String> getSparkBuildConfExtraRules() { String rules = getOptional("kylin.engine.spark.build-conf-extra-rules"); if (StringUtils.isEmpty(rules)) { - return Collections.<String>emptyList(); + return Collections.<String> emptyList(); } return Lists.newArrayList(rules.split(",")); } - public String getSparkTableSamplingClassName() { return getOptional("kylin.engine.spark.sampling-class-name", "org.apache.kylin.engine.spark.stats.analyzer.TableAnalyzerJob"); @@ -1606,7 +1642,7 @@ public abstract class KylinConfigBase implements Serializable { } public boolean asyncProfilingEnabled() { - return !Boolean.parseBoolean(System.getProperty("spark.local", FALSE)) + return !Boolean.parseBoolean(getSystemProperty("spark.local", FALSE)) && Boolean.parseBoolean(getOptional("kylin.query.async-profiler-enabled", TRUE)); } @@ -1944,10 +1980,8 @@ public abstract class KylinConfigBase implements Serializable { public String[] getTableDetectorTransformers() { String value = getOptional("kylin.query.table-detect-transformers"); - return value == null - ? new String[] { "org.apache.kylin.query.util.PowerBIConverter", - "org.apache.kylin.query.util.DefaultQueryTransformer", - "org.apache.kylin.query.util.EscapeTransformer" } + return value == null ? new String[] { "org.apache.kylin.query.util.PowerBIConverter", + "org.apache.kylin.query.util.DefaultQueryTransformer", "org.apache.kylin.query.util.EscapeTransformer" } : getOptionalStringArray("kylin.query.table-detect-transformers", new String[0]); } @@ -1955,8 +1989,7 @@ public abstract class KylinConfigBase implements Serializable { String value = getOptional("kylin.query.transformers"); return value == null ? new String[] { "org.apache.kylin.query.util.ReplaceStringWithVarchar", "org.apache.kylin.query.util.PowerBIConverter", "org.apache.kylin.query.util.DefaultQueryTransformer", - "org.apache.kylin.query.util.EscapeTransformer", - "org.apache.kylin.query.util.ConvertToComputedColumn", + "org.apache.kylin.query.util.EscapeTransformer", "org.apache.kylin.query.util.ConvertToComputedColumn", "org.apache.kylin.query.util.KeywordDefaultDirtyHack", "org.apache.kylin.query.security.RowFilter" } : getOptionalStringArray("kylin.query.transformers", new String[0]); } diff --git a/src/core-common/src/test/java/org/apache/kylin/common/AbstractTestCase.java b/src/core-common/src/test/java/org/apache/kylin/common/AbstractTestCase.java index 96a9735fd6..f2b25edd48 100644 --- a/src/core-common/src/test/java/org/apache/kylin/common/AbstractTestCase.java +++ b/src/core-common/src/test/java/org/apache/kylin/common/AbstractTestCase.java @@ -80,9 +80,9 @@ public abstract class AbstractTestCase { /** Clear system property in test method with annotation {@link org.junit.Test} */ public final void restoreSystemProp(String property) { if (!METHOD_PROPERTY_MAP.containsKey(property) || METHOD_PROPERTY_MAP.get(property) == null) { - System.clearProperty(property); + KylinConfigBase.clearSystemProperty(property); } else { - System.setProperty(property, METHOD_PROPERTY_MAP.get(property)); + KylinConfigBase.setSystemProperty(property, METHOD_PROPERTY_MAP.get(property)); } METHOD_PROPERTY_MAP.remove(property); } diff --git a/src/core-common/src/test/java/org/apache/kylin/junit/MetadataExtension.java b/src/core-common/src/test/java/org/apache/kylin/junit/MetadataExtension.java index 05c0d3aec9..e519fb6c63 100644 --- a/src/core-common/src/test/java/org/apache/kylin/junit/MetadataExtension.java +++ b/src/core-common/src/test/java/org/apache/kylin/junit/MetadataExtension.java @@ -25,6 +25,7 @@ import java.util.concurrent.ConcurrentHashMap; import org.apache.commons.io.FileUtils; import org.apache.kylin.common.KylinConfig; +import org.apache.kylin.common.KylinConfigBase; import org.apache.kylin.common.QueryContext; import org.apache.kylin.common.Singletons; import org.apache.kylin.common.persistence.ResourceStore; @@ -100,7 +101,7 @@ public class MetadataExtension implements BeforeEachCallback, BeforeAllCallback, cleanSingletonInstances(); val kylinHomePath = new File(getTestConfig().getMetadataUrl().toString()).getParentFile().getAbsolutePath(); - System.setProperty("KYLIN_HOME", kylinHomePath); + KylinConfigBase.setSystemProperty("KYLIN_HOME", kylinHomePath); val jobJar = org.apache.kylin.common.util.FileUtils.findFile( new File(kylinHomePath, "../../../assembly/target/").getAbsolutePath(), "kylin-assembly(.?)\\.jar"); getTestConfig().setProperty("kylin.engine.spark.job-jar", jobJar == null ? "" : jobJar.getAbsolutePath()); diff --git a/src/core-common/src/test/java/org/apache/kylin/junit/OverwritePropExtension.java b/src/core-common/src/test/java/org/apache/kylin/junit/OverwritePropExtension.java index d071d1199b..1afe225934 100644 --- a/src/core-common/src/test/java/org/apache/kylin/junit/OverwritePropExtension.java +++ b/src/core-common/src/test/java/org/apache/kylin/junit/OverwritePropExtension.java @@ -19,6 +19,7 @@ package org.apache.kylin.junit; import java.util.Map; +import org.apache.kylin.common.KylinConfigBase; import org.apache.kylin.common.util.Unsafe; import org.apache.kylin.junit.annotation.OverwriteProp; import org.junit.jupiter.api.extension.AfterEachCallback; @@ -64,9 +65,9 @@ public class OverwritePropExtension implements BeforeEachCallback, AfterEachCall val keys = Sets.newHashSet(overwritten.keySet()); for (String property : keys) { if (!overwritten.containsKey(property) || overwritten.get(property) == null) { - System.clearProperty(property); + KylinConfigBase.clearSystemProperty(property); } else { - System.setProperty(property, overwritten.get(property)); + KylinConfigBase.setSystemProperty(property, overwritten.get(property)); } } context.getStore(NAMESPACE).remove(OVERWRITE_PROP_BEFORE_EACH_KEY); @@ -82,9 +83,9 @@ public class OverwritePropExtension implements BeforeEachCallback, AfterEachCall /** Clear system property in test method with annotation {@link org.junit.Test} */ public final void restoreSystemProp(Map<String, String> overwritten, String property) { if (!overwritten.containsKey(property) || overwritten.get(property) == null) { - System.clearProperty(property); + KylinConfigBase.clearSystemProperty(property); } else { - System.setProperty(property, overwritten.get(property)); + KylinConfigBase.setSystemProperty(property, overwritten.get(property)); } overwritten.remove(property); } diff --git a/src/data-loading-server/src/test/java/org/apache/kylin/rest/controller/StreamingJobControllerTest.java b/src/data-loading-server/src/test/java/org/apache/kylin/rest/controller/StreamingJobControllerTest.java index dbdb410209..29cd3392af 100644 --- a/src/data-loading-server/src/test/java/org/apache/kylin/rest/controller/StreamingJobControllerTest.java +++ b/src/data-loading-server/src/test/java/org/apache/kylin/rest/controller/StreamingJobControllerTest.java @@ -26,6 +26,7 @@ import java.util.HashMap; import org.apache.commons.lang.StringUtils; import org.apache.kylin.common.KylinConfig; +import org.apache.kylin.common.KylinConfigBase; import org.apache.kylin.common.util.JsonUtil; import org.apache.kylin.job.execution.JobTypeEnum; import org.apache.kylin.metadata.model.SegmentRange; @@ -102,7 +103,7 @@ public class StreamingJobControllerTest extends NLocalFileMetadataTestCase { @Before public void setupResource() { - System.setProperty("HADOOP_USER_NAME", "root"); + KylinConfigBase.setSystemProperty("HADOOP_USER_NAME", "root"); createTestMetadata(); } diff --git a/src/datasource-service/src/test/java/org/apache/kylin/rest/service/StreamingTableServiceTest.java b/src/datasource-service/src/test/java/org/apache/kylin/rest/service/StreamingTableServiceTest.java index 977c7020da..d991183adc 100644 --- a/src/datasource-service/src/test/java/org/apache/kylin/rest/service/StreamingTableServiceTest.java +++ b/src/datasource-service/src/test/java/org/apache/kylin/rest/service/StreamingTableServiceTest.java @@ -22,6 +22,7 @@ import java.util.Locale; import org.apache.commons.lang3.StringUtils; import org.apache.kylin.common.KylinConfig; +import org.apache.kylin.common.KylinConfigBase; import org.apache.kylin.common.exception.KylinException; import org.apache.kylin.common.msg.MsgPicker; import org.apache.kylin.common.scheduler.EventBusFactory; @@ -94,7 +95,7 @@ public class StreamingTableServiceTest extends NLocalFileMetadataTestCase { projectManager.forceDropProject("broken_test"); projectManager.forceDropProject("bad_query_test"); - System.setProperty("HADOOP_USER_NAME", "root"); + KylinConfigBase.setSystemProperty("HADOOP_USER_NAME", "root"); ReflectionTestUtils.setField(aclEvaluate, "aclUtil", aclUtil); ReflectionTestUtils.setField(streamingTableService, "aclEvaluate", aclEvaluate); diff --git a/src/metadata-server/src/test/java/org/apache/kylin/rest/controller/KafkaControllerTest.java b/src/metadata-server/src/test/java/org/apache/kylin/rest/controller/KafkaControllerTest.java index 18aa515840..2b29d266fd 100644 --- a/src/metadata-server/src/test/java/org/apache/kylin/rest/controller/KafkaControllerTest.java +++ b/src/metadata-server/src/test/java/org/apache/kylin/rest/controller/KafkaControllerTest.java @@ -23,6 +23,7 @@ import java.nio.ByteBuffer; import java.util.Arrays; import java.util.HashMap; +import org.apache.kylin.common.KylinConfigBase; import org.apache.kylin.common.util.JsonUtil; import org.apache.kylin.rest.constant.Constant; import org.apache.kylin.rest.util.AclEvaluate; @@ -84,7 +85,7 @@ public class KafkaControllerTest extends NLocalFileMetadataTestCase { @Before public void setupResource() { - System.setProperty("HADOOP_USER_NAME", "root"); + KylinConfigBase.setSystemProperty("HADOOP_USER_NAME", "root"); createTestMetadata(); } diff --git a/src/metadata-server/src/test/java/org/apache/kylin/rest/controller/StreamingTableControllerTest.java b/src/metadata-server/src/test/java/org/apache/kylin/rest/controller/StreamingTableControllerTest.java index ae8bb2f94a..2e0f000715 100644 --- a/src/metadata-server/src/test/java/org/apache/kylin/rest/controller/StreamingTableControllerTest.java +++ b/src/metadata-server/src/test/java/org/apache/kylin/rest/controller/StreamingTableControllerTest.java @@ -21,6 +21,7 @@ package org.apache.kylin.rest.controller; import static org.apache.kylin.common.constant.HttpConstant.HTTP_VND_APACHE_KYLIN_JSON; import org.apache.kylin.common.KylinConfig; +import org.apache.kylin.common.KylinConfigBase; import org.apache.kylin.common.util.JsonUtil; import org.apache.kylin.metadata.model.TableDesc; import org.apache.kylin.rest.constant.Constant; @@ -90,7 +91,7 @@ public class StreamingTableControllerTest extends NLocalFileMetadataTestCase { @Before public void setupResource() { - System.setProperty("HADOOP_USER_NAME", "root"); + KylinConfigBase.setSystemProperty("HADOOP_USER_NAME", "root"); createTestMetadata(); } diff --git a/src/server-base/src/test/java/org/apache/kylin/rest/controller/open/OpenStreamingJobControllerTest.java b/src/server-base/src/test/java/org/apache/kylin/rest/controller/open/OpenStreamingJobControllerTest.java index 9198ff47f3..de40ca662c 100644 --- a/src/server-base/src/test/java/org/apache/kylin/rest/controller/open/OpenStreamingJobControllerTest.java +++ b/src/server-base/src/test/java/org/apache/kylin/rest/controller/open/OpenStreamingJobControllerTest.java @@ -24,6 +24,7 @@ import static org.apache.kylin.common.exception.code.ErrorCodeServer.REQUEST_PAR import java.util.Collections; import org.apache.commons.lang.StringUtils; +import org.apache.kylin.common.KylinConfigBase; import org.apache.kylin.common.util.JsonUtil; import org.apache.kylin.common.util.NLocalFileMetadataTestCase; import org.apache.kylin.job.execution.JobTypeEnum; @@ -80,7 +81,7 @@ public class OpenStreamingJobControllerTest extends NLocalFileMetadataTestCase { @Before public void setupResource() { - System.setProperty("HADOOP_USER_NAME", "root"); + KylinConfigBase.setSystemProperty("HADOOP_USER_NAME", "root"); createTestMetadata(); } diff --git a/src/source-hive/src/test/java/org/apache/kylin/source/hive/HiveCmdBuilderTest.java b/src/source-hive/src/test/java/org/apache/kylin/source/hive/HiveCmdBuilderTest.java index dd0853a2ff..b98af52dd8 100644 --- a/src/source-hive/src/test/java/org/apache/kylin/source/hive/HiveCmdBuilderTest.java +++ b/src/source-hive/src/test/java/org/apache/kylin/source/hive/HiveCmdBuilderTest.java @@ -45,6 +45,7 @@ import java.nio.charset.Charset; import org.apache.commons.io.FileUtils; import org.apache.kylin.common.KylinConfig; +import org.apache.kylin.common.KylinConfigBase; import org.apache.kylin.common.util.CliCommandExecutor; import org.apache.kylin.common.util.ShellException; import org.junit.Before; @@ -54,15 +55,15 @@ public class HiveCmdBuilderTest { @Before public void setup() { - System.setProperty("log4j.configuration", "file:../build/conf/kylin-tools-log4j.properties"); - System.setProperty("KYLIN_CONF", "../examples/test_case_data/localmeta"); + KylinConfigBase.setSystemProperty("log4j.configuration", "file:../build/conf/kylin-tools-log4j.properties"); + KylinConfigBase.setSystemProperty("KYLIN_CONF", "../examples/test_case_data/localmeta"); } @Test public void testBeeline() throws IOException, ShellException { String lineSeparator = java.security.AccessController .doPrivileged(new sun.security.action.GetPropertyAction("line.separator")); - System.setProperty("kylin.source.hive.beeline-params", "-u jdbc_url"); + KylinConfigBase.setSystemProperty("kylin.source.hive.beeline-params", "-u jdbc_url"); HiveCmdBuilder hiveCmdBuilder = new HiveCmdBuilder(KylinConfig.getInstanceFromEnv()); hiveCmdBuilder.addStatement("USE default;"); diff --git a/src/spark-project/engine-spark/src/test/java/org/apache/kylin/engine/spark/utils/HiveTransactionTableHelperTest.java b/src/spark-project/engine-spark/src/test/java/org/apache/kylin/engine/spark/utils/HiveTransactionTableHelperTest.java index f190d34e08..e0693e8b4d 100644 --- a/src/spark-project/engine-spark/src/test/java/org/apache/kylin/engine/spark/utils/HiveTransactionTableHelperTest.java +++ b/src/spark-project/engine-spark/src/test/java/org/apache/kylin/engine/spark/utils/HiveTransactionTableHelperTest.java @@ -43,6 +43,7 @@ import java.util.UUID; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; +import org.apache.kylin.common.KylinConfigBase; import org.apache.kylin.common.util.HadoopUtil; import org.apache.kylin.metadata.model.ColumnDesc; import org.apache.kylin.metadata.model.PartitionDesc; @@ -96,8 +97,8 @@ public class HiveTransactionTableHelperTest extends NLocalWithSparkSessionTest { @Test public void testDoGetQueryHiveTemporaryTableSql() { // Init needed variable parameters - System.setProperty("kylin.source.provider.9", "org.apache.kylin.engine.spark.source.NSparkDataSource"); - System.setProperty("kylin.build.resource.read-transactional-table-enabled", "true"); + KylinConfigBase.setSystemProperty("kylin.source.provider.9", "org.apache.kylin.engine.spark.source.NSparkDataSource"); + KylinConfigBase.setSystemProperty("kylin.build.resource.read-transactional-table-enabled", "true"); KylinBuildEnv kylinBuildEnv = KylinBuildEnv.getOrCreate(getTestConfig()); NTableMetadataManager tableMgr = NTableMetadataManager.getInstance(getTestConfig(), "tdh"); TableDesc fact = tableMgr.getTableDesc("TDH_TEST.LINEORDER_PARTITION"); diff --git a/src/streaming-service/src/test/java/org/apache/kylin/rest/service/StreamingJobServiceTest.java b/src/streaming-service/src/test/java/org/apache/kylin/rest/service/StreamingJobServiceTest.java index 000358c653..9f3c76ca1f 100644 --- a/src/streaming-service/src/test/java/org/apache/kylin/rest/service/StreamingJobServiceTest.java +++ b/src/streaming-service/src/test/java/org/apache/kylin/rest/service/StreamingJobServiceTest.java @@ -41,6 +41,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.kylin.common.KylinConfig; +import org.apache.kylin.common.KylinConfigBase; import org.apache.kylin.common.exception.KylinException; import org.apache.kylin.common.msg.MsgPicker; import org.apache.kylin.common.scheduler.EventBusFactory; @@ -121,7 +122,7 @@ public class StreamingJobServiceTest extends CSVSourceTestCase { @Before public void setup() { super.setup(); - System.setProperty("HADOOP_USER_NAME", "root"); + KylinConfigBase.setSystemProperty("HADOOP_USER_NAME", "root"); ReflectionTestUtils.setField(aclEvaluate, "aclUtil", aclUtil); ReflectionTestUtils.setField(streamingJobService, "aclEvaluate", aclEvaluate);