Skip to content

Commit

Permalink
Merge branch 'master' into 0.7.0
Browse files Browse the repository at this point in the history
# 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
  • Loading branch information
nkorange committed Dec 14, 2018
2 parents be64c1a + 308867f commit 066aaea
Show file tree
Hide file tree
Showing 7 changed files with 38 additions and 18 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
@@ -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
Expand Down
4 changes: 2 additions & 2 deletions README.md
Expand Up @@ -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
```

Expand Down
Expand Up @@ -17,6 +17,8 @@

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;
Expand Down Expand Up @@ -191,6 +193,15 @@ public String getKey() {
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);
Expand Down
Expand Up @@ -25,6 +25,7 @@
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;
Expand All @@ -41,7 +42,9 @@ public static void write(ServiceInfo dom, String dir) {
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()) {
Expand Down Expand Up @@ -87,9 +90,11 @@ public static Map<String, ServiceInfo> read(String cacheDir) {
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);

Expand Down
9 changes: 0 additions & 9 deletions core/pom.xml
Expand Up @@ -64,13 +64,4 @@
</dependency>

</dependencies>

<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
</project>
2 changes: 1 addition & 1 deletion core/src/main/resources/banner.txt
@@ -1,7 +1,7 @@

,--.
,--.'|
,--,: : | Nacos ${nacos.version}
,--,: : | Nacos 0.6.1
,`--.'`| ' : ,---. Running in ${nacos.mode} mode
| : : | | ' ,'\ .--.--. Port: 8848
: | \ | : ,--.--. ,---. / / | / / ' Pid: ${pid}
Expand Down
14 changes: 11 additions & 3 deletions naming/src/main/java/com/alibaba/nacos/naming/raft/RaftStore.java
Expand Up @@ -107,7 +107,7 @@ public synchronized static void load(String key) throws Exception{
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;
}

Expand Down Expand Up @@ -139,7 +139,7 @@ public synchronized static void load(String key) 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()) {
throw new IllegalStateException("can not make cache file: " + cacheFile.getName());
}
Expand Down Expand Up @@ -169,7 +169,7 @@ private static File[] listCaches() throws Exception {
}

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);
Expand All @@ -188,4 +188,12 @@ public static void updateTerm(long term) throws Exception {
meta.store(outStream, null);
}
}

private static String encodeFileName(String fileName) {
return fileName.replace(':', '#');
}

private static String decodeFileName(String fileName) {
return fileName.replace("#", ":");
}
}

0 comments on commit 066aaea

Please sign in to comment.