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 2.2.0-配置中心 openAPI v2 无法创建与删除配置 #9783

Closed
Vain-vayne opened this issue Jan 3, 2023 · 16 comments
Closed

Nacos 2.2.0-配置中心 openAPI v2 无法创建与删除配置 #9783

Vain-vayne opened this issue Jan 3, 2023 · 16 comments

Comments

@Vain-vayne
Copy link

Describe the bug

配置中心 openAPI v2 无法创建与删除配置

步骤

# 发布配置(V2)
curl -d 'dataId=nacos.example' \
    -d 'group=DEFAULT_GROUP' \
    -d 'namespaceId=public' \
    -d 'content=contentTest' \
    -X POST 'http://1.1.1.201:8848/nacos/v2/cs/config'

# 获取配置(V2)
curl -X GET 'http://1.1.1.201:8848/nacos/v2/cs/config?dataId=nacos.example&group=DEFAULT_GROUP&namespaceId=public'

# 获取配置(V1)
curl -X GET "http://1.1.1.201:8848/nacos/v1/cs/configs?dataId=nacos.example&group=DEFAULT_GROUP&namespaceId=public"

# 发布配置(V1)
curl -X POST "http://1.1.1.201:8848/nacos/v1/cs/configs?dataId=nacos.example&group=DEFAULT_GROUP&namespaceId=public&content=contentTest"

# 获取配置(V1)
curl -X GET "http://1.1.1.201:8848/nacos/v1/cs/configs?dataId=nacos.example&group=DEFAULT_GROUP&namespaceId=public"

# 获取配置(V2)
curl -X GET 'http://1.1.1.201:8848/nacos/v2/cs/config?dataId=nacos.example&group=DEFAULT_GROUP&namespaceId=public'

# 删除配置(V2)
curl -X DELETE 'http://1.1.1.201:8848/nacos/v2/cs/config?dataId=nacos.example&group=DEFAULT_GROUP&namespaceId=public'

# 获取配置(V1)
curl -X GET "http://1.1.1.201:8848/nacos/v1/cs/configs?dataId=nacos.example&group=DEFAULT_GROUP&namespaceId=public"

# 获取配置(V2)
curl -X GET 'http://1.1.1.201:8848/nacos/v2/cs/config?dataId=nacos.example&group=DEFAULT_GROUP&namespaceId=public'

# 删除配置(V1)
curl -X DELETE "http://1.1.1.201:8848/nacos/v1/cs/configs?dataId=nacos.example&group=DEFAULT_GROUP&namespaceId=public"

# 获取配置(V1)
curl -X GET "http://1.1.1.201:8848/nacos/v1/cs/configs?dataId=nacos.example&group=DEFAULT_GROUP&namespaceId=public"

# 获取配置(V2)
curl -X GET 'http://1.1.1.201:8848/nacos/v2/cs/config?dataId=nacos.example&group=DEFAULT_GROUP&namespaceId=public'

image

相关信息

  • OS: Kylin V10
  • Version nacos-server 2.2.0

Describe the bug

Configuration Center openAPI v2 cannot be created or deleted

步骤

# Publish configuration(V2)
curl -d 'dataId=nacos.example' \
    -d 'group=DEFAULT_GROUP' \
    -d 'namespaceId=public' \
    -d 'content=contentTest' \
    -X POST 'http://1.1.1.201:8848/nacos/v2/cs/config'

# Get configuration(V2)
curl -X GET 'http://1.1.1.201:8848/nacos/v2/cs/config?dataId=nacos.example&group=DEFAULT_GROUP&namespaceId=public'

# Get configuration(V1)
curl -X GET "http://1.1.1.201:8848/nacos/v1/cs/configs?dataId=nacos.example&group=DEFAULT_GROUP&namespaceId=public"

# Publish configuration(V1)
curl -X POST "http://1.1.1.201:8848/nacos/v1/cs/configs?dataId=nacos.example&group=DEFAULT_GROUP&namespaceId=public&content=contentTest"

# Get configuration(V1)
curl -X GET "http://1.1.1.201:8848/nacos/v1/cs/configs?dataId=nacos.example&group=DEFAULT_GROUP&namespaceId=public"

# Get configuration(V2)
curl -X GET 'http://1.1.1.201:8848/nacos/v2/cs/config?dataId=nacos.example&group=DEFAULT_GROUP&namespaceId=public'

# Delete a configuration(V2)
curl -X DELETE 'http://1.1.1.201:8848/nacos/v2/cs/config?dataId=nacos.example&group=DEFAULT_GROUP&namespaceId=public'

# Get configuration(V1)
curl -X GET "http://1.1.1.201:8848/nacos/v1/cs/configs?dataId=nacos.example&group=DEFAULT_GROUP&namespaceId=public"

# Get configuration(V2)
curl -X GET 'http://1.1.1.201:8848/nacos/v2/cs/config?dataId=nacos.example&group=DEFAULT_GROUP&namespaceId=public'

# Delete a configuration(V1)
curl -X DELETE "http://1.1.1.201:8848/nacos/v1/cs/configs?dataId=nacos.example&group=DEFAULT_GROUP&namespaceId=public"

# Get configuration(V1)
curl -X GET "http://1.1.1.201:8848/nacos/v1/cs/configs?dataId=nacos.example&group=DEFAULT_GROUP&namespaceId=public"

# Get configuration(V2)
curl -X GET 'http://1.1.1.201:8848/nacos/v2/cs/config?dataId=nacos.example&group=DEFAULT_GROUP&namespaceId=public'

image

Related information

  • OS: Kylin V10
  • Version nacos-server 2.2.0
@Vain-vayne
Copy link
Author

start

/app/midware/nacos/bin/startup.sh -m standalone

application.properties

#
# Copyright 1999-2021 Alibaba Group Holding Ltd.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

#*************** Spring Boot Related Configurations ***************#
### Default web context path:
server.servlet.contextPath=/nacos
### Include message field
server.error.include-message=ALWAYS
### Default web server port:
server.port=8848

#*************** Network Related Configurations ***************#
### If prefer hostname over ip for Nacos server addresses in cluster.conf:
nacos.inetutils.prefer-hostname-over-ip=false

### Specify local server's IP:
nacos.inetutils.ip-address=1.1.1.201


#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
# spring.datasource.platform=mysql

### Count of DB:
# db.num=1

### Connect URL of DB:
# db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
# db.user.0=nacos
# db.password.0=nacos

### Connection pool configuration: hikariCP
db.pool.config.connectionTimeout=30000
db.pool.config.validationTimeout=10000
db.pool.config.maximumPoolSize=20
db.pool.config.minimumIdle=2

#*************** Naming Module Related Configurations ***************#

### If enable data warmup. If set to false, the server would accept request without local data preparation:
# nacos.naming.data.warmup=true

### If enable the instance auto expiration, kind like of health check of instance:
# nacos.naming.expireInstance=true

### Add in 2.0.0
### The interval to clean empty service, unit: milliseconds.
# nacos.naming.clean.empty-service.interval=60000

### The expired time to clean empty service, unit: milliseconds.
# nacos.naming.clean.empty-service.expired-time=60000

### The interval to clean expired metadata, unit: milliseconds.
# nacos.naming.clean.expired-metadata.interval=5000

### The expired time to clean metadata, unit: milliseconds.
# nacos.naming.clean.expired-metadata.expired-time=60000

### The delay time before push task to execute from service changed, unit: milliseconds.
# nacos.naming.push.pushTaskDelay=500

### The timeout for push task execute, unit: milliseconds.
# nacos.naming.push.pushTaskTimeout=5000

### The delay time for retrying failed push task, unit: milliseconds.
# nacos.naming.push.pushTaskRetryDelay=1000

### Since 2.0.3
### The expired time for inactive client, unit: milliseconds.
# nacos.naming.client.expired.time=180000

#*************** CMDB Module Related Configurations ***************#
### The interval to dump external CMDB in seconds:
# nacos.cmdb.dumpTaskInterval=3600

### The interval of polling data change event in seconds:
# nacos.cmdb.eventTaskInterval=10

### The interval of loading labels in seconds:
# nacos.cmdb.labelTaskInterval=300

### If turn on data loading task:
# nacos.cmdb.loadDataAtStart=false


#*************** Metrics Related Configurations ***************#
### Metrics for prometheus
management.endpoints.web.exposure.include=*

### Metrics for elastic search
management.metrics.export.elastic.enabled=false
#management.metrics.export.elastic.host=http://localhost:9200

### Metrics for influx
management.metrics.export.influx.enabled=false
#management.metrics.export.influx.db=springboot
#management.metrics.export.influx.uri=http://localhost:8086
#management.metrics.export.influx.auto-create-db=true
#management.metrics.export.influx.consistency=one
#management.metrics.export.influx.compressed=true

#*************** Access Log Related Configurations ***************#
### If turn on the access log:
server.tomcat.accesslog.enabled=true

### The access log pattern:
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i

### The directory of access log:
server.tomcat.basedir=/app/logs/tomcat

#*************** Access Control Related Configurations ***************#
### If enable spring security, this option is deprecated in 1.2.0:
#spring.security.enabled=false

### The ignore urls of auth
nacos.security.ignore.urls=/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-ui/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**

### The auth system to use, currently only 'nacos' and 'ldap' is supported:
nacos.core.auth.system.type=nacos

### If turn on auth system:
nacos.core.auth.enabled=false

### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.
nacos.core.auth.caching.enabled=true

### Since 1.4.1, Turn on/off white auth for user-agent: nacos-server, only for upgrade from old version.
nacos.core.auth.enable.userAgentAuthWhite=false

### Since 1.4.1, worked when nacos.core.auth.enabled=true and nacos.core.auth.enable.userAgentAuthWhite=false.
### The two properties is the white list for auth and used by identity the request from other server.
nacos.core.auth.server.identity.key=serverIdentity
nacos.core.auth.server.identity.value=security

### worked when nacos.core.auth.system.type=nacos
### The token expiration in seconds:
nacos.core.auth.plugin.nacos.token.expire.seconds=18000
### The default token (Base64 String):
nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789

### worked when nacos.core.auth.system.type=ldap,{0} is Placeholder,replace login username
#nacos.core.auth.ldap.url=ldap://localhost:389
#nacos.core.auth.ldap.basedc=dc=example,dc=org
#nacos.core.auth.ldap.userDn=cn=admin,${nacos.core.auth.ldap.basedc}
#nacos.core.auth.ldap.password=admin
#nacos.core.auth.ldap.userdn=cn={0},dc=example,dc=org
#nacos.core.auth.ldap.filter.prefix=uid
#nacos.core.auth.ldap.case.sensitive=true


#*************** Istio Related Configurations ***************#
### If turn on the MCP server:
nacos.istio.mcp.server.enabled=false

#*************** Core Related Configurations ***************#

### set the WorkerID manually
# nacos.core.snowflake.worker-id=

### Member-MetaData
# nacos.core.member.meta.site=
# nacos.core.member.meta.adweight=
# nacos.core.member.meta.weight=

### MemberLookup
### Addressing pattern category, If set, the priority is highest
# nacos.core.member.lookup.type=[file,address-server]
## Set the cluster list with a configuration file or command-line argument
# nacos.member.list=192.168.16.101:8847?raft_port=8807,192.168.16.101?raft_port=8808,192.168.16.101:8849?raft_port=8809
## for AddressServerMemberLookup
# Maximum number of retries to query the address server upon initialization
# nacos.core.address-server.retry=5
## Server domain name address of [address-server] mode
# address.server.domain=jmenv.tbsite.net
## Server port of [address-server] mode
# address.server.port=8080
## Request address of [address-server] mode
# address.server.url=/nacos/serverlist

#*************** JRaft Related Configurations ***************#

