-
-
Notifications
You must be signed in to change notification settings - Fork 10.2k
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
删除namespace之后,客户端感知不到namespace的变化,导致的配置残留 #4006
Comments
因为我们可能删除一个namespace,但是apollo-openapi并没有这块的接口,所以自己通过网页登录方式删除的namespace,但这会导致configService里面缓存了不该拥有的数据,这看起来是个问题啊。 |
这时候我该如何通知客户端重新读取apollo数据,而不走缓存map了. |
删除接口我记得会发出 release message,config service 收到通知后会告诉客户端重新获取配置的 |
我们在删除配置后会等待15S左右,这看起来这并不会发起release message,当然你可以告诉我 自行在客户端如何触发这个函数。 |
我们这里的配置比较特殊需要删除这块的namespace,所以发现缓存的问题,这种在客户端测有办法使用什么方式删除掉cache吗。我觉得 是不是应该对外给开发者去管理缓存 这样 会不会更灵活。 |
看了下代码并做了下测试,删除 app 时会发出 release message 的,所以 config service 的 cache 是会被清空的,不过 apollo-client 在收到通知像 config service 发起请求该 namespace 会拿到 404 的响应,所以在本地不会更新内存中的配置。 apollo/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/NamespaceService.java Lines 340 to 342 in 348bee5
|
我的版本是1.5.1 并没有看到 ApolloInjectorCustomizer 类啊 且如果apollo的版本是1.5.1,尝试使用新的apollo-client组件会有问题吗? @nobodyiam |
@diwenzheng 1.9.1 最新版本包含这个 feature,可以考虑升下级~ |
@nobodyiam 看起来 有一定的并要升级版本了, 很久没关注社区了,1.9.0解决了session的问题。 关于你说的ApolloInjectorCustomizer,我看仅仅是一个获取内部单例的方法,这能解决我这个缓存的问题吗。能提供一下具体的思路吗.而且我看1.5.1 也有这个injector接口,看着貌似只要在resources目录下更改路径名就可以使用自己自定义的injector,当然唯一的区别就是order |
建议后续 能否提供一套便于开发者管理cache的管理器. 现在cache的管理每个处理类都包含一定的cache,建议搞一个cachemanager 管理所有的缓存,亦或者将各个cache抽象成接口,供cachemanage管理.不然代码我个人觉得还是太凌乱了 |
我的问题 已经解决。这个并不用升级版本就可以完成。当然建议最好能重构一下cache这块的逻辑. |
通过 ApolloInjectorCustomizer 可以自定义 ConfigFactory 的逻辑,从而在创建 DefaultConfig 时可以注入自定义的 config repository。 |
@nobodyiam
The text was updated successfully, but these errors were encountered: