This is an automated email from the ASF dual-hosted git repository.
littlecui pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/servicecomb-service-center.git
The following commit(s) were added to refs/heads/dev by this push:
new 59149cd2 [fix] fix some environment problems (#1475)
59149cd2 is described below
commit 59149cd25ca59b169a4d5e13a3358671dbe8a718
Author: tornado-ssy <[email protected]>
AuthorDate: Thu Jun 6 17:33:26 2024 +0800
[fix] fix some environment problems (#1475)
Co-authored-by: songshiyuan 00649746 <[email protected]>
---
datasource/etcd/ms.go | 7 ++-----
datasource/etcd/util/environment_util.go | 7 +++++++
server/service/disco/environment.go | 2 --
server/service/disco/metadata.go | 6 ++++--
server/service/registry/registry.go | 2 +-
server/service/validator/microservice_validator.go | 2 +-
6 files changed, 15 insertions(+), 11 deletions(-)
diff --git a/datasource/etcd/ms.go b/datasource/etcd/ms.go
index bb0cb71f..be9429a1 100644
--- a/datasource/etcd/ms.go
+++ b/datasource/etcd/ms.go
@@ -48,7 +48,6 @@ import (
"github.com/apache/servicecomb-service-center/pkg/util"
"github.com/apache/servicecomb-service-center/server/core"
"github.com/apache/servicecomb-service-center/server/plugin/uuid"
- "github.com/apache/servicecomb-service-center/server/service/disco"
quotasvc
"github.com/apache/servicecomb-service-center/server/service/quota"
"github.com/apache/servicecomb-service-center/syncer/service/event"
)
@@ -1724,10 +1723,11 @@ func (ds *MetadataManager) RegisterEnvironment(ctx
context.Context, request *ev.
envIndex := path.GenerateEnvironmentIndexKey(envKey)
// 产生全局environment id
requestEnvID := env.ID
- if len(requestEnvID) == 0 {
+ if len(requestEnvID) == 0 && len(env.Name) != 0 {
ctx = util.SetContext(ctx, uuid.ContextKey, envIndex)
env.ID = uuid.Generator().GetEnvID(ctx)
}
+ envIndex = util.StringJoin([]string{envIndex, env.ID}, "/")
data, err := json.Marshal(env)
if err != nil {
log.Error(fmt.Sprintf("create Environment[%s] failed, json
marshal environment failed, operator: %s",
@@ -1765,7 +1765,6 @@ func (ds *MetadataManager) RegisterEnvironment(ctx
context.Context, request *ev.
if resp.Succeeded {
log.Info(fmt.Sprintf("create environment[%s][%s] successfully,
operator: %s",
env.ID, envFlag, remoteIP))
- disco.EnvMap.Store(request.Environment.ID, struct{}{})
return &ev.CreateEnvironmentResponse{
EnvId: env.ID,
}, nil
@@ -1790,7 +1789,6 @@ func (ds *MetadataManager) RegisterEnvironment(ctx
context.Context, request *ev.
existEnvironmentID := util.BytesToStringWithNoCopy(resp.Kvs[0].Value)
log.Warn(fmt.Sprintf("create environment[%s][%s] failed, environment
already exists, operator: %s",
existEnvironmentID, envFlag, remoteIP))
- disco.EnvMap.Store(request.Environment.ID, struct{}{})
return &ev.CreateEnvironmentResponse{
EnvId: existEnvironmentID,
}, nil
@@ -1916,6 +1914,5 @@ func (ds *MetadataManager) UnregisterEnvironment(ctx
context.Context, request *e
quotasvc.RemandEnvironment(ctx)
log.Info(fmt.Sprintf("del environment[%s] successfully, operator: %s",
environmentId, remoteIP))
- disco.EnvMap.Delete(environment.ID)
return nil
}
diff --git a/datasource/etcd/util/environment_util.go
b/datasource/etcd/util/environment_util.go
index be730967..a5958b94 100644
--- a/datasource/etcd/util/environment_util.go
+++ b/datasource/etcd/util/environment_util.go
@@ -42,6 +42,13 @@ func getEnvironmentsRawData(ctx context.Context,
domainProject string) ([]*kvsto
if err != nil {
return nil, err
}
+ opts1 := append(FromContext(ctx),
+ etcdadpt.WithStrKey(key))
+ resp1, err := sd.Environment().Search(ctx, opts1...)
+ if err != nil {
+ return nil, err
+ }
+ resp.Kvs = append(resp.Kvs, resp1.Kvs[0])
return resp.Kvs, err
}
diff --git a/server/service/disco/environment.go
b/server/service/disco/environment.go
index e74b3a91..be900c4b 100644
--- a/server/service/disco/environment.go
+++ b/server/service/disco/environment.go
@@ -4,7 +4,6 @@ import (
"context"
"fmt"
"strconv"
- sync1 "sync"
"time"
pb "github.com/go-chassis/cari/discovery"
@@ -18,7 +17,6 @@ import (
)
var PreEnv util.CtxKey = "_pre_env"
-var EnvMap sync1.Map
func ListEnvironments(ctx context.Context) (*ev.GetEnvironmentsResponse,
error) {
return datasource.GetMetadataManager().ListEnvironments(ctx)
diff --git a/server/service/disco/metadata.go b/server/service/disco/metadata.go
index 26f43243..06847f2c 100644
--- a/server/service/disco/metadata.go
+++ b/server/service/disco/metadata.go
@@ -28,6 +28,7 @@ import (
"github.com/go-chassis/foundation/gopool"
"github.com/apache/servicecomb-service-center/datasource"
+ eutil
"github.com/apache/servicecomb-service-center/datasource/etcd/util"
"github.com/apache/servicecomb-service-center/pkg/log"
"github.com/apache/servicecomb-service-center/pkg/util"
"github.com/apache/servicecomb-service-center/server/core"
@@ -62,8 +63,9 @@ func registerService(ctx context.Context, request
*pb.CreateServiceRequest) (*pb
serviceFlag := util.StringJoin([]string{
service.Environment, service.AppId, service.ServiceName,
service.Version}, "/")
if !core.IsSCInstance(ctx) {
- _, ok := EnvMap.Load(service.Environment)
- if !ok {
+ domainProject := util.ParseDomainProject(ctx)
+ _, err := eutil.GetEnvironment(ctx, domainProject,
service.Environment)
+ if err != nil {
log.Error(fmt.Sprintf("create micro-service[%s] failed,
operator: %s", serviceFlag, remoteIP), errors.New("env not exist"))
return nil, pb.NewError(pb.ErrInvalidParams, "env not
exist")
}
diff --git a/server/service/registry/registry.go
b/server/service/registry/registry.go
index e12c0a3c..612103d0 100644
--- a/server/service/registry/registry.go
+++ b/server/service/registry/registry.go
@@ -171,7 +171,7 @@ func SelfEnvRegister(ctx context.Context) error {
func selfEnvRegister(pCtx context.Context) error {
ctx := addDefaultEnvContextValue(pCtx)
var req = new(env.CreateEnvironmentRequest)
- preEnv := env.Environment{Name: ""}
+ preEnv := env.Environment{Name: "", ID: "", Description: "this is
prepared env,whose id and name are empty"}
req.Environment = &preEnv
_, err := discosvc.RegistryEnvironment(ctx, req)
if err != nil {
diff --git a/server/service/validator/microservice_validator.go
b/server/service/validator/microservice_validator.go
index d3d9a94e..7dc6ce25 100644
--- a/server/service/validator/microservice_validator.go
+++ b/server/service/validator/microservice_validator.go
@@ -58,7 +58,7 @@ var (
func MicroServiceKeyValidator() *validate.Validator {
return microServiceKeyValidator.Init(func(v *validate.Validator) {
- v.AddRule("Environment", &validate.Rule{Min: 1, Max: 128,
Regexp: envRegex})
+ v.AddRule("Environment", &validate.Rule{Min: 0, Max: 128,
Regexp: envRegex})
v.AddRule("AppId", &validate.Rule{Min: 1, Max: 160, Regexp:
nameRegex})
v.AddRule("ServiceName", &validate.Rule{Max: 128, Regexp:
nameRegex})
v.AddRule("Version", &validate.Rule{Min: 1, Max: 64, Regexp:
versionRegex})