Skip to content
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

issues87 修复在多个/多级SpringContext并存环境下,EventPublishingConfigService发送事件混乱,引发后续依赖事… #260

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

ittxy
Copy link

@ittxy ittxy commented May 31, 2021

…件机制的系列问题,如@NacosValue注解无法解析到最新值

Please do not create a Pull Request without creating an issue first.

What is the purpose of the change

修复在多个/多级SpringContext并存环境下,EventPublishingConfigService发送事件混乱,引发后续依赖事件机制的系列问题,如@NacosValue注解无法解析到最新值

Brief changelog

Verifying this change

  1. 应用可能出现多个SpringContext, 如一般的SpringMvc项目,包含SpringMvc容器和Root容器,SpringMvc容器的parent指向Root容器,它们是上级层级关系
    2.CacheableEventPublishingNacosServiceFactory拥有字段(ConfigurableApplicationContext context),它能作为单例使用的前提条件是,应用的只有存在一个容器单独使用Nacos,而多个SpringContext同时使用Nacos,就可能引发创建的ConfigService是(上一个SpringContext创建的,被缓存)
    3.基于以上,此PR删除CacheableEventPublishingNacosServiceFactory.getSingleton()获取单例的方法,将CacheableEventPublishingNacosServiceFactory对象的创建关联到容器

Follow this checklist to help us incorporate your contribution quickly and easily:

  • Make sure there is a Github issue filed for the change (usually before you start working on it). Trivial changes like typos do not require a Github issue. Your pull request should address just this issue, without pulling in other changes - one PR resolves one issue.
  • Format the pull request title like [ISSUE #123] Fix UnknownException when host config not exist. Each commit in the pull request should have a meaningful subject line and body.
  • Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
  • Write necessary unit-test to verify your logic correction, more mock a little better when cross module dependency exist. If the new feature or significant change is committed, please remember to add integration-test in test module.
  • Run mvn -B clean package apache-rat:check findbugs:findbugs -Dmaven.test.skip=true to make sure basic checks pass. Run mvn clean install -DskipITs to make sure unit-test pass. Run mvn clean test-compile failsafe:integration-test to make sure integration-test pass.

@ittxy
Copy link
Author

ittxy commented May 31, 2021

@Nacos 注解在项目启动后,修改无法更新的 复现 样例代码地址是 https://github.com/ittxy/nacos-bug-in-spring-context

@ittxy ittxy changed the title 修复在多个/多级SpringContext并存环境下,EventPublishingConfigService发送事件混乱,引发后续依赖事… issues/87 修复在多个/多级SpringContext并存环境下,EventPublishingConfigService发送事件混乱,引发后续依赖事… Jul 23, 2021
@ittxy ittxy changed the title issues/87 修复在多个/多级SpringContext并存环境下,EventPublishingConfigService发送事件混乱,引发后续依赖事… issues87 修复在多个/多级SpringContext并存环境下,EventPublishingConfigService发送事件混乱,引发后续依赖事… Jul 23, 2021
@ittxy
Copy link
Author

ittxy commented Jul 23, 2021

该PR:需要分别在applicationContext.xml与servlet.xml中同时注册NacosConfig(EnableNacosConfig配置一致),因为父容器无法感知子容器的存在。 #87

@CLAassistant
Copy link

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.


zhijie.zheng seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.
You have signed the CLA already but the status is still pending? Let us recheck it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants