-
Notifications
You must be signed in to change notification settings - Fork 143
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
当源节点数据为空的,nacos-sync会删除目标节点上的所有实例信息 #350
Comments
it seems like a bug, i will try to fix it later |
my fix two issue for 350 and 346 in #347 |
paderlol
added a commit
that referenced
this issue
May 15, 2024
* update port * fix #297 (#298) Co-authored-by: yangchun2 <yangchun2@joyy.com> * Revert "fix #297 (#298)" (#318) This reverts commit a9df169. * 0.4.9-pre (#325) * Feat/sync support2.x#mutiple thread sync02 (#304) * update port * Multithreading sync * solve conflict * imple SyncService * adapter deregister * optimization some code * fix deregister instance equals logic Co-authored-by: Oliver <wqdyxnbd@163.com> Co-authored-by: paderlol <huangmnlove@163.com> * Optimize the code for assigning tasks. (#320) * Develop (#321) * Optimize the code for assigning tasks. * Adds prefix to the input string if it doesn't already have it.#308 * Fix #305 (#322) * Optimize the code for assigning tasks. * Adds prefix to the input string if it doesn't already have it.#308 * Fix .#305 * Fix cyclic dependency code (#323) * Optimize the code for assigning tasks. * Adds prefix to the input string if it doesn't already have it.#308 * Fix .#305 * Fix cyclic dependency code. * Refactoring the Nacos Sync to Consul Logic (#324) * Optimize the code for assigning tasks. * Adds prefix to the input string if it doesn't already have it.#308 * Fix .#305 * Fix cyclic dependency code. * Refactoring the Nacos Sync to Consul Logic. --------- Co-authored-by: chenhao26 <35129699+chenhao26-nineteen@users.noreply.github.com> Co-authored-by: Oliver <wqdyxnbd@163.com> * fix:nacos 2 nacos 同步关闭后心跳没有停止问题 * fix:nacos 2 nacos 同步关闭后心跳没有停止问题 * fix:集群信息保存 cluster_level 为 null * fix: 1、注册时根据中心化逻辑判断同步,但是删除时逻辑不一致问题 2、如果停止同步nameservice为空问题 * 问题在于对destInstances列表的更新方式。在Java中,方法参数是按值传递的。这意味着当你传递一个对象到方法中时,实际上传递的是对象引用的副本。因此,如果你在方法内部改变了这个引用指向的对象(例如,将其指向一个新的对象),这个改变不会影响到原始的对象引用。 在你的代码中,destInstances = newDestInstance;这一行只是改变了destInstances引用在方法内部的指向,而不会改变方法外部传入的destInstances列表对象。这意味着,尽管你筛选出了需要反注册的实例,但这个改变不会反映到方法调用者那里。 --------- Co-authored-by: Oliver <wqdyxnbd@163.com> Co-authored-by: paderlol <huangmnlove@163.com> Co-authored-by: 杨春 <chun@kpromise.top> Co-authored-by: yangchun2 <yangchun2@joyy.com> Co-authored-by: chenhao26 <35129699+chenhao26-nineteen@users.noreply.github.com>
Thanks to your contributes, i will try to review it later. |
paderlol
added a commit
that referenced
this issue
May 18, 2024
* Feat/sync support2.x#mutiple thread sync02 (#304) * update port * Multithreading sync * solve conflict * imple SyncService * adapter deregister * optimization some code * fix deregister instance equals logic Co-authored-by: Oliver <wqdyxnbd@163.com> Co-authored-by: paderlol <huangmnlove@163.com> * Optimize the code for assigning tasks. (#320) * Develop (#321) * Optimize the code for assigning tasks. * Adds prefix to the input string if it doesn't already have it.#308 * Fix #305 (#322) * Optimize the code for assigning tasks. * Adds prefix to the input string if it doesn't already have it.#308 * Fix .#305 * Fix cyclic dependency code (#323) * Optimize the code for assigning tasks. * Adds prefix to the input string if it doesn't already have it.#308 * Fix .#305 * Fix cyclic dependency code. * Refactoring the Nacos Sync to Consul Logic (#324) * Optimize the code for assigning tasks. * Adds prefix to the input string if it doesn't already have it.#308 * Fix .#305 * Fix cyclic dependency code. * Refactoring the Nacos Sync to Consul Logic. * #346 #350:nacos 2 nacos 同步关闭后心跳没有停止问题 ,nacos-sync删除目标节点问题 (#347) * update port * fix #297 (#298) Co-authored-by: yangchun2 <yangchun2@joyy.com> * Revert "fix #297 (#298)" (#318) This reverts commit a9df169. * 0.4.9-pre (#325) * Feat/sync support2.x#mutiple thread sync02 (#304) * update port * Multithreading sync * solve conflict * imple SyncService * adapter deregister * optimization some code * fix deregister instance equals logic Co-authored-by: Oliver <wqdyxnbd@163.com> Co-authored-by: paderlol <huangmnlove@163.com> * Optimize the code for assigning tasks. (#320) * Develop (#321) * Optimize the code for assigning tasks. * Adds prefix to the input string if it doesn't already have it.#308 * Fix #305 (#322) * Optimize the code for assigning tasks. * Adds prefix to the input string if it doesn't already have it.#308 * Fix .#305 * Fix cyclic dependency code (#323) * Optimize the code for assigning tasks. * Adds prefix to the input string if it doesn't already have it.#308 * Fix .#305 * Fix cyclic dependency code. * Refactoring the Nacos Sync to Consul Logic (#324) * Optimize the code for assigning tasks. * Adds prefix to the input string if it doesn't already have it.#308 * Fix .#305 * Fix cyclic dependency code. * Refactoring the Nacos Sync to Consul Logic. --------- Co-authored-by: chenhao26 <35129699+chenhao26-nineteen@users.noreply.github.com> Co-authored-by: Oliver <wqdyxnbd@163.com> * fix:nacos 2 nacos 同步关闭后心跳没有停止问题 * fix:nacos 2 nacos 同步关闭后心跳没有停止问题 * fix:集群信息保存 cluster_level 为 null * fix: 1、注册时根据中心化逻辑判断同步,但是删除时逻辑不一致问题 2、如果停止同步nameservice为空问题 * 问题在于对destInstances列表的更新方式。在Java中,方法参数是按值传递的。这意味着当你传递一个对象到方法中时,实际上传递的是对象引用的副本。因此,如果你在方法内部改变了这个引用指向的对象(例如,将其指向一个新的对象),这个改变不会影响到原始的对象引用。 在你的代码中,destInstances = newDestInstance;这一行只是改变了destInstances引用在方法内部的指向,而不会改变方法外部传入的destInstances列表对象。这意味着,尽管你筛选出了需要反注册的实例,但这个改变不会反映到方法调用者那里。 --------- Co-authored-by: Oliver <wqdyxnbd@163.com> Co-authored-by: paderlol <huangmnlove@163.com> Co-authored-by: 杨春 <chun@kpromise.top> Co-authored-by: yangchun2 <yangchun2@joyy.com> Co-authored-by: chenhao26 <35129699+chenhao26-nineteen@users.noreply.github.com> * 0.5.0 (#351) * Optimize the code for assigning tasks. * Adds prefix to the input string if it doesn't already have it.#308 * Fix .#305 * Fix cyclic dependency code. * Refactoring the Nacos Sync to Consul Logic. * 1. 重新设计全量 Nacos 同步 Nacos 2. 修复Nacos Instance equals无效导致出现无法注册成功问题 3. 升级Nacos Sync JDK/Spring Boot版本 4. 保底同步从改成并发同步 5. 增加部分注释 * Develop (#353) * Optimize the code for assigning tasks. * Adds prefix to the input string if it doesn't already have it.#308 * Fix .#305 * Fix cyclic dependency code. * Refactoring the Nacos Sync to Consul Logic. * 1. 重新设计全量 Nacos 同步 Nacos 2. 修复Nacos Instance equals无效导致出现无法注册成功问题 3. 升级Nacos Sync JDK/Spring Boot版本 4. 保底同步从改成并发同步 5. 增加部分注释 --------- Co-authored-by: chenhao26 <35129699+chenhao26-nineteen@users.noreply.github.com> Co-authored-by: Oliver <wqdyxnbd@163.com> Co-authored-by: 龙竹 <34528665+dragonTalon@users.noreply.github.com> Co-authored-by: 杨春 <chun@kpromise.top> Co-authored-by: yangchun2 <yangchun2@joyy.com>
merged #347 |
paderlol
added a commit
that referenced
this issue
Jun 10, 2024
* Feat/sync support2.x#mutiple thread sync02 (#304) * update port * Multithreading sync * solve conflict * imple SyncService * adapter deregister * optimization some code * fix deregister instance equals logic Co-authored-by: Oliver <wqdyxnbd@163.com> Co-authored-by: paderlol <huangmnlove@163.com> * Optimize the code for assigning tasks. (#320) * Develop (#321) * Optimize the code for assigning tasks. * Adds prefix to the input string if it doesn't already have it.#308 * Fix #305 (#322) * Optimize the code for assigning tasks. * Adds prefix to the input string if it doesn't already have it.#308 * Fix .#305 * Fix cyclic dependency code (#323) * Optimize the code for assigning tasks. * Adds prefix to the input string if it doesn't already have it.#308 * Fix .#305 * Fix cyclic dependency code. * Refactoring the Nacos Sync to Consul Logic (#324) * Optimize the code for assigning tasks. * Adds prefix to the input string if it doesn't already have it.#308 * Fix .#305 * Fix cyclic dependency code. * Refactoring the Nacos Sync to Consul Logic. * #346 #350:nacos 2 nacos 同步关闭后心跳没有停止问题 ,nacos-sync删除目标节点问题 (#347) * update port * fix #297 (#298) Co-authored-by: yangchun2 <yangchun2@joyy.com> * Revert "fix #297 (#298)" (#318) This reverts commit a9df169. * 0.4.9-pre (#325) * Feat/sync support2.x#mutiple thread sync02 (#304) * update port * Multithreading sync * solve conflict * imple SyncService * adapter deregister * optimization some code * fix deregister instance equals logic Co-authored-by: Oliver <wqdyxnbd@163.com> Co-authored-by: paderlol <huangmnlove@163.com> * Optimize the code for assigning tasks. (#320) * Develop (#321) * Optimize the code for assigning tasks. * Adds prefix to the input string if it doesn't already have it.#308 * Fix #305 (#322) * Optimize the code for assigning tasks. * Adds prefix to the input string if it doesn't already have it.#308 * Fix .#305 * Fix cyclic dependency code (#323) * Optimize the code for assigning tasks. * Adds prefix to the input string if it doesn't already have it.#308 * Fix .#305 * Fix cyclic dependency code. * Refactoring the Nacos Sync to Consul Logic (#324) * Optimize the code for assigning tasks. * Adds prefix to the input string if it doesn't already have it.#308 * Fix .#305 * Fix cyclic dependency code. * Refactoring the Nacos Sync to Consul Logic. --------- Co-authored-by: chenhao26 <35129699+chenhao26-nineteen@users.noreply.github.com> Co-authored-by: Oliver <wqdyxnbd@163.com> * fix:nacos 2 nacos 同步关闭后心跳没有停止问题 * fix:nacos 2 nacos 同步关闭后心跳没有停止问题 * fix:集群信息保存 cluster_level 为 null * fix: 1、注册时根据中心化逻辑判断同步,但是删除时逻辑不一致问题 2、如果停止同步nameservice为空问题 * 问题在于对destInstances列表的更新方式。在Java中,方法参数是按值传递的。这意味着当你传递一个对象到方法中时,实际上传递的是对象引用的副本。因此,如果你在方法内部改变了这个引用指向的对象(例如,将其指向一个新的对象),这个改变不会影响到原始的对象引用。 在你的代码中,destInstances = newDestInstance;这一行只是改变了destInstances引用在方法内部的指向,而不会改变方法外部传入的destInstances列表对象。这意味着,尽管你筛选出了需要反注册的实例,但这个改变不会反映到方法调用者那里。 --------- Co-authored-by: Oliver <wqdyxnbd@163.com> Co-authored-by: paderlol <huangmnlove@163.com> Co-authored-by: 杨春 <chun@kpromise.top> Co-authored-by: yangchun2 <yangchun2@joyy.com> Co-authored-by: chenhao26 <35129699+chenhao26-nineteen@users.noreply.github.com> * 0.5.0 (#351) * Optimize the code for assigning tasks. * Adds prefix to the input string if it doesn't already have it.#308 * Fix .#305 * Fix cyclic dependency code. * Refactoring the Nacos Sync to Consul Logic. * 1. 重新设计全量 Nacos 同步 Nacos 2. 修复Nacos Instance equals无效导致出现无法注册成功问题 3. 升级Nacos Sync JDK/Spring Boot版本 4. 保底同步从改成并发同步 5. 增加部分注释 * Develop (#353) * Optimize the code for assigning tasks. * Adds prefix to the input string if it doesn't already have it.#308 * Fix .#305 * Fix cyclic dependency code. * Refactoring the Nacos Sync to Consul Logic. * 1. 重新设计全量 Nacos 同步 Nacos 2. 修复Nacos Instance equals无效导致出现无法注册成功问题 3. 升级Nacos Sync JDK/Spring Boot版本 4. 保底同步从改成并发同步 5. 增加部分注释 * 1. 优化部分代码 (#354) * Optimize the code for assigning tasks. * Adds prefix to the input string if it doesn't already have it.#308 * Fix .#305 * Fix cyclic dependency code. * Refactoring the Nacos Sync to Consul Logic. * 1. 重新设计全量 Nacos 同步 Nacos 2. 修复Nacos Instance equals无效导致出现无法注册成功问题 3. 升级Nacos Sync JDK/Spring Boot版本 4. 保底同步从改成并发同步 5. 增加部分注释 * 1. 优化部分代码 --------- Co-authored-by: chenhao26 <35129699+chenhao26-nineteen@users.noreply.github.com> Co-authored-by: Oliver <wqdyxnbd@163.com> Co-authored-by: 龙竹 <34528665+dragonTalon@users.noreply.github.com> Co-authored-by: 杨春 <chun@kpromise.top> Co-authored-by: yangchun2 <yangchun2@joyy.com>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
当源节点数据为空的,nacos-sync会删除目标节点上的所有实例信息
private void processDeRegisterInstances(TaskDO taskDO, NamingService destNamingService) throws NacosException {
//如果此时sourceInstance中的实例为空,证明此时实例下线或实例不存在
List destInstances = destNamingService.getAllInstances(taskDO.getServiceName(),
getGroupNameOrDefault(taskDO.getGroupName()), new ArrayList<>(), false);
// 如果目标集群中的数据实例也为空了,则测试无需操作
if (CollectionUtils.isEmpty(destInstances)) {
return;
}
deRegisterFilter(destInstances, taskDO.getSourceClusterId());
if (CollectionUtils.isNotEmpty(destInstances)) {
//逐个执行反注册,拿出一个实例即可, 需要处理redo,否则会被重新注册上来
for (Instance destInstance : destInstances) {
destNamingService.deregisterInstance(taskDO.getServiceName(),
getGroupNameOrDefault(taskDO.getGroupName()), destInstance);
}
}
}
com.alibaba.nacossync.extension.impl.NacosSyncToNacosServiceImpl#deRegisterFilter
问题在于对destInstances列表的更新方式。在Java中,方法参数是按值传递的。这意味着当你传递一个对象到方法中时,实际上传递的是对象引用的副本。因此,如果你在方法内部改变了这个引用指向的对象(例如,将其指向一个新的对象),这个改变不会影响到原始的对象引用。
在你的代码中,destInstances = newDestInstance;这一行只是改变了destInstances引用在方法内部的指向,而不会改变方法外部传入的destInstances列表对象。这意味着,尽管你筛选出了需要反注册的实例,但这个改变不会反映到方法调用者那里。
The text was updated successfully, but these errors were encountered: