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

[ISSUE#12217] Improve the gray configuration #12501

Open
wants to merge 4 commits into
base: summer-glcc#12217
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -290,6 +290,17 @@ public class Constants {

public static final String CONFIG_SEARCH_ACCURATE = "accurate";

/**
* Gray rule.
*/
public static final String GRAY_RULE_TYPE = "type";

public static final String GRAY_RULE_EXPR = "expr";

public static final String GRAY_RULE_VERSION = "version";

public static final String GRAY_RULE_PRIORITY = "priority";

/**
* default nacos encode.
*/
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
/*
* Copyright 1999-$toady.year 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.
*/

package com.alibaba.nacos.config.server.model;

/**
* ConfigAllInfo4Gray.
*
* @author Nacos
*/
public class ConfigAllInfo4Gray extends ConfigInfo {

private static final long serialVersionUID = -7926709237557990936L;

private String srcUser;

private String srcIp;

private long gmtCreate;

private long gmtModified;

private String grayName;

private String grayRule;

public String getSrcUser() {
return srcUser;
}

public void setSrcUser(String srcUser) {
this.srcUser = srcUser;
}

public String getSrcIp() {
return srcIp;
}

public void setSrcIp(String srcIp) {
this.srcIp = srcIp;
}

public long getGmtCreate() {
return gmtCreate;
}

public void setGmtCreate(long gmtCreate) {
this.gmtCreate = gmtCreate;
}

public long getGmtModified() {
return gmtModified;
}

public void setGmtModified(long gmtModified) {
this.gmtModified = gmtModified;
}

public String getGrayName() {
return grayName;
}

public void setGrayName(String grayName) {
this.grayName = grayName;
}

public String getGrayRule() {
return grayRule;
}

public void setGrayRule(String grayRule) {
this.grayRule = grayRule;
}

@Override
public int hashCode() {
return super.hashCode();
}

@Override
public boolean equals(Object obj) {
return super.equals(obj);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,10 @@ public class ConfigHistoryInfo implements Serializable {
*/
private String opType;

private String publishType;

private String extraInfo;

private Timestamp createdTime;

private Timestamp lastModifiedTime;
Expand Down Expand Up @@ -136,6 +140,22 @@ public void setOpType(String opType) {
this.opType = opType;
}

public String getPublishType() {
return publishType;
}

public void setPublishType(String publishType) {
this.publishType = publishType;
}

public String getExtraInfo() {
return extraInfo;
}

public void setExtraInfo(String extraInfo) {
this.extraInfo = extraInfo;
}

public Timestamp getCreatedTime() {
return new Timestamp(createdTime.getTime());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
* @date 2024-03-14 10:57
*/
public class ConfigGrayPersistInfo {

private String type;

private String version;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ public Boolean publishConfig(ConfigForm configForm, ConfigRequestInfo configRequ
configInfo.setEncryptedDataKey(encryptedDataKey);
ConfigOperateResult configOperateResult;

//beta public
//beta publish
if (StringUtils.isNotBlank(configRequestInfo.getBetaIps())) {
configForm.setGrayName(BetaGrayRule.TYPE_BETA);
configForm.setGrayRuleExp(configRequestInfo.getBetaIps());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

package com.alibaba.nacos.config.server.service.repository;

import com.alibaba.nacos.config.server.model.ConfigAllInfo4Gray;
import com.alibaba.nacos.config.server.model.ConfigInfo;
import com.alibaba.nacos.config.server.model.ConfigInfoGrayWrapper;
import com.alibaba.nacos.config.server.model.ConfigInfoStateWrapper;
Expand Down Expand Up @@ -48,9 +49,9 @@ public interface ConfigInfoGrayPersistService {
/**
* get gray config info state.
*
* @param dataId dataId.
* @param group group.
* @param tenant tenant.
* @param dataId dataId.
* @param group group.
* @param tenant tenant.
* @param grayName gray name.
* @return config info state.
*/
Expand All @@ -60,24 +61,38 @@ ConfigInfoStateWrapper findConfigInfo4GrayState(final String dataId, final Strin
/**
* Add gray configuration information and publish data change events.
*
* @param configInfo config info
* @param grayName gray name
* @param grayRule gray rule
* @param srcIp remote ip
* @param srcUser user
* @param configInfo config info
* @param grayName gray name
* @param grayRule gray rule
* @param srcIp remote ip
* @param srcUser user
* @return config operation result.
*/
ConfigOperateResult addConfigInfo4Gray(ConfigInfo configInfo, String grayName, String grayRule,
String srcIp, String srcUser);

/**
* Adds configuration information with database atomic operations, minimizing SQL actions and avoiding business
* encapsulation.
*
* @param configGrayId the ID for the gray configuration
* @param configInfo the configuration information to be added
* @param grayName the name of the gray configuration
* @param grayRule the rule of the gray configuration
* @param srcIp the IP address of the source
* @param srcUser the user who performs the addition
*/
void addConfigInfoGrayAtomic(final long configGrayId, final ConfigInfo configInfo, final String grayName, final String grayRule,
final String srcIp, final String srcUser);

/**
* insert or update gray config.
*
* @param configInfo config info
* @param grayName gray name
* @param grayRule gray rule
* @param srcIp remote ip
* @param srcUser user
* @param configInfo config info
* @param grayName gray name
* @param grayRule gray rule
* @param srcIp remote ip
* @param srcUser user
* @return config operation result.
*/
ConfigOperateResult insertOrUpdateGray(final ConfigInfo configInfo, final String grayName, final String grayRule,
Expand All @@ -87,8 +102,8 @@ ConfigOperateResult insertOrUpdateGray(final ConfigInfo configInfo, final String
* insert or update gray config cas.
*
* @param configInfo config info.
* @param grayName gray name
* @param grayRule gray rule
* @param grayName gray name
* @param grayRule gray rule
* @param srcIp remote ip.
* @param srcUser user.
* @return config operation result.
Expand All @@ -100,12 +115,12 @@ ConfigOperateResult insertOrUpdateGrayCas(final ConfigInfo configInfo, final Str
/**
* Delete configuration; database atomic operation, minimum SQL action, no business encapsulation.
*
* @param dataId dataId
* @param group group
* @param tenant tenant
* @param dataId dataId
* @param group group
* @param tenant tenant
* @param grayName gray name
* @param srcIp remote ip
* @param srcUser user
* @param srcIp remote ip
* @param srcUser user
*/
void removeConfigInfoGray(final String dataId, final String group, final String tenant, final String grayName,
final String srcIp, final String srcUser);
Expand All @@ -115,8 +130,8 @@ void removeConfigInfoGray(final String dataId, final String group, final String
* Update gray configuration information.
*
* @param configInfo config info
* @param grayName gray name
* @param grayRule gray rule
* @param grayName gray name
* @param grayRule gray rule
* @param srcIp remote ip
* @param srcUser user
* @return config operation result.
Expand All @@ -128,8 +143,8 @@ ConfigOperateResult updateConfigInfo4Gray(ConfigInfo configInfo, String grayName
* Update gray configuration information.
*
* @param configInfo config info
* @param grayName gray name
* @param grayRule gray rule
* @param grayName gray name
* @param grayRule gray rule
* @param srcIp remote ip
* @param srcUser user
* @return success or not.
Expand All @@ -141,15 +156,27 @@ ConfigOperateResult updateConfigInfo4GrayCas(ConfigInfo configInfo, String grayN
/**
* Query gray configuration information based on dataId and group.
*
* @param dataId data id
* @param group group
* @param tenant tenant
* @param dataId data id
* @param group group
* @param tenant tenant
* @param grayName gray name
* @return {@link com.alibaba.nacos.config.server.model.ConfigInfo4Gray}
*/
ConfigInfoGrayWrapper findConfigInfo4Gray(final String dataId, final String group, final String tenant,
final String grayName);

/**
* Query all gray configuration information based on dataId and group.
*
* @param dataId dataId
* @param group group
* @param tenant tenant
* @param grayName gray name
* @return all gray config info
*/
ConfigAllInfo4Gray findConfigAllInfo4Gray(final String dataId, final String group, final String tenant,
final String grayName);

/**
* Returns the number of gray configuration items.
*
Expand All @@ -169,9 +196,9 @@ ConfigInfoGrayWrapper findConfigInfo4Gray(final String dataId, final String grou
/**
* Query all gray config info for dump task.
*
* @param startTime startTime
* @param startTime startTime
* @param lastMaxId lastMaxId
* @param pageSize pageSize
* @param pageSize pageSize
* @return {@link Page} with {@link ConfigInfoWrapper} generation
*/
List<ConfigInfoGrayWrapper> findChangeConfig(final Timestamp startTime, long lastMaxId, final int pageSize);
Expand Down
Loading