Merge branch 'master' into 0.7.0

# Conflicts:
#	api/pom.xml
#	client/pom.xml
#	common/pom.xml
#	config/pom.xml
#	console/pom.xml
#	console/src/main/resources/static/console-fe/src/i18ndoc.js
#	console/src/main/resources/static/console-fe/src/locales/en-US.js
#	console/src/main/resources/static/console-fe/src/locales/zh-CN.js
#	core/pom.xml
#	distribution/pom.xml
#	example/pom.xml
#	naming/pom.xml
#	pom.xml
#	test/pom.xml
This commit is contained in:
nkorange 2018-12-14 17:55:20 +08:00
commit 066aaeaec0
7 changed files with 38 additions and 18 deletions

View File

@ -1,3 +1,8 @@
## 0.6.1(Dec, 2018)
[#421] NamingService's serivce name can't use colon(:) in Windows
[#432] When packing nacos-core, ${user.home} is replaced in the logback configuration file (nacos.xml)
## 0.6.0(Dec, 2018)
* [#388] Cluster name should be provided in the Instance

View File

@ -40,9 +40,9 @@ It is super easy to get started with your first project.
You can download the package from the [latest stable release](https://github.com/alibaba/nacos/releases).
Take release nacos-server-0.6.0.zip for example.
Take release nacos-server-0.6.1.zip for example.
```
unzip nacos-server-0.6.0.zip
unzip nacos-server-0.6.1.zip
cd nacos/bin
```

View File

@ -17,6 +17,8 @@ package com.alibaba.nacos.api.naming.pojo;
import com.alibaba.fastjson.annotation.JSONField;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@ -191,6 +193,15 @@ public class ServiceInfo {
return getKey(name, clusters, env, isAllIPs());
}
@JSONField(serialize = false)
public String getKeyEncoded() {
try {
return getKey(URLEncoder.encode(name, "UTF-8"), clusters, env, isAllIPs());
} catch (UnsupportedEncodingException e) {
return getKey();
}
}
@JSONField(serialize = false)
public static String getKey(String name, String clusters, String unit) {
return getKey(name, clusters, unit, false);

View File

@ -25,6 +25,7 @@ import com.alibaba.nacos.client.naming.utils.StringUtils;
import java.io.BufferedReader;
import java.io.File;
import java.io.StringReader;
import java.net.URLDecoder;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.HashMap;
@ -41,7 +42,9 @@ public class DiskCache {
try {
makeSureCacheDirExists(dir);
File file = new File(dir, dom.getKey());
File file = new File(dir, dom.getKeyEncoded());
if (!file.exists()) {
// add another !file.exists() to avoid conflicted creating-new-file from multi-instances
if (!file.createNewFile() && !file.exists()) {
@ -87,9 +90,11 @@ public class DiskCache {
continue;
}
if (!(file.getName().endsWith(ServiceInfo.SPLITER + "meta") || file.getName().endsWith(
String fileName = URLDecoder.decode(file.getName(), "UTF-8");
if (!(fileName.endsWith(ServiceInfo.SPLITER + "meta") || fileName.endsWith(
ServiceInfo.SPLITER + "special-url"))) {
ServiceInfo dom = new ServiceInfo(file.getName());
ServiceInfo dom = new ServiceInfo(fileName);
List<Instance> ips = new ArrayList<Instance>();
dom.setHosts(ips);

View File

@ -64,13 +64,4 @@
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
</project>

View File

@ -1,7 +1,7 @@
,--.
,--.'|
,--,: : | Nacos ${nacos.version}
,--,: : | Nacos 0.6.1
,`--.'`| ' : ,---. Running in ${nacos.mode} mode
| : : | | ' ,'\ .--.--. Port: 8848
: | \ | : ,--.--. ,---. / / | / / ' Pid: ${pid}

View File

@ -107,7 +107,7 @@ public class RaftStore {
Loggers.RAFT.warn("warning: encountered directory in cache dir: " + cache.getAbsolutePath());
}
if (!StringUtils.equals(cache.getName(), key)) {
if (!StringUtils.equals(decodeFileName(cache.getName()), key)) {
continue;
}
@ -139,7 +139,7 @@ public class RaftStore {
}
public synchronized static void write(final Datum datum) throws Exception {
File cacheFile = new File(CACHE_DIR + File.separator + datum.key);
File cacheFile = new File(CACHE_DIR + File.separator + encodeFileName(datum.key));
if (!cacheFile.exists() && !cacheFile.getParentFile().mkdirs() && !cacheFile.createNewFile()) {
throw new IllegalStateException("can not make cache file: " + cacheFile.getName());
}
@ -169,7 +169,7 @@ public class RaftStore {
}
public static void delete(Datum datum) {
File cacheFile = new File(CACHE_DIR + File.separator + datum.key);
File cacheFile = new File(CACHE_DIR + File.separator + encodeFileName(datum.key));
if (!cacheFile.delete()) {
Loggers.RAFT.error("RAFT-DELETE", "failed to delete datum: " + datum.key + ", value: " + datum.value);
throw new IllegalStateException("failed to delete datum: " + datum.key);
@ -188,4 +188,12 @@ public class RaftStore {
meta.store(outStream, null);
}
}
private static String encodeFileName(String fileName) {
return fileName.replace(':', '#');
}
private static String decodeFileName(String fileName) {
return fileName.replace("#", ":");
}
}