### Sets the Raft cluster election timeout, default value is 5 second
# nacos.core.protocol.raft.data.election_timeout_ms=5000
### Sets the amount of time the Raft snapshot will execute periodically, default is 30 minute
# nacos.core.protocol.raft.data.snapshot_interval_secs=30
### raft internal worker threads
# nacos.core.protocol.raft.data.core_thread_num=8
### Number of threads required for raft business request processing
# nacos.core.protocol.raft.data.cli_service_thread_num=4
### raft linear read strategy. Safe linear reads are used by default, that is, the Leader tenure is confirmed by heartbeat
# nacos.core.protocol.raft.data.read_index_type=ReadOnlySafe
### rpc request timeout, default 5 seconds
# nacos.core.protocol.raft.data.rpc_request_timeout_ms=5000

#*************** Distro Related Configurations ***************#

### Distro data sync delay time, when sync task delayed, task will be merged for same data key. Default 1 second.
# nacos.core.protocol.distro.data.sync.delayMs=1000

### Distro data sync timeout for one sync data, default 3 seconds.
# nacos.core.protocol.distro.data.sync.timeoutMs=3000

### Distro data sync retry delay time when sync data failed or timeout, same behavior with delayMs, default 3 seconds.
# nacos.core.protocol.distro.data.sync.retryDelayMs=3000

### Distro data verify interval time, verify synced data whether expired for a interval. Default 5 seconds.
# nacos.core.protocol.distro.data.verify.intervalMs=5000

### Distro data verify timeout for one verify, default 3 seconds.
# nacos.core.protocol.distro.data.verify.timeoutMs=3000

### Distro data load retry delay when load snapshot data failed, default 30 seconds.
# nacos.core.protocol.distro.data.load.retryDelayMs=30000

### enable to support prometheus service discovery
nacos.prometheus.metrics.enabled=true

@KomachiSion
Copy link
Collaborator

image

I test It can work well.

@Vain-vayne
Copy link
Author

image

@Vain-vayne
Copy link
Author

image

@KomachiSion
Copy link
Collaborator

public is showname, the id is ''.

If you want to use id as public, you should create a namespace with id public.

@Vain-vayne
Copy link
Author

Ok, thank you

@Vain-vayne
Copy link
Author

Why is {"code":0,"message":"success","data":true} returned when creation failed?

@Vain-vayne Vain-vayne reopened this Jan 4, 2023
@Vain-vayne
Copy link
Author

image

@KomachiSion
Copy link
Collaborator

I see, the v2 api handle the namespaceId public when read config, maybe there are different with v1 and v2 publish config api.

@karsonto
Copy link
Contributor

karsonto commented Jan 5, 2023

@i will solve it@

@karsonto
Copy link
Contributor

karsonto commented Jan 6, 2023

@Vain-vayne v1的接口使用不正确,需要传入tenant 代替 namespaceId 例子如下:

发布配置(V1)
curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.example&group=DEFAULT_GROUP&tenant=public&content=contentTest"
获取配置(V1)
curl -X GET 'http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.example&group=DEFAULT_GROUP&tenant=public'

@Vain-vayne
Copy link
Author

好的, 谢谢

@karsonto
Copy link
Contributor

karsonto commented Jan 6, 2023

@Vain-vayne 麻烦请帮忙再测试一下,有问题请再反馈,谢谢。

karsonto added a commit to karsonto/nacos that referenced this issue Jan 6, 2023
karsonto added a commit to karsonto/nacos that referenced this issue Jan 6, 2023
@Vain-vayne
Copy link
Author

image

@karsonto
Copy link
Contributor

karsonto commented Jan 9, 2023

@KomachiSion 我这边提交了PR 解决V2接口上述问题,V1接口是否需要同步修改?

@KomachiSion
Copy link
Collaborator

V1 保持原状

KomachiSion pushed a commit that referenced this issue Jan 16, 2023
* fix issue #9783

* fix issue #9783

* add it test for v2 config.

* fix ci problem.

* fix ci problem.

* fix ci problem.

* fix history process NamespaceParameter

* fix ci problem.

* add some unit test

* reformat code
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