Skip to content

Commit

Permalink
fix some problems (#1470)
Browse files Browse the repository at this point in the history
* [fix] fix the problem that the config will be synced many times when updated in some condition(mulit-engine,one engine has a late task of undate one microservice)

* [fix] fix the problem that get the microservice of sc itself occur a error will cause the failure of healthCheck

---------

Co-authored-by: songshiyuan 00649746 <[email protected]>
  • Loading branch information
tornado-ssy and songshiyuan 00649746 committed May 25, 2024
1 parent 8be30c5 commit 4b61afc
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 11 deletions.
12 changes: 7 additions & 5 deletions server/service/registry/registry.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,16 @@ import (
"fmt"
"time"

pb "github.com/go-chassis/cari/discovery"
"github.com/go-chassis/cari/pkg/errsvc"
"github.com/go-chassis/foundation/gopool"

"github.com/apache/servicecomb-service-center/datasource"
"github.com/apache/servicecomb-service-center/pkg/log"
"github.com/apache/servicecomb-service-center/pkg/util"
"github.com/apache/servicecomb-service-center/server/core"
discosvc "github.com/apache/servicecomb-service-center/server/service/disco"
"github.com/apache/servicecomb-service-center/server/service/sync"
pb "github.com/go-chassis/cari/discovery"
"github.com/go-chassis/cari/pkg/errsvc"
"github.com/go-chassis/foundation/gopool"
)

func addDefaultContextValue(ctx context.Context) context.Context {
Expand Down Expand Up @@ -75,11 +76,12 @@ func registerService(ctx context.Context) error {
}

log.Warn(fmt.Sprintf("service center service[%s] already registered", serviceID))
core.Service, err = discosvc.GetService(ctx, core.GetServiceRequest(serviceID))
service, err := discosvc.GetService(ctx, core.GetServiceRequest(serviceID))
if err != nil {
log.Error(fmt.Sprintf("query service center service[%s] info failed", serviceID), err)
return err
}
core.Service = service
return nil
}

Expand Down Expand Up @@ -131,7 +133,7 @@ func autoSelfHeartBeat() {
if err == nil {
continue
}
//服务不存在,创建服务
// 服务不存在,创建服务
err = selfRegister(ctx)
if err != nil {
log.Error(fmt.Sprintf("retry to register[%s/%s/%s/%s] failed",
Expand Down
18 changes: 13 additions & 5 deletions syncer/service/replicator/resource/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,11 @@ import (
"context"
"errors"
"fmt"
"sync"

kiemodel "github.com/apache/servicecomb-kie/pkg/model"
kiedb "github.com/apache/servicecomb-kie/server/datasource"

"github.com/apache/servicecomb-service-center/pkg/log"
"github.com/apache/servicecomb-service-center/pkg/util"
"github.com/apache/servicecomb-service-center/server/config"
Expand All @@ -32,19 +34,25 @@ import (

const Config = "config"

var configOnce sync.Once

func NewConfig(e *v1sync.Event) Resource {
kind := config.GetString("registry.kind", "etcd", config.WithStandby("registry_plugin"))
err := kiedb.Init(kind)
if err != nil {
log.Fatal(fmt.Sprintf("kie datasource[%s] init failed", kind), err)
}
configOnce.Do(initKieResouece)
c := &kvConfig{
event: e,
}
c.resource = c
return c
}

func initKieResouece() {
kind := config.GetString("registry.kind", "etcd", config.WithStandby("registry_plugin"))
err := kiedb.Init(kind)
if err != nil {
log.Fatal(fmt.Sprintf("kie datasource[%s] init failed", kind), err)
}
}

type kvConfig struct {
defaultFailHandler

Expand Down
6 changes: 6 additions & 0 deletions syncer/service/replicator/resource/resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,12 @@ import (
"errors"
"fmt"
"strconv"
"time"

"github.com/apache/servicecomb-service-center/eventbase/datasource"
"github.com/apache/servicecomb-service-center/eventbase/model"
"github.com/apache/servicecomb-service-center/eventbase/service/tombstone"

"github.com/apache/servicecomb-service-center/pkg/log"
v1sync "github.com/apache/servicecomb-service-center/syncer/api/v1"

Expand All @@ -49,6 +51,7 @@ const (
ResultStatusMicroNonExist = "microNonExist"
ResultStatusInstNonExist = "instNonExist"
ResultStatusNonImplement = "nonImplement"
oneDaySecond = 86400
)

var codeDescriber = map[int32]string{
Expand Down Expand Up @@ -344,6 +347,9 @@ func (o *checker) needOperate(ctx context.Context) *Result {
if len(o.resourceID) == 0 {
return nil
}
if o.event.Timestamp+oneDaySecond >= time.Now().Unix() {
return SkipResult()
}

ts, err := o.tombstoneLoader.get(ctx, &model.GetTombstoneRequest{
ResourceType: o.event.Subject,
Expand Down
6 changes: 5 additions & 1 deletion syncer/service/task/manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import (
"time"

"github.com/apache/servicecomb-service-center/eventbase/service/task"

"github.com/apache/servicecomb-service-center/pkg/log"
"github.com/apache/servicecomb-service-center/pkg/util"
v1sync "github.com/apache/servicecomb-service-center/syncer/api/v1"
Expand Down Expand Up @@ -254,7 +255,10 @@ func (m *manager) handleResult(res *event.Result) {
if res.Error != nil || res.Data.Code == resource.Fail {
log.Error(fmt.Sprintf("get task %s result, return error", res.ID), res.Error)
m.cache.Range(func(key, value interface{}) bool {
m.cache.Delete(key)
if key == res.ID {
m.cache.Delete(key)
return false
}
return true
})
return
Expand Down

0 comments on commit 4b61afc

Please sign in to comment.