在Nacos默认的命名空间public下进行的操作能否将标识信息存储到数据库中
Describe the bug
因为最近正在尝试让Nacos2.1适配下Oracle,未采用社区的jpa的分支,根据自己的想法进行适配一下,在适配Oracle的时候发现,当在public空间下操作的时候,配置上的表不会存储tenant_id(命名空间ID)的值,当数据库为oracle的时候,tenant_id不管是空字符串还是NULL值,当前查询的时候,采用tenant_id=?的形式都无法查询出来,为了避免改动过多配置代码,想着是不是可以在哪里配置上默认值或数据库表中插入一条默认的命名空间信息,然后某些代码就不用改动了。
Expected behavior
是否可以更改当前的tenant_id的判断逻辑为默认public的方式,更改代码中的这种判断为如下代码: 将ExternalStoragePersistServiceImpl类中的这种判断,把默认值空字符更改为默认的public的ID值 String tenantTmp = StringUtils.isBlank(configInfo.getTenant()) ? DEFAULT_NAMESPACE_ID : configInfo.getTenant();
Actually behavior 当前public命名空间下新增的配置,tenant_id为空,在oracle数据库上默认查询不出来,原因在于tenant_id的值为空
应该不行,从设计上public是名字,id是空字符串, 如果这样适配了,对于就用户平滑升级有影响。是否能只在oracle插件里面来做这个适配呢?
编程之夏有个相关的课题,可以一起到那边讨论一下。https://github.com/alibaba/nacos/issues/8312
应该不行,从设计上public是名字,id是空字符串, 如果这样适配了,对于就用户平滑升级有影响。是否能只在oracle插件里面来做这个适配呢?
编程之夏有个相关的课题,可以一起到那边讨论一下。#8312
你说的对,针对2.1版本,我本地目前简单适配了下Oracle和Postgresql,针对Oracle的tenant_id的为空查询的问题,我继承了ExternalStoragePersistServiceImpl,将大部分方法进行了tenant_id为public的默认值判断。
请问一下,我开发的这段代码是先开源在自己的github仓库中,大家来完善比较好,还是想办法作为一个nacos的特性分支来处理,我看之前别人也提交合并了一个jpa的实现。
先放在自己的仓库中吧, #8312 之后可以看下是否可以作为插件再贡献到nacos-group中。
https://github.com/alibaba/nacos/pull/9784
已提交 PR,新增使用开关的方式支持。等待作者合并意见。
应该不行,从设计上public是名字,id是空字符串, 如果这样适配了,对于就用户平滑升级有影响。是否能只在oracle插件里面来做这个适配呢?
编程之夏有个相关的课题,可以一起到那边讨论一下。#8312
新增配置开关方式,默认照旧,对有需求的新系统用户可通过打开开关的方式使用。