disconf icon indicating copy to clipboard operation
disconf copied to clipboard

实例列表出现错误

Open kingtiger2 opened this issue 8 years ago • 1 comments

界面的实例列表有时候会出现 10台 ; 其中8台出现错误 大概看了下代码 说是zk数据和db数据不一致 ,什么情况下会出现这样的问题 @knightliao

kingtiger2 avatar Jan 03 '18 08:01 kingtiger2

@kingtiger2 看看你的情况是否跟我遇到过的一样

原因: disconf对应的Java类中有多余的属性,且属性是基本类型,比如int,当变量不赋值时是有默认值0的;

分析: 配置文件对应的Java类中有多余的属性,这个属性是在disconf-web的配置项中没有的,启动加载的时候是根据disconf-web中的配置值来赋值的,当没有值时,默认null,代码标签如下: com.baidu.disconf.client.store.processor.impl.DisconfStoreFileProcessorImpl.inject2Store(String, DisconfValue) default

当往zookeeper上写数据的时候,是用了json格式化的,会把null属性过滤掉,这就是启动的时候并没有异常,代码如下: com.baidu.disconf.client.core.processor.impl.DisconfFileCoreProcessorImpl.updateOneConfFile(String, DisconfCenterFile) default

当某些时候,应用和zookeeper的会话过期(disconf-client中的NodeWatch,监控到Expired事件后,重连zookeeper,重建配置文件在zookeeper上的节点),这个时候int类型的属性实际上已经被赋值0了,json格式化数据写入zookeeper时,这个0是会保留的,所以zookeeper上的数据就会和DB中的数据不一致了;

jackiechan1981 avatar Feb 06 '18 12:02 jackiechan1981