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:
commit
066aaeaec0
@ -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)
|
## 0.6.0(Dec, 2018)
|
||||||
|
|
||||||
* [#388] Cluster name should be provided in the Instance
|
* [#388] Cluster name should be provided in the Instance
|
||||||
|
@ -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).
|
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
|
cd nacos/bin
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -17,6 +17,8 @@ package com.alibaba.nacos.api.naming.pojo;
|
|||||||
|
|
||||||
import com.alibaba.fastjson.annotation.JSONField;
|
import com.alibaba.fastjson.annotation.JSONField;
|
||||||
|
|
||||||
|
import java.io.UnsupportedEncodingException;
|
||||||
|
import java.net.URLEncoder;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -191,6 +193,15 @@ public class ServiceInfo {
|
|||||||
return getKey(name, clusters, env, isAllIPs());
|
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)
|
@JSONField(serialize = false)
|
||||||
public static String getKey(String name, String clusters, String unit) {
|
public static String getKey(String name, String clusters, String unit) {
|
||||||
return getKey(name, clusters, unit, false);
|
return getKey(name, clusters, unit, false);
|
||||||
|
@ -25,6 +25,7 @@ import com.alibaba.nacos.client.naming.utils.StringUtils;
|
|||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.StringReader;
|
import java.io.StringReader;
|
||||||
|
import java.net.URLDecoder;
|
||||||
import java.nio.charset.Charset;
|
import java.nio.charset.Charset;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@ -41,7 +42,9 @@ public class DiskCache {
|
|||||||
try {
|
try {
|
||||||
makeSureCacheDirExists(dir);
|
makeSureCacheDirExists(dir);
|
||||||
|
|
||||||
File file = new File(dir, dom.getKey());
|
|
||||||
|
|
||||||
|
File file = new File(dir, dom.getKeyEncoded());
|
||||||
if (!file.exists()) {
|
if (!file.exists()) {
|
||||||
// add another !file.exists() to avoid conflicted creating-new-file from multi-instances
|
// add another !file.exists() to avoid conflicted creating-new-file from multi-instances
|
||||||
if (!file.createNewFile() && !file.exists()) {
|
if (!file.createNewFile() && !file.exists()) {
|
||||||
@ -87,9 +90,11 @@ public class DiskCache {
|
|||||||
continue;
|
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.SPLITER + "special-url"))) {
|
||||||
ServiceInfo dom = new ServiceInfo(file.getName());
|
ServiceInfo dom = new ServiceInfo(fileName);
|
||||||
List<Instance> ips = new ArrayList<Instance>();
|
List<Instance> ips = new ArrayList<Instance>();
|
||||||
dom.setHosts(ips);
|
dom.setHosts(ips);
|
||||||
|
|
||||||
|
@ -64,13 +64,4 @@
|
|||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
|
||||||
<resources>
|
|
||||||
<resource>
|
|
||||||
<directory>src/main/resources</directory>
|
|
||||||
<filtering>true</filtering>
|
|
||||||
</resource>
|
|
||||||
</resources>
|
|
||||||
</build>
|
|
||||||
</project>
|
</project>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
,--.
|
,--.
|
||||||
,--.'|
|
,--.'|
|
||||||
,--,: : | Nacos ${nacos.version}
|
,--,: : | Nacos 0.6.1
|
||||||
,`--.'`| ' : ,---. Running in ${nacos.mode} mode
|
,`--.'`| ' : ,---. Running in ${nacos.mode} mode
|
||||||
| : : | | ' ,'\ .--.--. Port: 8848
|
| : : | | ' ,'\ .--.--. Port: 8848
|
||||||
: | \ | : ,--.--. ,---. / / | / / ' Pid: ${pid}
|
: | \ | : ,--.--. ,---. / / | / / ' Pid: ${pid}
|
||||||
|
@ -107,7 +107,7 @@ public class RaftStore {
|
|||||||
Loggers.RAFT.warn("warning: encountered directory in cache dir: " + cache.getAbsolutePath());
|
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;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -139,7 +139,7 @@ public class RaftStore {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public synchronized static void write(final Datum datum) throws Exception {
|
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()) {
|
if (!cacheFile.exists() && !cacheFile.getParentFile().mkdirs() && !cacheFile.createNewFile()) {
|
||||||
throw new IllegalStateException("can not make cache file: " + cacheFile.getName());
|
throw new IllegalStateException("can not make cache file: " + cacheFile.getName());
|
||||||
}
|
}
|
||||||
@ -169,7 +169,7 @@ public class RaftStore {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void delete(Datum datum) {
|
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()) {
|
if (!cacheFile.delete()) {
|
||||||
Loggers.RAFT.error("RAFT-DELETE", "failed to delete datum: " + datum.key + ", value: " + datum.value);
|
Loggers.RAFT.error("RAFT-DELETE", "failed to delete datum: " + datum.key + ", value: " + datum.value);
|
||||||
throw new IllegalStateException("failed to delete datum: " + datum.key);
|
throw new IllegalStateException("failed to delete datum: " + datum.key);
|
||||||
@ -188,4 +188,12 @@ public class RaftStore {
|
|||||||
meta.store(outStream, null);
|
meta.store(outStream, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static String encodeFileName(String fileName) {
|
||||||
|
return fileName.replace(':', '#');
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String decodeFileName(String fileName) {
|
||||||
|
return fileName.replace("#", ":");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user