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

Sentilel-dashboard failed to add FlowRuleNacosProvider to compile #600

Closed
ShZhengqin opened this issue Mar 21, 2019 · 7 comments
Closed
Labels
area/dashboard Issues or PRs about Sentinel Dashboard kind/question Category issues related to questions or problems

Comments

@ShZhengqin
Copy link

Issue Description

Type: bug report
下载了sentinel最新源码,在sentinel-dashboard中将 src/test/java中的4个类:
FlowRuleNacosProvider.java
FlowRuleNacosPublisher.java
NacosConfig.java
NacosConfigUtil.java
提取出来放在了src/main/java的包: com.alibaba.csp.sentinel.dashboard.rule.nacos下,如图
图片

编译 maven clean package 报错:
图片

望解答,谢谢

@sentinel-bot
Copy link
Collaborator

Hi @ShZhengqin, we detect non-English characters in the issue. This comment is an auto translation from @sentinel-bot to help other users to understand this issue.
We encourage you to describe your issue in English which is more friendly to other users.

Sentilel-dashboard failed to add FlowRuleNacosProvider to compile

Issue Description

Type: bug report
Download the latest source code for sentinel, and put 4 classes in src/test/java in sentinel-dashboard:
FlowRuleNacosProvider.java
FlowRuleNacosPublisher.java
NacosConfig.java
NacosConfigUtil.java
Extracted and placed in the src/main/java package: com.alibaba.csp.sentinel.dashboard.rule.nacos, as shown
Image

Compile maven clean package error:
Image

Hope to answer, thank you

@sentinel-bot sentinel-bot changed the title sentilel-dashboard添加FlowRuleNacosProvider编译失败 Sentilel-dashboard failed to add FlowRuleNacosProvider to compile Mar 21, 2019
@sentinel-bot sentinel-bot added the kind/bug Category issues or prs related to bug. label Mar 21, 2019
@sczyh30 sczyh30 added kind/question Category issues related to questions or problems area/dashboard Issues or PRs about Sentinel Dashboard and removed kind/bug Category issues or prs related to bug. labels Mar 22, 2019
@sczyh30
Copy link
Member

sczyh30 commented Mar 22, 2019

Hi, you need to add Nacos client dependency (nacos-client) when you're using the Nacos publisher demo.

@ShZhengqin
Copy link
Author

ShZhengqin commented Mar 22, 2019

@sczyh30 谢谢, 已经可以编译通过,现在有个疑问请教:
我在nacos上添加了一个 service-demo-flow-rules 如图
图片
在 sentinel-dashboard上可以看到已获取到这个数据,如图
图片
图片

我测试下来,发现,在nacos上修改某个属性,如【count】的值,/v2/flow/rules可以正确获取, sentinel-dashboard上也可以正确显示,规则也生效了。但反过来,我在sentinel-dashboard上修改此属性值=2时,如图
图片
Nacos上不能正常显示,依然还是【count: 6.0】, /v2/flow/rules接口也依然没有变,count也是=6,但sentinel的规则生效了,是按着【count: 2.0】的限流规则来执行的,如图
图片

请问这是为什么?
我希望sentinel-dashboard上修改属性值的时候,nacos对应的属性也能更改,该如何处理?
thanks

@sczyh30
Copy link
Member

sczyh30 commented Mar 22, 2019

如果已经接入了配置源,需要在应用维度规则管理页面进行推送(/v2/flow),请手动切换 URL 至 v2 URL (/flow/xxx -> /v2/flow/xxx),或者直接修改前端路由。

@sczyh30 sczyh30 closed this as completed Mar 25, 2019
@ShZhengqin
Copy link
Author

@sczyh30 ,thanks so much

@ShZhengqin
Copy link
Author

ShZhengqin commented Mar 26, 2019

@sczyh30 , 我仿照FlowControllerV2写了一个 ParamFlowRuleControllerV2, 请看 https://github.com/ShZhengqin/sentinel-dashboard 相关的v2的js文件都已经仿照flow改造完成,现在遇到的问题是,页面上新增ParamFlow没有问题,但获取数据后页面展示时报错,报错内容如下:

