diff --git a/client/src/main/java/com/alibaba/nacos/client/config/impl/LocalConfigInfoProcessor.java b/client/src/main/java/com/alibaba/nacos/client/config/impl/LocalConfigInfoProcessor.java index c3305c8bc26..859c049a731 100644 --- a/client/src/main/java/com/alibaba/nacos/client/config/impl/LocalConfigInfoProcessor.java +++ b/client/src/main/java/com/alibaba/nacos/client/config/impl/LocalConfigInfoProcessor.java @@ -20,6 +20,7 @@ import com.alibaba.nacos.client.config.utils.ConcurrentDiskUtil; import com.alibaba.nacos.client.config.utils.JvmUtil; import com.alibaba.nacos.client.config.utils.SnapShotSwitch; +import com.alibaba.nacos.common.utils.CacheDirUtils; import com.alibaba.nacos.client.utils.LogUtils; import com.alibaba.nacos.common.utils.IoUtils; import com.alibaba.nacos.common.utils.StringUtils; @@ -203,12 +204,8 @@ static File getSnapshotFile(String envName, String dataId, String group, String public static final String LOCAL_SNAPSHOT_PATH; static { - LOCAL_FILEROOT_PATH = - System.getProperty("JM.LOG.PATH", System.getProperty("user.home")) + File.separator + "nacos" - + File.separator + "config"; - LOCAL_SNAPSHOT_PATH = - System.getProperty("JM.SNAPSHOT.PATH", System.getProperty("user.home")) + File.separator + "nacos" - + File.separator + "config"; + LOCAL_FILEROOT_PATH = CacheDirUtils.getCacheDir() + File.separator + "config"; + LOCAL_SNAPSHOT_PATH = CacheDirUtils.getCacheDir() + File.separator + "config"; LOGGER.info("LOCAL_SNAPSHOT_PATH:{}", LOCAL_SNAPSHOT_PATH); } diff --git a/client/src/main/java/com/alibaba/nacos/client/logging/AbstractNacosLogging.java b/client/src/main/java/com/alibaba/nacos/client/logging/AbstractNacosLogging.java index 4d5a78db6cf..a7d54986c5c 100644 --- a/client/src/main/java/com/alibaba/nacos/client/logging/AbstractNacosLogging.java +++ b/client/src/main/java/com/alibaba/nacos/client/logging/AbstractNacosLogging.java @@ -16,6 +16,7 @@ package com.alibaba.nacos.client.logging; +import com.alibaba.nacos.common.utils.CacheDirUtils; import com.alibaba.nacos.common.utils.ConvertUtils; import com.alibaba.nacos.common.utils.StringUtils; @@ -31,14 +32,8 @@ public abstract class AbstractNacosLogging { private static final String NACOS_LOGGING_DEFAULT_CONFIG_ENABLED_PROPERTY = "nacos.logging.default.config.enabled"; - private static final String NACOS_LOGGING_PATH_PROPERTY = "nacos.logging.path"; - static { - String loggingPath = System.getProperty(NACOS_LOGGING_PATH_PROPERTY); - if (StringUtils.isBlank(loggingPath)) { - String userHome = System.getProperty("user.home"); - System.setProperty(NACOS_LOGGING_PATH_PROPERTY, userHome + "/logs/nacos"); - } + String loggingPath = CacheDirUtils.getCacheDir() + "/logs"; } protected String getLocation(String defaultLocation) { diff --git a/client/src/main/java/com/alibaba/nacos/client/naming/NacosNamingService.java b/client/src/main/java/com/alibaba/nacos/client/naming/NacosNamingService.java index 19ec45d4d74..f95ffc1937a 100644 --- a/client/src/main/java/com/alibaba/nacos/client/naming/NacosNamingService.java +++ b/client/src/main/java/com/alibaba/nacos/client/naming/NacosNamingService.java @@ -36,6 +36,7 @@ import com.alibaba.nacos.client.naming.utils.InitUtils; import com.alibaba.nacos.client.naming.utils.UtilAndComs; import com.alibaba.nacos.client.utils.ValidatorUtils; +import com.alibaba.nacos.common.utils.CacheDirUtils; import com.alibaba.nacos.common.utils.ConvertUtils; import com.alibaba.nacos.common.utils.StringUtils; @@ -151,10 +152,7 @@ private void initLogName(Properties properties) { } private void initCacheDir() { - cacheDir = System.getProperty("com.alibaba.nacos.naming.cache.dir"); - if (StringUtils.isEmpty(cacheDir)) { - cacheDir = System.getProperty("user.home") + "/nacos/naming/" + namespace; - } + cacheDir = CacheDirUtils.getCacheDir() + "/naming/" + namespace; } @Override diff --git a/client/src/test/java/com/alibaba/nacos/client/naming/NacosNamingServiceTest.java b/client/src/test/java/com/alibaba/nacos/client/naming/NacosNamingServiceTest.java new file mode 100644 index 00000000000..b9712864d8b --- /dev/null +++ b/client/src/test/java/com/alibaba/nacos/client/naming/NacosNamingServiceTest.java @@ -0,0 +1,52 @@ +/* + * Copyright 1999-2018 Alibaba Group Holding Ltd. + * + * Licensed 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 com.alibaba.nacos.client.naming; + +import com.alibaba.nacos.api.PropertyKeyConst; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.junit.MockitoJUnitRunner; + +import java.io.File; +import java.util.Properties; + +import static org.junit.Assert.assertTrue; + +@RunWith(MockitoJUnitRunner.class) +public class NacosNamingServiceTest { + + private static final String CACHE_DIR = NacosNamingServiceTest.class.getResource("/").getPath() + "cache"; + + private String serverList = "127.0.0.1:9527"; + + @Before + public void setUp() throws Exception { + Properties properties = new Properties(); + System.setProperty("nacos.cache.dir", CACHE_DIR); + properties.setProperty(PropertyKeyConst.SERVER_ADDR, serverList); + properties.setProperty(PropertyKeyConst.NAMING_LOAD_CACHE_AT_START, "true"); + NacosNamingService nacosNamingService = new NacosNamingService(properties); + } + + @Test + public void testCache() throws Exception { + File cachePath = new File(CACHE_DIR); + assertTrue(cachePath.exists()); + } +} diff --git a/common/src/main/java/com/alibaba/nacos/common/utils/CacheDirUtils.java b/common/src/main/java/com/alibaba/nacos/common/utils/CacheDirUtils.java new file mode 100644 index 00000000000..519112514e1 --- /dev/null +++ b/common/src/main/java/com/alibaba/nacos/common/utils/CacheDirUtils.java @@ -0,0 +1,39 @@ +/* + * Copyright 1999-2018 Alibaba Group Holding Ltd. + * + * Licensed 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 com.alibaba.nacos.common.utils; + +/** + * Utils to get the cache dir. + * + * @author sunli on:2020/9/11 20:16 PM. + */ +public final class CacheDirUtils { + + /** + * Gets the cache dir. + * + * @return the home dir of cache. + */ + public static String getCacheDir() { + String cacheDir = System.getProperty("nacos.cache.dir"); + if (StringUtils.isEmpty(cacheDir)) { + cacheDir = System.getProperty("user.home") + "/nacos"; + } + return cacheDir; + } + +}