请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

连接AHAS之后,UrlCleaner 不灵光了

第一次访问restul样式的url,是可以替换的
紧接着第二次刷新就不行了,没有进入UrlCleaner的实现类
下面是我打的日志截图和ahas这边控制台看到的簇点链路
图片描述
图片描述

正在回答

1回答

您好,理论上每次都会进入的哈。

相关源码:

com.alibaba.csp.sentinel.adapter.servlet.CommonFilter#doFilter

核心代码:UrlCleaner urlCleaner = WebCallbackManager.getUrlCleaner();

org.springframework.cloud.alibaba.sentinel.custom.SentinelAutoConfiguration#init

核心代码:urlBlockHandlerOptional.ifPresent(WebCallbackManager::setUrlBlockHandler);

可以打断点排查一下哈。

0 回复 有任何疑惑可以回复我~
  • 提问者 zengchen #1
    ahas sentinel 接入,官网显示的 spring-boot-starter-ahas-sentinel-client 用的是1.3.5,我今天测试就用了这个版本,把它换成 1.3.2 版本就好了。我debug看到错误原因是AhasAdapterExtInitFunc类把UrlCleaner重新设值了 WebCallbackManager.setUrlCleaner(new PropertyUrlCleaner());重新设值发生在第一次请求快结束的时候,不知道为什么会执行这个,真正原因还是没有找出来
    回复 有任何疑惑可以回复我~ 2019-08-19 21:40:39
  • 大目 回复 提问者 zengchen #2
    我看了下,Ahas 1.3.5确实用的PropertyUrlCleaner。AhasAdapterExtInitFunc是Sentinel的SPI机制。
    这块感觉体验不好,并且Ahas也没有任何文档……
    
    只能根据com.alibaba.csp.ahas.sentinel.adapter.servlet.UrlCleanerPropertyLocalConfig里面的代码,去配置clean规则了……
    
    我个人认为这种设计是不太好的:
    1. 提供了默认的UrlCleaner可以,但应该以自己创建的为主;
    2. 至少应该具备文档,一个内置的UrlCleaner默认嵌入在一个商业化的JAR包里,还不写任何文档……
    3. 目前设计,要用Ahas自带的Cleaner,还得额外创建一个ahas-sentinel-url-clean.properties;或者用csp.sentinel.url.clean.config.path指定目录。
    这感觉都很扯啊……
    
    我给官方提Issue了,详见:https://github.com/alibaba/Sentinel/issues/999
    回复 有任何疑惑可以回复我~ 2019-08-20 10:24:59
  • 提问者 zengchen 回复 大目 #3
    666
    回复 有任何疑惑可以回复我~ 2019-08-20 16:49:29
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信