diff --git a/config/src/main/java/com/alibaba/nacos/config/server/model/ConfigHistoryInfo.java b/config/src/main/java/com/alibaba/nacos/config/server/model/ConfigHistoryInfo.java index 47005f3d08c..793da039497 100644 --- a/config/src/main/java/com/alibaba/nacos/config/server/model/ConfigHistoryInfo.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/model/ConfigHistoryInfo.java @@ -15,6 +15,9 @@ */ package com.alibaba.nacos.config.server.model; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; + import java.io.Serializable; import java.sql.Timestamp; @@ -30,7 +33,7 @@ public class ConfigHistoryInfo implements Serializable { * id, nid, data_id, group_id, content, md5, gmt_create, gmt_modified, (配置创建时间,配置变更时间) src_user, src_ip, (变更操作者) * op_type(变更操作类型) */ - + @JsonSerialize(using = ToStringSerializer.class) private long id; /** * 上次改动历史的id diff --git a/config/src/main/java/com/alibaba/nacos/config/server/model/ConfigInfoAggr.java b/config/src/main/java/com/alibaba/nacos/config/server/model/ConfigInfoAggr.java index a7627cf0832..291f2f2b7c8 100644 --- a/config/src/main/java/com/alibaba/nacos/config/server/model/ConfigInfoAggr.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/model/ConfigInfoAggr.java @@ -15,6 +15,9 @@ */ package com.alibaba.nacos.config.server.model; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; + import java.io.Serializable; /** @@ -25,7 +28,7 @@ public class ConfigInfoAggr implements Serializable { private static final long serialVersionUID = -3845825581059306364L; - + @JsonSerialize(using = ToStringSerializer.class) private long id; private String dataId; diff --git a/config/src/main/java/com/alibaba/nacos/config/server/model/ConfigInfoBase.java b/config/src/main/java/com/alibaba/nacos/config/server/model/ConfigInfoBase.java index d7dc640cae8..82017e83a9a 100644 --- a/config/src/main/java/com/alibaba/nacos/config/server/model/ConfigInfoBase.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/model/ConfigInfoBase.java @@ -17,6 +17,8 @@ import com.alibaba.nacos.common.utils.MD5Utils; import com.alibaba.nacos.config.server.constant.Constants; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import java.io.PrintWriter; import java.io.Serializable; @@ -32,6 +34,7 @@ public class ConfigInfoBase implements Serializable, Comparable /** * 不能增加字段 */ + @JsonSerialize(using = ToStringSerializer.class) private long id; private String dataId; private String group; diff --git a/config/src/main/java/com/alibaba/nacos/config/server/model/GroupInfo.java b/config/src/main/java/com/alibaba/nacos/config/server/model/GroupInfo.java index c19a404ca1c..ca39ba4985e 100644 --- a/config/src/main/java/com/alibaba/nacos/config/server/model/GroupInfo.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/model/GroupInfo.java @@ -15,6 +15,9 @@ */ package com.alibaba.nacos.config.server.model; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; + import java.io.Serializable; /** @@ -24,6 +27,8 @@ */ public class GroupInfo implements Serializable { static final long serialVersionUID = -1L; + + @JsonSerialize(using = ToStringSerializer.class) private long id; private String address; private String group; diff --git a/config/src/main/java/com/alibaba/nacos/config/server/model/capacity/Capacity.java b/config/src/main/java/com/alibaba/nacos/config/server/model/capacity/Capacity.java index 4fdbeb98c45..fca08e72f93 100644 --- a/config/src/main/java/com/alibaba/nacos/config/server/model/capacity/Capacity.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/model/capacity/Capacity.java @@ -15,6 +15,9 @@ */ package com.alibaba.nacos.config.server.model.capacity; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; + import java.io.Serializable; import java.sql.Timestamp; @@ -27,6 +30,8 @@ public class Capacity implements Serializable { private static final long serialVersionUID = 77343194329627468L; + + @JsonSerialize(using = ToStringSerializer.class) private Long id; private Integer quota; private Integer usage; diff --git a/config/src/main/java/com/alibaba/nacos/config/server/service/notify/AsyncNotifyService.java b/config/src/main/java/com/alibaba/nacos/config/server/service/notify/AsyncNotifyService.java index b1ae3ffb59e..942bdca06cb 100644 --- a/config/src/main/java/com/alibaba/nacos/config/server/service/notify/AsyncNotifyService.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/service/notify/AsyncNotifyService.java @@ -362,4 +362,4 @@ private static int getDelayTime(NotifySingleTask task) { private static int INCREASE_STEPS = 1000; private static int MAX_COUNT = 6; -} +} \ No newline at end of file diff --git a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/DistributedDatabaseOperateImpl.java b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/DistributedDatabaseOperateImpl.java index 15cacd61819..9deae8dd354 100644 --- a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/DistributedDatabaseOperateImpl.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/DistributedDatabaseOperateImpl.java @@ -219,7 +219,7 @@ public R queryOne(String sql, Class cls) { LogUtil.fatalLog .error("An exception occurred during the query operation : {}", e.toString()); - throw new NacosRuntimeException(NacosException.SERVER_ERROR, ExceptionUtil.getCause(e).toString()); + throw new NacosRuntimeException(NacosException.SERVER_ERROR, e.toString()); } } @@ -247,7 +247,7 @@ public R queryOne(String sql, Object[] args, Class cls) { LogUtil.fatalLog .error("An exception occurred during the query operation : {}", e.toString()); - throw new NacosRuntimeException(NacosException.SERVER_ERROR, ExceptionUtil.getCause(e).toString()); + throw new NacosRuntimeException(NacosException.SERVER_ERROR, e.toString()); } } @@ -276,7 +276,7 @@ public R queryOne(String sql, Object[] args, RowMapper mapper) { LogUtil.fatalLog .error("An exception occurred during the query operation : {}", e.toString()); - throw new NacosRuntimeException(NacosException.SERVER_ERROR, ExceptionUtil.getCause(e).toString()); + throw new NacosRuntimeException(NacosException.SERVER_ERROR, e.toString()); } } @@ -305,7 +305,7 @@ public List queryMany(String sql, Object[] args, RowMapper mapper) { LogUtil.fatalLog .error("An exception occurred during the query operation : {}", e.toString()); - throw new NacosRuntimeException(NacosException.SERVER_ERROR, ExceptionUtil.getCause(e).toString()); + throw new NacosRuntimeException(NacosException.SERVER_ERROR, e.toString()); } } @@ -334,7 +334,7 @@ public List queryMany(String sql, Object[] args, Class rClass) { LogUtil.fatalLog .error("An exception occurred during the query operation : {}", e.toString()); - throw new NacosRuntimeException(NacosException.SERVER_ERROR, ExceptionUtil.getCause(e).toString()); + throw new NacosRuntimeException(NacosException.SERVER_ERROR, e.toString()); } } @@ -363,7 +363,7 @@ public List> queryMany(String sql, Object[] args) { LogUtil.fatalLog .error("An exception occurred during the query operation : {}", e.toString()); - throw new NacosRuntimeException(NacosException.SERVER_ERROR, ExceptionUtil.getCause(e).toString()); + throw new NacosRuntimeException(NacosException.SERVER_ERROR, e.toString()); } } @@ -433,12 +433,12 @@ public Boolean update(List sqlContext, catch (TimeoutException e) { LogUtil.fatalLog .error("An timeout exception occurred during the update operation"); - throw new NacosRuntimeException(NacosException.SERVER_ERROR, ExceptionUtil.getCause(e).toString()); + throw new NacosRuntimeException(NacosException.SERVER_ERROR, e.toString()); } catch (Throwable e) { LogUtil.fatalLog .error("An exception occurred during the update operation : {}", e); - throw new NacosRuntimeException(NacosException.SERVER_ERROR, ExceptionUtil.getCause(e).toString()); + throw new NacosRuntimeException(NacosException.SERVER_ERROR, e.toString()); } } diff --git a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/EmbeddedStoragePersistServiceImpl.java b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/EmbeddedStoragePersistServiceImpl.java index 23d1a849e17..3285285fd2a 100755 --- a/config/src/main/java/com/alibaba/nacos/config/server/service/repository/EmbeddedStoragePersistServiceImpl.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/service/repository/EmbeddedStoragePersistServiceImpl.java @@ -2548,7 +2548,10 @@ public Map batchInsertOrUpdate(List configInfoLis notify); succCount++; } - catch (DataIntegrityViolationException ive) { + catch (Throwable e) { + if (!StringUtils.contains("DuplicateKeyException", e.toString())) { + throw e; + } // uniqueness constraint conflict if (SameConfigPolicy.ABORT.equals(policy)) { failData = new ArrayList<>(); diff --git a/config/src/test/java/com/alibaba/nacos/config/server/model/ConfigInfoTest.java b/config/src/test/java/com/alibaba/nacos/config/server/model/ConfigInfoTest.java new file mode 100644 index 00000000000..b56096f385e --- /dev/null +++ b/config/src/test/java/com/alibaba/nacos/config/server/model/ConfigInfoTest.java @@ -0,0 +1,42 @@ +/* + * 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.config.server.model; + +import com.alibaba.nacos.common.utils.JacksonUtils; +import com.alibaba.nacos.consistency.IdGenerator; +import com.alibaba.nacos.core.distributed.id.SnowFlowerIdGenerator; +import com.alibaba.nacos.core.utils.ApplicationUtils; +import org.junit.Assert; +import org.junit.Test; +import org.springframework.core.env.StandardEnvironment; + +public class ConfigInfoTest { + + @Test + public void test_precision_issue() throws Exception { + ApplicationUtils.injectEnvironment(new StandardEnvironment()); + IdGenerator generator = new SnowFlowerIdGenerator(); + long id = generator.nextId(); + ConfigInfo configInfo = new ConfigInfo(); + configInfo.setId(id); + String json = JacksonUtils.toJson(configInfo); + ConfigInfo _c = JacksonUtils.toObj(json, ConfigInfo.class); + Assert.assertEquals(id, _c.getId()); + + } + +} \ No newline at end of file diff --git a/core/src/main/java/com/alibaba/nacos/core/distributed/id/IdGeneratorManager.java b/core/src/main/java/com/alibaba/nacos/core/distributed/id/IdGeneratorManager.java index 6ac3bacdee7..d8d783a6d87 100644 --- a/core/src/main/java/com/alibaba/nacos/core/distributed/id/IdGeneratorManager.java +++ b/core/src/main/java/com/alibaba/nacos/core/distributed/id/IdGeneratorManager.java @@ -45,7 +45,7 @@ public IdGeneratorManager() { if (iterator.hasNext()) { generator = iterator.next(); } else { - generator = new SnakeFlowerIdGenerator(); + generator = new SnowFlowerIdGenerator(); } generator.init(); return generator; diff --git a/core/src/main/java/com/alibaba/nacos/core/distributed/id/SnakeFlowerIdGenerator.java b/core/src/main/java/com/alibaba/nacos/core/distributed/id/SnowFlowerIdGenerator.java similarity index 97% rename from core/src/main/java/com/alibaba/nacos/core/distributed/id/SnakeFlowerIdGenerator.java rename to core/src/main/java/com/alibaba/nacos/core/distributed/id/SnowFlowerIdGenerator.java index a35da62e1cd..064918581b6 100644 --- a/core/src/main/java/com/alibaba/nacos/core/distributed/id/SnakeFlowerIdGenerator.java +++ b/core/src/main/java/com/alibaba/nacos/core/distributed/id/SnowFlowerIdGenerator.java @@ -24,7 +24,6 @@ import java.net.InetAddress; import java.net.UnknownHostException; import java.text.SimpleDateFormat; -import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.Map; @@ -43,10 +42,10 @@ * @author liaochuntao */ @SuppressWarnings("all") -public class SnakeFlowerIdGenerator implements IdGenerator { +public class SnowFlowerIdGenerator implements IdGenerator { private static final Logger logger = LoggerFactory - .getLogger(SnakeFlowerIdGenerator.class); + .getLogger(SnowFlowerIdGenerator.class); /** * Start time intercept (2018-08-05 08:34) diff --git a/test/src/test/java/com/alibaba/nacos/test/core/SnakeFlowerIdGenerator_ITCase.java b/test/src/test/java/com/alibaba/nacos/test/core/SnowFlowerIdGenerator_ITCase.java similarity index 80% rename from test/src/test/java/com/alibaba/nacos/test/core/SnakeFlowerIdGenerator_ITCase.java rename to test/src/test/java/com/alibaba/nacos/test/core/SnowFlowerIdGenerator_ITCase.java index c2e7aad7c64..002695ecd41 100644 --- a/test/src/test/java/com/alibaba/nacos/test/core/SnakeFlowerIdGenerator_ITCase.java +++ b/test/src/test/java/com/alibaba/nacos/test/core/SnowFlowerIdGenerator_ITCase.java @@ -16,7 +16,7 @@ package com.alibaba.nacos.test.core; -import com.alibaba.nacos.core.distributed.id.SnakeFlowerIdGenerator; +import com.alibaba.nacos.core.distributed.id.SnowFlowerIdGenerator; import com.alibaba.nacos.core.utils.ApplicationUtils; import org.junit.Assert; import org.junit.Test; @@ -25,14 +25,14 @@ /** * @author liaochuntao */ -public class SnakeFlowerIdGenerator_ITCase { +public class SnowFlowerIdGenerator_ITCase { @Test public void test_idGenerator() { ApplicationUtils.injectEnvironment(new StandardEnvironment()); - SnakeFlowerIdGenerator generator1 = new SnakeFlowerIdGenerator(); - SnakeFlowerIdGenerator generator2 = new SnakeFlowerIdGenerator(); - SnakeFlowerIdGenerator generator3 = new SnakeFlowerIdGenerator(); + SnowFlowerIdGenerator generator1 = new SnowFlowerIdGenerator(); + SnowFlowerIdGenerator generator2 = new SnowFlowerIdGenerator(); + SnowFlowerIdGenerator generator3 = new SnowFlowerIdGenerator(); generator1.initialize(1); generator2.initialize(2);