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

在Nacos默认的命名空间public下进行的操作能否将标识信息存储到数据库中 #8774

Open
wuchubuzai2018 opened this issue Jul 19, 2022 · 5 comments

Comments

@wuchubuzai2018
Copy link
Contributor

wuchubuzai2018 commented Jul 19, 2022

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的值为空

@wuchubuzai2018 wuchubuzai2018 changed the title Nacos开源版本代码如何设置租户信息,以便使用具体的租户ID值查询数据 在Nacos默认的命名空间public下进行的操作能否将标识信息存储到数据库中 Jul 19, 2022
@KomachiSion
Copy link
Collaborator

应该不行,从设计上public是名字,id是空字符串, 如果这样适配了,对于就用户平滑升级有影响。是否能只在oracle插件里面来做这个适配呢?

编程之夏有个相关的课题,可以一起到那边讨论一下。#8312

@wuchubuzai2018
Copy link
Contributor Author

应该不行,从设计上public是名字,id是空字符串, 如果这样适配了,对于就用户平滑升级有影响。是否能只在oracle插件里面来做这个适配呢?

编程之夏有个相关的课题,可以一起到那边讨论一下。#8312

你说的对,针对2.1版本,我本地目前简单适配了下Oracle和Postgresql,针对Oracle的tenant_id的为空查询的问题,我继承了ExternalStoragePersistServiceImpl,将大部分方法进行了tenant_id为public的默认值判断。

请问一下,我开发的这段代码是先开源在自己的github仓库中,大家来完善比较好,还是想办法作为一个nacos的特性分支来处理,我看之前别人也提交合并了一个jpa的实现。

@KomachiSion
Copy link
Collaborator

先放在自己的仓库中吧, #8312 之后可以看下是否可以作为插件再贡献到nacos-group中。

@xzxiaoshan
Copy link
Contributor

xzxiaoshan commented Dec 30, 2022

#9784

已提交 PR,新增使用开关的方式支持。等待作者合并意见。

@xzxiaoshan
Copy link
Contributor

应该不行,从设计上public是名字,id是空字符串, 如果这样适配了,对于就用户平滑升级有影响。是否能只在oracle插件里面来做这个适配呢?

编程之夏有个相关的课题,可以一起到那边讨论一下。#8312

新增配置开关方式,默认照旧,对有需求的新系统用户可通过打开开关的方式使用。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants