Skip to content

Commit

Permalink
[ISSUE #2172] Fix/polaris governance (#2171)
Browse files Browse the repository at this point in the history
* 解决 consumer 不断重连已下线的 provider meta service 问题 (#2166)

* registry type support all

* fix test

* set default to interface

* use default protocol registry

* fix unit test

* use swith to judge

* add registry support all test

* Resolve registry name conflicts

* fix ut err

* fix #2159

* del front

* del front

Co-authored-by: bobtthp <bobtthp@bob-Mac-mini.local>
Co-authored-by: bob <bob@bobdeMacBook-Pro.local>
Co-authored-by: bobtthp <bobtthp@bob1.local>
Co-authored-by: bob <bob@bob.local>

* build(deps): bump github.com/hashicorp/vault/sdk from 0.6.0 to 0.6.2 (#2169)

Bumps [github.com/hashicorp/vault/sdk](https://github.com/hashicorp/vault) from 0.6.0 to 0.6.2.
- [Release notes](https://github.com/hashicorp/vault/releases)
- [Changelog](https://github.com/hashicorp/vault/blob/main/CHANGELOG.md)
- [Commits](hashicorp/vault@v0.6.0...v0.6.2)

---
updated-dependencies:
- dependency-name: github.com/hashicorp/vault/sdk
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* refactor:polaris ability open judge

* refactor:polaris ability open judge

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: bobtthp <gzqtianc@gmail.com>
Co-authored-by: bobtthp <bobtthp@bob-Mac-mini.local>
Co-authored-by: bob <bob@bobdeMacBook-Pro.local>
Co-authored-by: bobtthp <bobtthp@bob1.local>
Co-authored-by: bob <bob@bob.local>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
  • Loading branch information
7 people authored and justxuewei committed Feb 1, 2023
1 parent fbcc0b3 commit 8279453
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 13 deletions.
19 changes: 18 additions & 1 deletion cluster/router/polaris/router.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,12 @@ var (
)

func newPolarisRouter() (*polarisRouter, error) {
if err := remotingpolaris.Check(); errors.Is(err, remotingpolaris.ErrorNoOpenPolarisAbility) {
return &polarisRouter{
openRoute: false,
}, nil
}

routerAPI, err := remotingpolaris.GetRouterAPI()
if err != nil {
return nil, err
Expand All @@ -63,12 +69,15 @@ func newPolarisRouter() (*polarisRouter, error) {
}

return &polarisRouter{
openRoute: true,
routerAPI: routerAPI,
consumerAPI: consumerAPI,
}, nil
}

type polarisRouter struct {
openRoute bool

routerAPI polaris.RouterAPI
consumerAPI polaris.ConsumerAPI

Expand All @@ -82,8 +91,13 @@ type polarisRouter struct {
func (p *polarisRouter) Route(invokers []protocol.Invoker, url *common.URL,
invoaction protocol.Invocation) []protocol.Invoker {

if !p.openRoute {
logger.Debug("[Router][Polaris] not open polaris route ability")
return invokers
}

if len(invokers) == 0 {
logger.Warnf("[tag router] invokers from previous router is empty")
logger.Warn("[Router][Polaris] invokers from previous router is empty")
return invokers
}

Expand Down Expand Up @@ -280,6 +294,9 @@ func (p *polarisRouter) Priority() int64 {

// Notify the router the invoker list
func (p *polarisRouter) Notify(invokers []protocol.Invoker) {
if !p.openRoute {
return
}
if len(invokers) == 0 {
return
}
Expand Down
6 changes: 6 additions & 0 deletions filter/polaris/limit/limiter.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
package limit

import (
"errors"
"fmt"
"time"
)
Expand Down Expand Up @@ -45,6 +46,11 @@ type polarisTpsLimiter struct {
}

func (pl *polarisTpsLimiter) IsAllowable(url *common.URL, invocation protocol.Invocation) bool {
if err := remotingpolaris.Check(); errors.Is(err, remotingpolaris.ErrorNoOpenPolarisAbility) {
logger.Debug("[TpsLimiter][Polaris] not open polaris ratelimit ability")
return true
}

var err error

pl.limitAPI, err = remotingpolaris.GetLimiterAPI()
Expand Down
38 changes: 26 additions & 12 deletions remoting/polaris/builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,51 +40,63 @@ import (
)

var (
once sync.Once
namesapce string
sdkCtx api.SDKContext
once sync.Once
namesapce string
sdkCtx api.SDKContext
openPolarisAbility bool
)

var (
ErrorSDKContextNotInit = errors.New("polaris SDKContext not init")
ErrorNoOpenPolarisAbility = errors.New("polaris ability not open")
ErrorSDKContextNotInit = errors.New("polaris SDKContext not init")
)

// GetConsumerAPI creates one polaris ConsumerAPI instance
func GetConsumerAPI() (polaris.ConsumerAPI, error) {
if sdkCtx == nil {
return nil, ErrorSDKContextNotInit
if err := Check(); err != nil {
return nil, err
}

return polaris.NewConsumerAPIByContext(sdkCtx), nil
}

// GetProviderAPI creates one polaris ProviderAPI instance
func GetProviderAPI() (polaris.ProviderAPI, error) {
if sdkCtx == nil {
return nil, ErrorSDKContextNotInit
if err := Check(); err != nil {
return nil, err
}

return polaris.NewProviderAPIByContext(sdkCtx), nil
}

// GetRouterAPI create one polaris RouterAPI instance
func GetRouterAPI() (polaris.RouterAPI, error) {
if sdkCtx == nil {
return nil, ErrorSDKContextNotInit
if err := Check(); err != nil {
return nil, err
}

return polaris.NewRouterAPIByContext(sdkCtx), nil
}

// GetLimiterAPI creates one polaris LimiterAPI instance
func GetLimiterAPI() (polaris.LimitAPI, error) {
if sdkCtx == nil {
return nil, ErrorSDKContextNotInit
if err := Check(); err != nil {
return nil, err
}

return polaris.NewLimitAPIByContext(sdkCtx), nil
}

func Check() error {
if !openPolarisAbility {
return ErrorNoOpenPolarisAbility
}
if sdkCtx == nil {
return ErrorSDKContextNotInit
}
return nil
}

// GetNamespace gets user defined namespace info
func GetNamespace() string {
return namesapce
Expand All @@ -96,6 +108,8 @@ func InitSDKContext(url *common.URL) error {
return errors.New("url is empty!")
}

openPolarisAbility = true

var rerr error
once.Do(func() {
addresses := strings.Split(url.Location, ",")
Expand Down

0 comments on commit 8279453

Please sign in to comment.