dataScope存在为null的问题

Blade 未结 1 110
xiaoliu
xiaoliu 剑圣 2024-11-28 17:49

一、该问题的重现步骤是什么?

 1.调用物联网平台(升级成cloud版本)/device/detail接口(下图1),发现有dataScope为null的问题,试了下其他接口也存在这样的问题。DataScopeCache中打断点发现虽然执行了缓存put操作(下图2),但是redis中并没有塞入对应的值(下图3)。


image.png


image.png


image.png


二、你期待的结果是什么?实际看到的又是什么?

期待的结果:本地调试的时候,不报dataScope的错误。

实际看到的:本地调试的时候,有的接口会报dataScope的错误。


三、你正在使用的是什么产品,什么版本?在什么操作系统上?

正在使用的产品:BladeX物联网平台

版本:1.2.0

操作系统:Windows11


四、请提供详细的错误堆栈信息,这很重要。


五、若有更多详细信息,请在下面提供。

1条回答
  • 2024-11-28 17:50

    已经修复了,在dev分支,可以先看下:https://center.javablade.com/blade/BladeX/commit/168173030f35f49776340f8e954378017d73bd4f

    还有一个就是如果是cloud版本,需要引入blade-scope-api的依赖,可全局搜索一下,参考下已引入的工程

    作者追问:2024-11-29 10:52

    blade-core-secure,用4.3.0 ?

    回答: 2024-11-29 10:53

    bladex新版本这几天就发了,可以留意下,发版后升级就解决了

    作者追问:2024-11-29 10:59

    好,谢谢!

    回答: 2024-11-29 11:03

    调用client获取的datascope为null,应该是没有引入blade-scope-api的依赖,你再检查一下看看,如果引入了,调用不管成功与否都会返回类的,不会是一个null。如果返回的是null,说明触发feign熔断了。新版本解决的是缓存未put成功的问题。

    作者追问:2024-11-29 11:24

    调用的是物联网平台(升级成cloud版本)/device/detail接口(blade-server中的),blade-service的pom已经引用过了blade-scope-api依赖。是要在blade-server中再引用一次blade-scope-api?


    image.png

    image.png


    image.png

    回答: 2024-11-29 11:26

    如果blade-server引用后子服务就不需要引入了。你打个断点看看是哪里报错了,是在client报错的还是在fallback类报错的

    作者追问:2024-11-29 11:33

    打断点到这里因为dataScope为空,导致dataScope.getResourceCode()报错,image.png


    image.png

    回答: 2024-11-29 11:37

    进这里调试CleanShot20241129113706@2x.png

    作者追问:2024-11-29 11:48

    查到原因了,本地调试的时候,要把blade-system也要启动。。。之前以为本地用端口调试blade-server的服务,只开blade-server服务就够了。。。

    回答: 2024-11-29 11:51

    如果blade-server服务链接的数据库和blade-system是一样的,那就不需要引入blade-scope-api的依赖,可以直接删掉。

    删掉后会调用boot形式的数据权限逻辑,不走feign,这样效率更高。

    如果你的blade-server是独立的一个iot数据库,没有系统表,那么就需要引入scope依赖,走feign的形式进行数据权限过滤

    作者追问:2024-11-29 11:53

    感谢提醒!

    0 讨论(0)
提交回复