2019-03-26 14:40:21 [http-nio-8080-exec-6] INFO c.a.c.s.d.r.n.ParamFlowRuleNacosProvider - ParamFlowRule rules:[{"app":"service-demo","clusterConfig":{"fallbackToLocalWhenFail":false,"sampleCount":10,"thresholdType":0,"windowIntervalMs":1000},"clusterMode":false,"count":1.0,"gmtCreate":1553582394195,"gmtModified":1553582394195,"grade":1,"id":2,"ip":"192.168.105.121","limitApp":"default","paramFlowItemList":[],"paramIdx":1,"port":8720,"resource":"/test","rule":{"clusterConfig":{"$ref":"$[0].clusterConfig"},"clusterMode":false,"count":1.0,"grade":1,"limitApp":"default","paramFlowItemList":[],"paramIdx":1,"resource":"/test"}}] 2019-03-26 14:40:21 [http-nio-8080-exec-6] ERROR c.a.c.s.d.c.v.ParamFlowRuleControllerV2 - Error when querying paramFlow rules com.alibaba.fastjson.JSONException: set property error, com.alibaba.csp.sentinel.dashboard.datasource.entity.rule.ParamFlowRuleEntity#paramFlowItemList at com.alibaba.fastjson.parser.deserializer.FieldDeserializer.setValue(FieldDeserializer.java:162) at com.alibaba.fastjson.parser.deserializer.ArrayListTypeFieldDeserializer.parseField(ArrayListTypeFieldDeserializer.java:71) at com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.parseField(JavaBeanDeserializer.java:1183) at com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.deserialze(JavaBeanDeserializer.java:822) at com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.deserialze(JavaBeanDeserializer.java:273) at com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.deserialze(JavaBeanDeserializer.java:269) at com.alibaba.fastjson.parser.DefaultJSONParser.parseArray(DefaultJSONParser.java:762) at com.alibaba.fastjson.parser.DefaultJSONParser.parseArray(DefaultJSONParser.java:696) at com.alibaba.fastjson.parser.DefaultJSONParser.parseArray(DefaultJSONParser.java:691) at com.alibaba.fastjson.JSON.parseArray(JSON.java:593) at com.alibaba.csp.sentinel.dashboard.rule.nacos.NacosConfig.lambda$paramFlowRuleEntityDecoder$3(NacosConfig.java:101) at com.alibaba.csp.sentinel.dashboard.rule.nacos.ParamFlowRuleNacosProvider.getRules(ParamFlowRuleNacosProvider.java:57) at com.alibaba.csp.sentinel.dashboard.rule.nacos.ParamFlowRuleNacosProvider.getRules(ParamFlowRuleNacosProvider.java:39) at com.alibaba.csp.sentinel.dashboard.controller.v2.ParamFlowRuleControllerV2.apiQueryMachineRules(ParamFlowRuleControllerV2.java:83) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:209) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:891) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:974) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:866) at javax.servlet.http.HttpServlet.service(HttpServlet.java:635) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:851) at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at com.alibaba.csp.sentinel.adapter.servlet.CommonFilter.doFilter(CommonFilter.java:89) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at com.alibaba.csp.sentinel.dashboard.config.WebConfig$1.doFilter(WebConfig.java:99) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:109) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.reflect.InvocationTargetException: null at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.alibaba.fastjson.parser.deserializer.FieldDeserializer.setValue(FieldDeserializer.java:96) ... 73 common frames omitted Caused by: java.lang.NullPointerException: null at com.alibaba.csp.sentinel.dashboard.datasource.entity.rule.ParamFlowRuleEntity.getParamFlowItemList(ParamFlowRuleEntity.java:75) ... 78 common frames omitted

其他规则,如SystemRule, AuthorityRule我也写了,新删改都没有问题, 只有ParamFlow这个有问题,dashboard页面如下
图片

@ShZhengqin
Copy link
Author

CST11021 pushed a commit to CST11021/Sentinel that referenced this issue Nov 3, 2021
[ISSUE alibaba#525] Support the message track,add the function which supports trace topic name value configurable by users.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/dashboard Issues or PRs about Sentinel Dashboard kind/question Category issues related to questions or problems
Projects
None yet
Development

No branches or pull requests

3 participants