You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2018/08/16 11:47:41 UTC
[incubator-servicecomb-service-center] branch master updated:
SCB-848 Uses zap to replace the paas-lager (#416)
This is an automated email from the ASF dual-hosted git repository.
littlecui pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-service-center.git
The following commit(s) were added to refs/heads/master by this push:
new c3a1e76 SCB-848 Uses zap to replace the paas-lager (#416)
c3a1e76 is described below
commit c3a1e76fa21f2d2f8dabaa783fad7a7543de9282
Author: little-cui <su...@qq.com>
AuthorDate: Thu Aug 16 19:47:39 2018 +0800
SCB-848 Uses zap to replace the paas-lager (#416)
* SCB-848 Uses zap to replace the paas-lager
* SCB-848 Update etcd logger
* SCB-848 Update zap lib LICENSEs
* SCB-848 Resolve the conflicts
---
.gitignore | 1 +
glide.yaml | 12 +
pkg/chain/callback.go | 9 +-
pkg/chain/chain.go | 4 +-
pkg/chain/handler.go | 3 +-
pkg/etcdsync/mutex.go | 18 +-
pkg/{util => gopool}/goroutines.go | 52 ++---
pkg/{util => gopool}/goroutines_test.go | 12 +-
pkg/grace/grace.go | 10 +-
pkg/log/lager.go | 116 ++++++++++
pkg/log/log.go | 105 +++++++++
pkg/log/log_go19.go | 46 ++++
pkg/log/log_go19_test.go | 99 +++++++++
pkg/log/log_test.go | 103 +++++++++
pkg/log/logger.go | 110 +++++++++
pkg/{util => log}/logrotate.go | 43 ++--
pkg/{util => log}/logrotate_test.go | 2 +-
pkg/log/zap.go | 223 +++++++++++++++++++
pkg/plugin/loader.go | 10 +-
pkg/{util => queue}/uniqueue.go | 5 +-
pkg/{util => queue}/uniqueue_test.go | 2 +-
pkg/rest/client.go | 21 +-
pkg/rest/roa.go | 15 +-
pkg/rest/route.go | 7 +-
pkg/rest/server.go | 16 +-
pkg/task/executor.go | 11 +-
pkg/task/service_async.go | 10 +-
pkg/tlsutil/tlsutil.go | 17 +-
pkg/util/log.go | 245 ---------------------
pkg/util/log_test.go | 84 -------
pkg/util/reflect.go | 6 +-
pkg/util/sys.go | 1 -
pkg/util/util.go | 30 ---
scripts/release/LICENSE | 28 +++
.../release/licenses/LICENSE-natefinch-lumberjack | 21 ++
scripts/release/licenses/LICENSE-uber-go-atomic | 19 ++
scripts/release/licenses/LICENSE-uber-go-multierr | 19 ++
scripts/release/licenses/LICENSE-uber-go-zap | 19 ++
server/admin/service.go | 3 +-
server/api.go | 45 ++--
server/bootstrap/bootstrap.go | 4 +-
server/broker/service.go | 3 +-
server/broker/util.go | 28 ++-
server/core/backend/backend.go | 5 +-
server/core/backend/cacher_kv.go | 30 +--
server/core/backend/cacher_kv_test.go | 6 +-
server/core/backend/defer_instance.go | 16 +-
server/core/backend/entity_kv.go | 4 +-
server/core/backend/indexer_kv.go | 7 +-
server/core/backend/lease.go | 5 +-
server/core/backend/listwatch_inner.go | 6 +-
server/core/backend/store.go | 16 +-
server/core/backend/watcher_inner.go | 9 +-
server/core/core.go | 31 +--
server/govern/controller_v4.go | 4 +-
server/govern/service.go | 28 +--
server/handler/auth/auth.go | 4 +-
server/handler/context/v3.go | 3 +-
server/handler/context/v4.go | 3 +-
server/handler/metric/metric.go | 4 +-
server/infra/quota/quota.go | 25 ++-
server/infra/registry/registry.go | 8 +-
server/interceptor/cors/cors.go | 4 +-
server/interceptor/interceptors.go | 5 +-
server/metric/gatherer.go | 7 +-
server/metric/reporter.go | 4 +-
server/plugin/infra/quota/buildin/buildin.go | 5 +-
server/plugin/infra/quota/buildin/common.go | 13 +-
server/plugin/infra/quota/buildin/common_test.go | 85 +++++++
server/plugin/infra/quota/unlimit/unlimit.go | 4 +-
server/plugin/infra/registry/buildin/buildin.go | 4 +-
.../infra/registry/embededetcd/embededetcd.go | 34 +--
server/plugin/infra/registry/etcd/etcd.go | 54 ++---
server/plugin/infra/registry/etcd/logger.go | 56 +++--
server/plugin/infra/tls/buildin/tls.go | 9 +-
server/plugin/infra/tracing/buildin/buildin.go | 7 +-
server/plugin/infra/tracing/buildin/common.go | 6 +-
.../plugin/infra/tracing/buildin/file_collector.go | 22 +-
.../infra/tracing/buildin/file_collector_test.go | 4 +-
server/plugin/plugin.go | 7 +-
server/rest/controller/v4/dependency_controller.go | 10 +-
server/rest/controller/v4/instance_controller.go | 13 +-
server/rest/controller/v4/instance_watcher.go | 4 +-
.../rest/controller/v4/microservice_controller.go | 14 +-
server/rest/controller/v4/query_rule_controller.go | 10 +-
server/rest/controller/v4/schema_controller.go | 10 +-
server/rest/controller/v4/tag_controller.go | 6 +-
server/rest/server_mux.go | 5 +-
server/rpc/server.go | 6 +-
server/server.go | 28 +--
server/service/cache/filter_instances.go | 4 +-
server/service/cache/filter_permission.go | 4 +-
server/service/cache/filter_tags.go | 3 +-
server/service/cache/filter_version.go | 4 +-
server/service/dependency.go | 29 +--
server/service/event/dependency_event_handler.go | 21 +-
server/service/event/instance_event_handler.go | 9 +-
server/service/event/rule_event_handler.go | 11 +-
server/service/event/service_event_handler.go | 6 +-
server/service/event/tag_event_handler.go | 13 +-
server/service/instance.go | 136 ++++++------
server/service/microservice.go | 134 +++++------
server/service/notification/listwatcher.go | 15 +-
.../notification/notification_healthchecker.go | 6 +-
.../service/notification/notification_service.go | 12 +-
server/service/notification/notification_test.go | 4 +-
server/service/notification/processor.go | 3 +-
server/service/notification/processor_test.go | 4 +-
server/service/notification/publisher.go | 8 +-
server/service/notification/stream.go | 7 +-
server/service/notification/websocket.go | 33 +--
server/service/rule.go | 65 +++---
server/service/schema.go | 99 ++++-----
server/service/tag.go | 47 ++--
server/service/util/dependency.go | 21 +-
server/service/util/dependency_query.go | 41 ++--
server/service/util/dependency_util.go | 21 +-
server/service/util/domain_util.go | 5 +-
server/service/util/instance_util.go | 21 +-
server/service/util/microservice_util.go | 5 +-
server/service/util/rule_util.go | 15 +-
server/service/util/tag_util.go | 3 +-
server/service/validate.go | 4 +-
server/service/watch.go | 9 +-
server/version.go | 4 +-
125 files changed, 1922 insertions(+), 1191 deletions(-)
diff --git a/.gitignore b/.gitignore
index 8bb0528..e679e2d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,6 +3,7 @@ output
**/*.coverprofile
**/coverage.out
**/coverage.txt
+**/*.log
service-center.iml
.idea/
diff --git a/glide.yaml b/glide.yaml
index c4dada9..8051f71 100644
--- a/glide.yaml
+++ b/glide.yaml
@@ -277,3 +277,15 @@ import:
- package: github.com/grpc-ecosystem/grpc-gateway
version: 84398b94e188ee336f307779b57b3aa91af7063c
repo: https://github.com/grpc-ecosystem/grpc-gateway
+- package: go.uber.org/zap
+ version: 4d45f9617f7d90f7a663ff21c7a4321dbe78098b
+ repo: https://github.com/uber-go/zap
+- package: go.uber.org/atomic
+ version: 1ea20fb1cbb1cc08cbd0d913a96dead89aa18289
+ repo: https://github.com/uber-go/atomic
+- package: go.uber.org/multierr
+ version: 3c4937480c32f4c13a875a1829af76c98ca3d40a
+ repo: https://github.com/uber-go/multierr
+- package: github.com/natefinch/lumberjack
+ version: a96e63847dc3c67d17befa69c303767e2f84e54f
+ repo: https://github.com/natefinch/lumberjack
diff --git a/pkg/chain/callback.go b/pkg/chain/callback.go
index 37e5ef5..e48e16a 100644
--- a/pkg/chain/callback.go
+++ b/pkg/chain/callback.go
@@ -17,11 +17,12 @@
package chain
import (
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/gopool"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"golang.org/x/net/context"
)
-var pool = util.NewGo(context.Background())
+var pool = gopool.New(context.Background())
type CallbackFunc func(r Result)
@@ -54,9 +55,9 @@ func (cb *Callback) Invoke(r Result) {
}
func (cb *Callback) syncInvoke(r Result) {
- defer util.RecoverAndReport()
+ defer log.Recover()
if cb.Func == nil {
- util.Logger().Errorf(nil, "Callback function is nil. result: %s,", r)
+ log.Errorf(nil, "Callback function is nil. result: %s,", r)
return
}
cb.Func(r)
diff --git a/pkg/chain/chain.go b/pkg/chain/chain.go
index 8cfb4dd..51441fe 100644
--- a/pkg/chain/chain.go
+++ b/pkg/chain/chain.go
@@ -18,7 +18,7 @@ package chain
import (
errorsEx "github.com/apache/incubator-servicecomb-service-center/pkg/errors"
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
)
type Chain struct {
@@ -43,7 +43,7 @@ func (c *Chain) syncNext(i *Invocation) {
if itf == nil {
return
}
- util.LogPanic(itf)
+ log.LogPanic(itf)
i.Fail(errorsEx.RaiseError(itf))
}()
diff --git a/pkg/chain/handler.go b/pkg/chain/handler.go
index 5efdab7..bb3ea82 100644
--- a/pkg/chain/handler.go
+++ b/pkg/chain/handler.go
@@ -17,6 +17,7 @@
package chain
import (
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
)
@@ -37,7 +38,7 @@ func RegisterHandler(catalog string, h Handler) {
handlersMap[catalog] = handlers
t := util.Reflect(h)
- util.Logger().Infof("register handler[%s] %s", catalog, t.Name())
+ log.Infof("register handler[%s] %s", catalog, t.Name())
}
func Handlers(catalog string) []Handler {
diff --git a/pkg/etcdsync/mutex.go b/pkg/etcdsync/mutex.go
index 81070f8..7c4bd5b 100644
--- a/pkg/etcdsync/mutex.go
+++ b/pkg/etcdsync/mutex.go
@@ -18,6 +18,8 @@ package etcdsync
import (
"fmt"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/gopool"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
"github.com/apache/incubator-servicecomb-service-center/server/core/backend"
"github.com/apache/incubator-servicecomb-service-center/server/infra/registry"
@@ -90,7 +92,7 @@ func (m *DLockFactory) NewDLock(wait bool) (l *DLock, err error) {
}
}
// failed
- util.Logger().Errorf(err, "Lock key %s failed, id=%s", m.key, l.id)
+ log.Errorf(err, "Lock key %s failed, id=%s", m.key, l.id)
l = nil
if !IsDebug {
@@ -108,7 +110,7 @@ func (m *DLock) Lock(wait bool) (err error) {
registry.WithStrKey(m.builder.key),
registry.WithStrValue(m.id)}
- util.Logger().Infof("Trying to create a lock: key=%s, id=%s", m.builder.key, m.id)
+ log.Infof("Trying to create a lock: key=%s, id=%s", m.builder.key, m.id)
var leaseID int64
putOpts := opts
@@ -121,7 +123,7 @@ func (m *DLock) Lock(wait bool) (err error) {
}
success, err := backend.Registry().PutNoOverride(m.builder.ctx, putOpts...)
if err == nil && success {
- util.Logger().Infof("Create Lock OK, key=%s, id=%s", m.builder.key, m.id)
+ log.Infof("Create Lock OK, key=%s, id=%s", m.builder.key, m.id)
return nil
}
@@ -133,10 +135,10 @@ func (m *DLock) Lock(wait bool) (err error) {
return fmt.Errorf("Key %s is locked by id=%s", m.builder.key, m.id)
}
- util.Logger().Errorf(err, "Key %s is locked, waiting for other node releases it, id=%s, %s", m.builder.key, m.id)
+ log.Errorf(err, "Key %s is locked, waiting for other node releases it, id=%s, %s", m.builder.key, m.id)
ctx, cancel := context.WithTimeout(m.builder.ctx, time.Duration(m.builder.ttl)*time.Second)
- util.Go(func(context.Context) {
+ gopool.Go(func(context.Context) {
defer cancel()
err := backend.Registry().Watch(ctx,
registry.WithStrKey(m.builder.key),
@@ -149,7 +151,7 @@ func (m *DLock) Lock(wait bool) (err error) {
return nil
}))
if err != nil {
- util.Logger().Warnf("%s, key=%s, id=%s", err.Error(), m.builder.key, m.id)
+ log.Warnf("%s, key=%s, id=%s", err.Error(), m.builder.key, m.id)
}
})
select {
@@ -175,10 +177,10 @@ func (m *DLock) Unlock() (err error) {
for i := 1; i <= DEFAULT_RETRY_TIMES; i++ {
_, err = backend.Registry().Do(m.builder.ctx, opts...)
if err == nil {
- util.Logger().Infof("Delete lock OK, key=%s, id=%s", m.builder.key, m.id)
+ log.Infof("Delete lock OK, key=%s, id=%s", m.builder.key, m.id)
return nil
}
- util.Logger().Errorf(err, "Delete lock failed, key=%s, id=%s", m.builder.key, m.id)
+ log.Errorf(err, "Delete lock failed, key=%s, id=%s", m.builder.key, m.id)
e, ok := err.(client.Error)
if ok && e.Code == client.ErrorCodeKeyNotFound {
return nil
diff --git a/pkg/util/goroutines.go b/pkg/gopool/goroutines.go
similarity index 71%
rename from pkg/util/goroutines.go
rename to pkg/gopool/goroutines.go
index 03d3d43..0d01c7b 100644
--- a/pkg/util/goroutines.go
+++ b/pkg/gopool/goroutines.go
@@ -14,51 +14,53 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package util
+package gopool
import (
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/util"
"golang.org/x/net/context"
"sync"
"time"
)
-var GlobalPoolConfig = PoolConfigure()
+var GlobalConfig = Configure()
-var defaultGo *GoRoutine
+var defaultGo *Pool
func init() {
- defaultGo = NewGo(context.Background())
+ defaultGo = New(context.Background())
}
-type PoolConfig struct {
+type Config struct {
Concurrent int
IdleTimeout time.Duration
}
-func (c *PoolConfig) Workers(max int) *PoolConfig {
+func (c *Config) Workers(max int) *Config {
c.Concurrent = max
return c
}
-func (c *PoolConfig) Idle(time time.Duration) *PoolConfig {
+func (c *Config) Idle(time time.Duration) *Config {
c.IdleTimeout = time
return c
}
-func PoolConfigure() *PoolConfig {
- return &PoolConfig{
+func Configure() *Config {
+ return &Config{
Concurrent: 1000,
IdleTimeout: 60 * time.Second,
}
}
-type GoRoutine struct {
- Cfg *PoolConfig
+type Pool struct {
+ Cfg *Config
// job context
ctx context.Context
cancel context.CancelFunc
- // pending is the chan to block GoRoutine.Do() when go pool is full
+ // pending is the chan to block Pool.Do() when go pool is full
pending chan func(ctx context.Context)
// workers is the counter of the worker
workers chan struct{}
@@ -68,13 +70,13 @@ type GoRoutine struct {
closed bool
}
-func (g *GoRoutine) execute(f func(ctx context.Context)) {
- defer RecoverAndReport()
+func (g *Pool) execute(f func(ctx context.Context)) {
+ defer log.Recover()
f(g.ctx)
}
-func (g *GoRoutine) Do(f func(context.Context)) *GoRoutine {
- defer RecoverAndReport()
+func (g *Pool) Do(f func(context.Context)) *Pool {
+ defer log.Recover()
select {
case g.pending <- f:
case g.workers <- struct{}{}:
@@ -84,7 +86,7 @@ func (g *GoRoutine) Do(f func(context.Context)) *GoRoutine {
return g
}
-func (g *GoRoutine) loop(f func(context.Context)) {
+func (g *Pool) loop(f func(context.Context)) {
defer g.wg.Done()
defer func() { <-g.workers }()
@@ -100,13 +102,13 @@ func (g *GoRoutine) loop(f func(context.Context)) {
if f == nil {
return
}
- ResetTimer(timer, g.Cfg.IdleTimeout)
+ util.ResetTimer(timer, g.Cfg.IdleTimeout)
}
}
}
// Close will call context.Cancel(), so all goroutines maybe exit when job does not complete
-func (g *GoRoutine) Close(grace bool) {
+func (g *Pool) Close(grace bool) {
g.mux.Lock()
if g.closed {
g.mux.Unlock()
@@ -124,7 +126,7 @@ func (g *GoRoutine) Close(grace bool) {
}
// Done will wait for all goroutines complete the jobs and then close the pool
-func (g *GoRoutine) Done() {
+func (g *Pool) Done() {
g.mux.Lock()
if g.closed {
g.mux.Unlock()
@@ -138,13 +140,13 @@ func (g *GoRoutine) Done() {
g.wg.Wait()
}
-func NewGo(ctx context.Context, cfgs ...*PoolConfig) *GoRoutine {
+func New(ctx context.Context, cfgs ...*Config) *Pool {
ctx, cancel := context.WithCancel(ctx)
if len(cfgs) == 0 {
- cfgs = append(cfgs, GlobalPoolConfig)
+ cfgs = append(cfgs, GlobalConfig)
}
cfg := cfgs[0]
- gr := &GoRoutine{
+ gr := &Pool{
Cfg: cfg,
ctx: ctx,
cancel: cancel,
@@ -158,7 +160,7 @@ func Go(f func(context.Context)) {
defaultGo.Do(f)
}
-func GoCloseAndWait() {
+func CloseAndWait() {
defaultGo.Close(true)
- Logger().Debugf("all goroutines exited")
+ log.Debugf("all goroutines exited")
}
diff --git a/pkg/util/goroutines_test.go b/pkg/gopool/goroutines_test.go
similarity index 92%
rename from pkg/util/goroutines_test.go
rename to pkg/gopool/goroutines_test.go
index 997ca95..bfdb4e7 100644
--- a/pkg/util/goroutines_test.go
+++ b/pkg/gopool/goroutines_test.go
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package util
+package gopool
import (
"fmt"
@@ -25,7 +25,7 @@ import (
)
func TestGoRoutine_Do(t *testing.T) {
- test1 := NewGo(context.Background())
+ test1 := New(context.Background())
defer test1.Close(true)
stopCh1 := make(chan struct{})
test1.Do(func(ctx context.Context) {
@@ -39,7 +39,7 @@ func TestGoRoutine_Do(t *testing.T) {
<-stopCh1
ctx, cancel := context.WithCancel(context.Background())
- test2 := NewGo(ctx)
+ test2 := New(ctx)
defer test2.Close(true)
stopCh2 := make(chan struct{})
test2.Do(func(ctx context.Context) {
@@ -58,7 +58,7 @@ func TestGoRoutine_Wait(t *testing.T) {
var mux sync.Mutex
MAX := 10
resultArr := make([]int, 0, MAX)
- test := NewGo(context.Background(), PoolConfigure().Idle(time.Second).Workers(5))
+ test := New(context.Background(), Configure().Idle(time.Second).Workers(5))
for i := 0; i < MAX; i++ {
test.Do(func(ctx context.Context) {
select {
@@ -81,7 +81,7 @@ func TestGoRoutine_Wait(t *testing.T) {
}
func TestGoRoutine_Exception1(t *testing.T) {
- test := NewGo(context.Background())
+ test := New(context.Background())
test.Do(func(ctx context.Context) {
select {
case <-ctx.Done():
@@ -114,5 +114,5 @@ func TestGoRoutine_Exception2(t *testing.T) {
var a *int
fmt.Println(*a)
})
- GoCloseAndWait()
+ CloseAndWait()
}
diff --git a/pkg/grace/grace.go b/pkg/grace/grace.go
index 2d18855..46b3ef2 100644
--- a/pkg/grace/grace.go
+++ b/pkg/grace/grace.go
@@ -19,7 +19,7 @@ package grace
import (
"flag"
"fmt"
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"os"
"os/exec"
"os/signal"
@@ -123,10 +123,10 @@ func handleSignals() {
fireSignalHook(PreSignal, sig)
switch sig {
case syscall.SIGHUP:
- util.Logger().Debugf("received signal '%v', now forking", sig)
+ log.Debugf("received signal '%v', now forking", sig)
err := fork()
if err != nil {
- util.Logger().Errorf(err, "fork a process failed")
+ log.Errorf(err, "fork a process failed")
}
}
fireSignalHook(PostSignal, sig)
@@ -154,10 +154,10 @@ func fork() (err error) {
}
if err = newCommand(args...); err != nil {
- util.Logger().Errorf(err, "fork a process failed, %v", args)
+ log.Errorf(err, "fork a process failed, %v", args)
return
}
- util.Logger().Warnf("fork process %v", args)
+ log.Warnf("fork process %v", args)
return
}
diff --git a/pkg/log/lager.go b/pkg/log/lager.go
new file mode 100644
index 0000000..2d88a07
--- /dev/null
+++ b/pkg/log/lager.go
@@ -0,0 +1,116 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You 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.
+
+// +build !go1.9
+
+package log
+
+import (
+ "fmt"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/util"
+ stlager "github.com/go-chassis/paas-lager"
+ "github.com/go-chassis/paas-lager/third_party/forked/cloudfoundry/lager"
+ "os"
+ "runtime/debug"
+ "time"
+)
+
+const loggerCallerSkip = 1
+
+var (
+ defaultLagerConfig = stlager.DefaultConfig()
+ stdOutWriters = []string{"stdout"}
+ fileWriters = []string{"file"}
+)
+
+// Config struct for lager and rotate parameters
+type Config struct {
+ LoggerLevel string
+ LoggerFile string
+ LogFormatText bool
+ // MB
+ LogRotateSize int
+ LogBackupCount int
+ CallerSkip int
+}
+
+func (c Config) WithCallerSkip(s int) Config {
+ c.CallerSkip = s
+ return c
+}
+
+func (c Config) WithFile(path string) Config {
+ c.LoggerFile = path
+ return c
+}
+
+func Configure() Config {
+ return fromLagerConfig(defaultLagerConfig)
+}
+
+func fromLagerConfig(c *stlager.Config) Config {
+ return Config{
+ LoggerLevel: c.LoggerLevel,
+ LoggerFile: c.LoggerFile,
+ LogFormatText: c.LogFormatText,
+ }
+}
+
+func toLagerConfig(c Config) stlager.Config {
+ w := fileWriters
+ if len(c.LoggerFile) == 0 {
+ w = stdOutWriters
+ }
+ return stlager.Config{
+ Writers: w,
+ LoggerLevel: c.LoggerLevel,
+ LoggerFile: c.LoggerFile,
+ LogFormatText: c.LogFormatText,
+ }
+}
+
+// newLog new log, unsafe
+func NewLogger(cfg Config) *Logger {
+ if cfg.CallerSkip == 0 {
+ cfg.CallerSkip = loggerCallerSkip
+ }
+ stlager.Init(toLagerConfig(cfg))
+ return &Logger{
+ Config: cfg,
+ Logger: stlager.NewLogger(cfg.LoggerFile),
+ }
+}
+
+type Logger struct {
+ Config Config
+ lager.Logger
+}
+
+func (l *Logger) Recover(r interface{}, callerSkip int) {
+ file, method, line, ok := util.GetCaller(callerSkip + l.Config.CallerSkip)
+ if ok {
+ l.Errorf(nil, "recover from %s %s():%d! %v", util.FileLastName(file), method, line, r)
+ return
+ }
+
+ file, method, line, _ = util.GetCaller(0)
+ fmt.Fprintf(os.Stderr, "%s %s %s %d %s %s():%d %v\n",
+ time.Now().Format("2006-01-02T15:04:05.000Z07:00"), "FATAL", "system", os.Getpid(),
+ util.FileLastName(file), method, line, r)
+ fmt.Fprintln(os.Stderr, util.BytesToStringWithNoCopy(debug.Stack()))
+}
+
+func (l *Logger) Sync() {
+}
diff --git a/pkg/log/log.go b/pkg/log/log.go
new file mode 100644
index 0000000..aac012d
--- /dev/null
+++ b/pkg/log/log.go
@@ -0,0 +1,105 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You 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.
+
+// +build !go1.9
+
+package log
+
+import (
+ "fmt"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/util"
+ "github.com/go-chassis/paas-lager/third_party/forked/cloudfoundry/lager"
+ "os"
+ "path/filepath"
+ "strings"
+ "time"
+)
+
+const (
+ defaultLogLevel = "DEBUG"
+ globalCallerSkip = 2
+ defaultLogRotatePeriod = 30 * time.Second
+)
+
+//log var
+var (
+ logger = NewLogger(Configure().WithCallerSkip(globalCallerSkip))
+ globalConfig Config
+ globalLogLevel lager.LogLevel
+)
+
+func SetGlobal(cfg Config) {
+ // renew the global logger
+ if len(cfg.LoggerLevel) == 0 {
+ cfg.LoggerLevel = defaultLogLevel
+ }
+ globalConfig = cfg
+ logger = NewLogger(cfg)
+ // recreate the deleted log file
+ switch strings.ToUpper(cfg.LoggerLevel) {
+ case "INFO":
+ globalLogLevel = lager.INFO
+ case "WARN":
+ globalLogLevel = lager.WARN
+ case "ERROR":
+ globalLogLevel = lager.ERROR
+ case "FATAL":
+ globalLogLevel = lager.FATAL
+ default:
+ globalLogLevel = lager.DEBUG
+ }
+
+ runLogDirRotate(cfg)
+
+ monitorLogFile()
+}
+
+func runLogDirRotate(cfg Config) {
+ if len(cfg.LoggerFile) == 0 {
+ return
+ }
+ go func() {
+ for {
+ <-time.After(defaultLogRotatePeriod)
+ LogRotate(filepath.Dir(cfg.LoggerFile), cfg.LogRotateSize, cfg.LogBackupCount)
+ }
+ }()
+}
+
+func monitorLogFile() {
+ if len(globalConfig.LoggerFile) == 0 {
+ return
+ }
+ go func() {
+ for {
+ <-time.After(time.Minute)
+ Debug(fmt.Sprintf("Check log file at %s", time.Now()))
+ if util.PathExist(globalConfig.LoggerFile) {
+ continue
+ }
+
+ file, err := os.OpenFile(globalConfig.LoggerFile, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0600)
+ if err != nil {
+ Errorf(err, "Create log file failed.")
+ continue
+ }
+
+ // TODO Here will lead to file handle leak
+ sink := lager.NewReconfigurableSink(lager.NewWriterSink("file", file, lager.DEBUG), globalLogLevel)
+ logger.RegisterSink(sink)
+ Errorf(nil, "log file is removed, create again.")
+ }
+ }()
+}
diff --git a/pkg/log/log_go19.go b/pkg/log/log_go19.go
new file mode 100644
index 0000000..1ff5772
--- /dev/null
+++ b/pkg/log/log_go19.go
@@ -0,0 +1,46 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You 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.
+
+// +build go1.9
+
+package log
+
+import (
+ "go.uber.org/zap"
+ "go.uber.org/zap/zapcore"
+)
+
+const globalCallerSkip = 2
+
+var (
+ logger = NewLogger(Configure().WithCallerSkip(globalCallerSkip))
+
+ zapLevelMap = map[string]zapcore.Level{
+ "DEBUG": zap.DebugLevel,
+ "INFO": zap.InfoLevel,
+ "WARN": zap.WarnLevel,
+ "ERROR": zap.ErrorLevel,
+ "FATAL": zap.FatalLevel,
+ }
+)
+
+func SetGlobal(cfg Config) {
+ logger = NewLogger(cfg.WithCallerSkip(globalCallerSkip))
+
+ // zap internal log
+ _ = zap.ReplaceGlobals(logger.zapLogger)
+ // golang log
+ _ = zap.RedirectStdLog(logger.zapLogger)
+}
diff --git a/pkg/log/log_go19_test.go b/pkg/log/log_go19_test.go
new file mode 100644
index 0000000..5b15281
--- /dev/null
+++ b/pkg/log/log_go19_test.go
@@ -0,0 +1,99 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You 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.
+
+// +build go1.9
+
+package log
+
+import (
+ "errors"
+ "os"
+ "testing"
+ "time"
+)
+
+func TestNewLogger(t *testing.T) {
+ l := NewLogger(Configure())
+ defer func() {
+ r := recover()
+ LogPanic(r)
+ l.Recover(r, 3)
+ defer func() {
+ l.Recover(recover(), 3)
+
+ defer func() {
+ l.Recover(recover(), 3)
+
+ defer Recover()
+ Fatalf(nil, "a")
+ }()
+ Fatal("a", nil)
+ }()
+ l.Fatalf(nil, "%s", "b")
+ }()
+
+ os.Remove("test.log")
+ SetGlobal(Configure().WithCallerSkip(2).WithFile("test.log"))
+
+ Debug("a")
+ l.Debug("a")
+ Debugf("%s", "b")
+ l.Debugf("%s", "b")
+
+ Info("a")
+ l.Info("a")
+ Infof("%s", "b")
+ l.Infof("%s", "b")
+
+ Warn("a")
+ l.Warn("a")
+ Warnf("%s", "b")
+ l.Warnf("%s", "b")
+
+ Error("a", nil)
+ l.Error("a", nil)
+ Errorf(nil, "%s", "a")
+ l.Errorf(nil, "%s", "a")
+ Error("a", errors.New("error"))
+ l.Error("a", errors.New("error"))
+ Errorf(errors.New("error"), "%s", "a")
+ l.Errorf(errors.New("error"), "%s", "a")
+
+ Sync()
+ l.Sync()
+
+ LogNilOrWarnf(time.Now(), "a")
+ LogNilOrWarnf(time.Now().Add(-time.Second), "a")
+ LogDebugOrWarnf(time.Now(), "a")
+ LogDebugOrWarnf(time.Now().Add(-time.Second), "a")
+ LogInfoOrWarnf(time.Now(), "a")
+ LogInfoOrWarnf(time.Now().Add(-time.Second), "a")
+
+ l.Fatal("a", nil)
+}
+
+func BenchmarkZapLogger(b *testing.B) {
+ cfg := Configure().WithFile("test.log")
+ l := NewLogger(cfg)
+ defer os.Remove("test.log")
+
+ b.ResetTimer()
+ for i := 0; i < b.N; i++ {
+ l.Infof("error test %s", "x")
+ }
+ l.Sync()
+ // 300000 6078 ns/op 176 B/op 7 allocs/op
+ b.ReportAllocs()
+}
diff --git a/pkg/log/log_test.go b/pkg/log/log_test.go
new file mode 100644
index 0000000..198d0b3
--- /dev/null
+++ b/pkg/log/log_test.go
@@ -0,0 +1,103 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You 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.
+
+// +build !go1.9
+
+package log
+
+import (
+ "errors"
+ "os"
+ "testing"
+ "time"
+)
+
+func TestNewLogger(t *testing.T) {
+ l := NewLogger(Configure())
+ defer func() {
+ r := recover()
+ LogPanic(r)
+ l.Recover(r, 3)
+ defer func() {
+ l.Recover(recover(), 3)
+
+ defer func() {
+ l.Recover(recover(), 3)
+
+ defer Recover()
+ Fatalf(nil, "a")
+ }()
+ Fatal("a", nil)
+ }()
+ l.Fatalf(nil, "%s", "b")
+ }()
+
+ os.Remove("test.log")
+ SetGlobal(Config{
+ LoggerFile: "test.log",
+ LogFormatText: true,
+ LogRotateSize: 1,
+ LogBackupCount: 1,
+ CallerSkip: 2,
+ })
+
+ Debug("a")
+ l.Debug("a")
+ Debugf("%s", "b")
+ l.Debugf("%s", "b")
+
+ Info("a")
+ l.Info("a")
+ Infof("%s", "b")
+ l.Infof("%s", "b")
+
+ Warn("a")
+ l.Warn("a")
+ Warnf("%s", "b")
+ l.Warnf("%s", "b")
+
+ Error("a", nil)
+ l.Error("a", nil)
+ Errorf(nil, "%s", "a")
+ l.Errorf(nil, "%s", "a")
+ Error("a", errors.New("error"))
+ l.Error("a", errors.New("error"))
+ Errorf(errors.New("error"), "%s", "a")
+ l.Errorf(errors.New("error"), "%s", "a")
+
+ Sync()
+ l.Sync()
+
+ LogNilOrWarnf(time.Now(), "a")
+ LogNilOrWarnf(time.Now().Add(-time.Second), "a")
+ LogDebugOrWarnf(time.Now(), "a")
+ LogDebugOrWarnf(time.Now().Add(-time.Second), "a")
+ LogInfoOrWarnf(time.Now(), "a")
+ LogInfoOrWarnf(time.Now().Add(-time.Second), "a")
+
+ l.Fatal("a", nil)
+}
+
+func BenchmarkLagerLogger(b *testing.B) {
+ cfg := Configure().WithFile("test.log")
+ l := NewLogger(cfg)
+ defer os.Remove("test.log")
+
+ for i := 0; i < b.N; i++ {
+ l.Infof("error test")
+ }
+ // 200000 8217 ns/op 912 B/op 15 allocs/op
+ b.ReportAllocs()
+}
diff --git a/pkg/log/logger.go b/pkg/log/logger.go
new file mode 100644
index 0000000..1ba8fc6
--- /dev/null
+++ b/pkg/log/logger.go
@@ -0,0 +1,110 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 log
+
+import (
+ "fmt"
+ "time"
+)
+
+func Default() *Logger {
+ return logger
+}
+
+func Debug(msg string) {
+ logger.Debug(msg)
+}
+
+func Debugf(format string, args ...interface{}) {
+ logger.Debugf(format, args...)
+}
+
+func Info(msg string) {
+ logger.Info(msg)
+}
+
+func Infof(format string, args ...interface{}) {
+ logger.Infof(format, args...)
+}
+
+func Warn(msg string) {
+ logger.Warn(msg)
+}
+
+func Warnf(format string, args ...interface{}) {
+ logger.Warnf(format, args...)
+}
+
+func Error(msg string, err error) {
+ logger.Error(msg, err)
+}
+
+func Errorf(err error, format string, args ...interface{}) {
+ logger.Errorf(err, format, args...)
+}
+
+func Fatal(msg string, err error) {
+ logger.Fatal(msg, err)
+}
+
+func Fatalf(err error, format string, args ...interface{}) {
+ logger.Fatalf(err, format, args...)
+}
+
+func Sync() {
+ logger.Sync()
+}
+
+func LogNilOrWarnf(start time.Time, format string, args ...interface{}) {
+ cost := time.Now().Sub(start)
+ if cost < time.Second {
+ return
+ }
+ logger.Warnf("[%s]%s", cost, fmt.Sprintf(format, args...))
+}
+
+func LogDebugOrWarnf(start time.Time, format string, args ...interface{}) {
+ cost := time.Now().Sub(start)
+ if cost < time.Second {
+ logger.Debugf("[%s]%s", cost, fmt.Sprintf(format, args...))
+ return
+ }
+ logger.Warnf("[%s]%s", cost, fmt.Sprintf(format, args...))
+}
+
+func LogInfoOrWarnf(start time.Time, format string, args ...interface{}) {
+ cost := time.Now().Sub(start)
+ if cost < time.Second {
+ logger.Infof("[%s]%s", cost, fmt.Sprintf(format, args...))
+ return
+ }
+ logger.Warnf("[%s]%s", cost, fmt.Sprintf(format, args...))
+}
+
+// LogPanic is a function can only be called in defer function.
+func LogPanic(r interface{}) {
+ logger.Recover(r, 3) // LogPanic()<-defer()<-panic()<-final caller
+}
+
+// Recover is a function call recover() and print the stack in log
+// Please call this function like 'defer log.Recover()' in your code
+func Recover() {
+ if r := recover(); r != nil {
+ LogPanic(r)
+ }
+ return
+}
diff --git a/pkg/util/logrotate.go b/pkg/log/logrotate.go
similarity index 86%
rename from pkg/util/logrotate.go
rename to pkg/log/logrotate.go
index 138677d..3bc9571 100644
--- a/pkg/util/logrotate.go
+++ b/pkg/log/logrotate.go
@@ -14,12 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package util
+package log
import (
"archive/zip"
"fmt"
- "golang.org/x/net/context"
"io"
"os"
"path/filepath"
@@ -68,7 +67,7 @@ func removeExceededFiles(path string, baseFileName string,
}
fileList, err := FilterFileList(path, pat, 0777)
if err != nil {
- Logger().Error("filepath.Walk() "+EscapPath(path)+" failed", err)
+ Error("filepath.Walk() "+EscapPath(path)+" failed", err)
return
}
sort.Strings(fileList)
@@ -78,10 +77,10 @@ func removeExceededFiles(path string, baseFileName string,
//remove exceeded files, keep file count below maxBackupCount
for len(fileList) > maxKeptCount {
filePath := fileList[0]
- Logger().Warn("remove "+EscapPath(filePath), nil)
+ Warn("remove " + EscapPath(filePath))
err := removeFile(filePath)
if err != nil {
- Logger().Error("remove "+EscapPath(filePath)+" failed", err)
+ Error("remove "+EscapPath(filePath)+" failed", err)
break
}
//remove the first element of a list
@@ -136,7 +135,7 @@ func shouldRollover(fPath string, MaxFileSize int) bool {
fileInfo, err := os.Stat(fPath)
if err != nil {
- Logger().Error("state "+EscapPath(fPath)+" failed", err)
+ Error("state "+EscapPath(fPath)+" failed", err)
return false
}
@@ -156,13 +155,13 @@ func doRollover(fPath string, MaxFileSize int, MaxBackupCount int) {
rotateFile := fPath + "." + timeStamp
err := CopyFile(fPath, rotateFile)
if err != nil {
- Logger().Error("copy "+EscapPath(fPath)+" failed", err)
+ Error("copy "+EscapPath(fPath)+" failed", err)
}
//truncate the file
f, err := os.OpenFile(fPath, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0600)
if err != nil {
- Logger().Error("truncate "+EscapPath(fPath)+" failed", err)
+ Error("truncate "+EscapPath(fPath)+" failed", err)
return
}
f.Close()
@@ -178,7 +177,7 @@ func doBackup(fPath string, MaxBackupCount int) {
pat := fmt.Sprintf(`%s\.[0-9]{1,17}$`, filepath.Base(fPath))
rotateFileList, err := FilterFileList(filepath.Dir(fPath), pat, 0777)
if err != nil {
- Logger().Error("walk"+EscapPath(fPath)+" failed", err)
+ Error("walk"+EscapPath(fPath)+" failed", err)
return
}
@@ -193,12 +192,12 @@ func doBackup(fPath string, MaxBackupCount int) {
err = compressFile(file, filepath.Base(fPath), true)
}
if err != nil {
- Logger().Error("compress"+EscapPath(file)+" failed", err)
+ Error("compress"+EscapPath(file)+" failed", err)
continue
}
err = removeFile(file)
if err != nil {
- Logger().Error("remove"+EscapPath(file)+" failed", err)
+ Error("remove"+EscapPath(file)+" failed", err)
}
}
@@ -209,7 +208,7 @@ func doBackup(fPath string, MaxBackupCount int) {
func LogRotateFile(file string, MaxFileSize int, MaxBackupCount int) {
defer func() {
if e := recover(); e != nil {
- Logger().Errorf(nil, "LogRotate file %s catch an exception, err: %v.", EscapPath(file), e)
+ Errorf(nil, "LogRotate file %s catch an exception, err: %v.", EscapPath(file), e)
}
}()
@@ -224,14 +223,14 @@ func LogRotate(path string, MaxFileSize int, MaxBackupCount int) {
//filter .log .trace files
defer func() {
if e := recover(); e != nil {
- Logger().Errorf(nil, "LogRotate catch an exception, err: %v.", e)
+ Errorf(nil, "LogRotate catch an exception, err: %v.", e)
}
}()
pat := `.(\.log|\.trace|\.out)$`
fileList, err := FilterFileList(path, pat, 0200)
if err != nil {
- Logger().Error("filepath.Walk() "+EscapPath(path)+" failed", err)
+ Error("filepath.Walk() "+EscapPath(path)+" failed", err)
return
}
@@ -294,22 +293,6 @@ func CopyFile(srcFile, destFile string) error {
return err
}
-func RunLogDirRotate(cfg LoggerConfig) {
- if len(cfg.LoggerFile) == 0 {
- return
- }
- Go(func(ctx context.Context) {
- for {
- select {
- case <-ctx.Done():
- return
- case <-time.After(cfg.LogRotatePeriod):
- LogRotate(filepath.Dir(cfg.LoggerFile), cfg.LogRotateSize, cfg.LogBackupCount)
- }
- }
- })
-}
-
func init() {
var s []string
if e := os.Getenv("INSTALL_ROOT"); len(e) > 0 {
diff --git a/pkg/util/logrotate_test.go b/pkg/log/logrotate_test.go
similarity index 99%
rename from pkg/util/logrotate_test.go
rename to pkg/log/logrotate_test.go
index 4ffad2f..312e518 100644
--- a/pkg/util/logrotate_test.go
+++ b/pkg/log/logrotate_test.go
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package util
+package log
import (
"os"
diff --git a/pkg/log/zap.go b/pkg/log/zap.go
new file mode 100644
index 0000000..8f42c9e
--- /dev/null
+++ b/pkg/log/zap.go
@@ -0,0 +1,223 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You 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.
+
+// +build go1.9
+
+package log
+
+import (
+ "fmt"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/util"
+ "github.com/natefinch/lumberjack"
+ "go.uber.org/zap"
+ "go.uber.org/zap/zapcore"
+ "os"
+ "runtime"
+ "runtime/debug"
+ "strings"
+ "time"
+)
+
+const (
+ defaultLogLevel = "DEBUG"
+ loggerCallerSkip = 1
+)
+
+var (
+ StdoutSyncer = zapcore.AddSync(os.Stdout)
+ StderrSyncer = zapcore.AddSync(os.Stderr)
+)
+
+// Config struct for lager and rotate parameters
+type Config struct {
+ LoggerLevel string
+ LoggerFile string
+ // if false, log print with JSON format
+ LogFormatText bool
+ // M Bytes
+ LogRotateSize int
+ LogBackupCount int
+ // days
+ LogBackupAge int
+ CallerSkip int
+}
+
+func (cfg Config) WithCallerSkip(s int) Config {
+ cfg.CallerSkip = s
+ return cfg
+}
+
+func (cfg Config) WithFile(path string) Config {
+ cfg.LoggerFile = path
+ return cfg
+}
+
+func Configure() Config {
+ return Config{
+ LoggerLevel: defaultLogLevel,
+ LogFormatText: true,
+ CallerSkip: loggerCallerSkip,
+ }
+}
+
+func toZapConfig(c Config) zapcore.Core {
+ // level config
+ l, ok := zapLevelMap[strings.ToUpper(c.LoggerLevel)]
+ if !ok {
+ l = zap.DebugLevel
+ }
+ var levelEnabler zap.LevelEnablerFunc = func(level zapcore.Level) bool {
+ return level >= l
+ }
+
+ // log format
+ format := zapcore.EncoderConfig{
+ MessageKey: "message",
+ LevelKey: "level",
+ TimeKey: "time",
+ NameKey: "logger",
+ CallerKey: "caller",
+ StacktraceKey: "stack",
+ LineEnding: zapcore.DefaultLineEnding,
+ EncodeLevel: zapcore.CapitalLevelEncoder,
+ EncodeTime: zapcore.ISO8601TimeEncoder,
+ EncodeDuration: zapcore.StringDurationEncoder,
+ EncodeCaller: zapcore.ShortCallerEncoder,
+ EncodeName: zapcore.FullNameEncoder,
+ }
+ var enc zapcore.Encoder
+ if c.LogFormatText {
+ enc = zapcore.NewConsoleEncoder(format)
+ } else {
+ enc = zapcore.NewJSONEncoder(format)
+ }
+
+ // log rotate
+ var syncer zapcore.WriteSyncer
+ if len(c.LoggerFile) > 0 {
+ syncer = zapcore.AddSync(&lumberjack.Logger{
+ Filename: c.LoggerFile,
+ MaxSize: c.LogRotateSize,
+ MaxBackups: c.LogBackupCount,
+ MaxAge: c.LogBackupAge,
+ LocalTime: false,
+ Compress: true,
+ })
+ } else {
+ syncer = StdoutSyncer
+ }
+
+ zap.NewDevelopment()
+ return zapcore.NewCore(enc, syncer, levelEnabler)
+}
+
+type Logger struct {
+ Config Config
+
+ zapLogger *zap.Logger
+ zapSugar *zap.SugaredLogger
+}
+
+func (l *Logger) Debug(msg string) {
+ l.zapLogger.Debug(msg)
+}
+
+func (l *Logger) Debugf(format string, args ...interface{}) {
+ l.zapSugar.Debugf(format, args...)
+}
+
+func (l *Logger) Info(msg string) {
+ l.zapLogger.Info(msg)
+}
+
+func (l *Logger) Infof(format string, args ...interface{}) {
+ l.zapSugar.Infof(format, args...)
+}
+
+func (l *Logger) Warn(msg string) {
+ l.zapLogger.Warn(msg)
+}
+
+func (l *Logger) Warnf(format string, args ...interface{}) {
+ l.zapSugar.Warnf(format, args...)
+}
+
+func (l *Logger) Error(msg string, err error) {
+ if err == nil {
+ l.zapLogger.Error(msg)
+ return
+ }
+ l.zapLogger.Error(msg, zap.String("error", err.Error()))
+}
+
+func (l *Logger) Errorf(err error, format string, args ...interface{}) {
+ if err == nil {
+ l.zapSugar.Errorf(format, args...)
+ return
+ }
+ l.zapSugar.With("error", err.Error()).Errorf(format, args...)
+}
+
+func (l *Logger) Fatal(msg string, err error) {
+ if err == nil {
+ l.zapLogger.Panic(msg)
+ return
+ }
+ l.zapLogger.Panic(msg, zap.String("error", err.Error()))
+}
+
+func (l *Logger) Fatalf(err error, format string, args ...interface{}) {
+ if err == nil {
+ l.zapSugar.Panicf(format, args...)
+ return
+ }
+ l.zapSugar.With("error", err.Error()).Panicf(format, args...)
+}
+
+// callSkip equals to 0 identify the caller of Recover()
+func (l *Logger) Recover(r interface{}, callerSkip int) {
+ e := zapcore.Entry{
+ Level: zap.PanicLevel, // zapcore sync automatically when larger than ErrorLevel
+ Time: time.Now(),
+ Caller: zapcore.NewEntryCaller(runtime.Caller(callerSkip + l.Config.CallerSkip)),
+ Stack: zap.Stack("stack").String,
+ }
+ if err := l.zapLogger.Core().With([]zap.Field{zap.Reflect("recover", r)}).Write(e, nil); err != nil {
+ file, _, line, _ := util.GetCaller(0)
+ fmt.Fprintf(StderrSyncer, "%s\tERROR\t%s:%d\t%v\n",
+ time.Now().Format("2006-01-02T15:04:05.000Z0700"),
+ util.FileLastName(file), line, err)
+ fmt.Fprintln(StderrSyncer, util.BytesToStringWithNoCopy(debug.Stack()))
+ StderrSyncer.Sync()
+ return
+ }
+}
+
+func (l *Logger) Sync() {
+ l.zapLogger.Sync()
+}
+
+func NewLogger(cfg Config) *Logger {
+ l := zap.New(toZapConfig(cfg),
+ zap.ErrorOutput(StderrSyncer),
+ zap.AddCaller(),
+ zap.AddCallerSkip(cfg.CallerSkip),
+ )
+ return &Logger{
+ Config: cfg,
+ zapLogger: l,
+ zapSugar: l.Sugar(),
+ }
+}
diff --git a/pkg/plugin/loader.go b/pkg/plugin/loader.go
index f5a3bba..493f46d 100644
--- a/pkg/plugin/loader.go
+++ b/pkg/plugin/loader.go
@@ -18,7 +18,7 @@ package plugin
import (
"fmt"
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"io/ioutil"
"os"
"path/filepath"
@@ -49,7 +49,7 @@ func (pm *Loader) Init() {
err := pm.ReloadPlugins()
if len(pm.Plugins) == 0 {
- util.Logger().Errorf(err, "no any plugin has been loaded.")
+ log.Errorf(err, "no any plugin has been loaded")
}
}
@@ -59,7 +59,7 @@ func (pm *Loader) ReloadPlugins() error {
dir, _ = os.Getwd()
}
if len(dir) == 0 {
- return fmt.Errorf("'plugins_dir' is unset.")
+ return fmt.Errorf("'plugins_dir' is unset")
}
files, err := ioutil.ReadDir(dir)
@@ -83,7 +83,7 @@ func (pm *Loader) ReloadPlugins() error {
if err != nil {
return fmt.Errorf("load plugin '%s' error for %s", submatchs[1], err.Error())
}
- util.Logger().Infof("load plugin '%s' successfully.", submatchs[1])
+ log.Infof("load plugin '%s' successfully", submatchs[1])
pm.mux.Lock()
pm.Plugins[submatchs[1]] = &wrapPlugin{p, make(map[string]plugin.Symbol, 10)}
@@ -97,7 +97,7 @@ func (pm *Loader) Find(pluginName, funcName string) (plugin.Symbol, error) {
w, ok := pm.Plugins[pluginName]
if !ok {
pm.mux.RUnlock()
- return nil, fmt.Errorf("can not find plugin '%s'.", pluginName)
+ return nil, fmt.Errorf("can not find plugin '%s'", pluginName)
}
f, ok := w.funcs[funcName]
diff --git a/pkg/util/uniqueue.go b/pkg/queue/uniqueue.go
similarity index 94%
rename from pkg/util/uniqueue.go
rename to pkg/queue/uniqueue.go
index e4b2c4f..aa68380 100644
--- a/pkg/util/uniqueue.go
+++ b/pkg/queue/uniqueue.go
@@ -14,10 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package util
+package queue
import (
"fmt"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"golang.org/x/net/context"
)
@@ -41,7 +42,7 @@ func (uq *UniQueue) Chan() <-chan interface{} {
func (uq *UniQueue) Put(value interface{}) (e error) {
defer func() {
if r := recover(); r != nil {
- LogPanic(r)
+ log.LogPanic(r)
e = fmt.Errorf("%v", r)
}
diff --git a/pkg/util/uniqueue_test.go b/pkg/queue/uniqueue_test.go
similarity index 99%
rename from pkg/util/uniqueue_test.go
rename to pkg/queue/uniqueue_test.go
index 9bafcfa..c4413d2 100644
--- a/pkg/util/uniqueue_test.go
+++ b/pkg/queue/uniqueue_test.go
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package util
+package queue
import (
"fmt"
diff --git a/pkg/rest/client.go b/pkg/rest/client.go
index 56f7423..e443a89 100644
--- a/pkg/rest/client.go
+++ b/pkg/rest/client.go
@@ -21,6 +21,7 @@ import (
"compress/gzip"
"encoding/json"
"fmt"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
"io"
"io/ioutil"
@@ -113,14 +114,14 @@ func gzipCompress(src []byte) (dst []byte) {
func readAndGunzip(reader io.Reader) (dst []byte, err error) {
gzipReader, err := gzip.NewReader(reader)
if err != nil {
- util.Logger().Errorf(err, "duplicate gzip reader failed.")
+ log.Errorf(err, "duplicate gzip reader failed.")
return nil, err
}
defer gzipReader.Close()
dst, err = ioutil.ReadAll(gzipReader)
if err != nil {
- util.Logger().Errorf(err, "read from gzip reader failed.")
+ log.Errorf(err, "read from gzip reader failed.")
return nil, err
}
@@ -138,7 +139,7 @@ func (client *HttpClient) httpDo(method string, url string, headers map[string]s
// 如果请求头未传入Content-Type,则按照json格式进行编码(如果是非json类型,需要自行在headers里指定类型)
bodyBytes, err = json.Marshal(body)
if err != nil {
- util.Logger().Errorf(err, "marshal object failed.")
+ log.Errorf(err, "marshal object failed.")
return status, result
}
} else {
@@ -146,7 +147,7 @@ func (client *HttpClient) httpDo(method string, url string, headers map[string]s
var ok bool = false
bodyBytes, ok = body.([]byte)
if !ok {
- util.Logger().Errorf(nil,
+ log.Errorf(nil,
"invalid body type '%s'(%s), body must type of byte array if Content-Type specified.",
reflect.TypeOf(body), headers[HEADER_CONTENT_TYPE])
return status, result
@@ -163,7 +164,7 @@ func (client *HttpClient) httpDo(method string, url string, headers map[string]s
req, err := http.NewRequest(method, url, bodyReader)
if err != nil {
- util.Logger().Errorf(err, "create request failed.")
+ log.Errorf(err, "create request failed.")
return status, result
}
@@ -174,7 +175,7 @@ func (client *HttpClient) httpDo(method string, url string, headers map[string]s
resp, err := client.Client.Do(req)
if err != nil {
- util.Logger().Errorf(err, "invoke request failed.")
+ log.Errorf(err, "invoke request failed.")
return status, result
}
@@ -201,7 +202,7 @@ func (client *HttpClient) HttpDo(method string, url string, headers map[string]s
// 如果请求头未传入Conent-Type,则按照json格式进行编码(如果是非json类型,需要自行在headers里指定类型)
bodyBytes, err = json.Marshal(body)
if err != nil {
- util.Logger().Errorf(err, "marshal object failed.")
+ log.Errorf(err, "marshal object failed.")
return nil, err
}
} else {
@@ -211,7 +212,7 @@ func (client *HttpClient) HttpDo(method string, url string, headers map[string]s
if !ok {
err := fmt.Errorf("invalid body type '%s'(%s), body must type of byte array if Content-Type specified.",
reflect.TypeOf(body), headers[HEADER_CONTENT_TYPE])
- util.Logger().Errorf(err, "")
+ log.Errorf(err, "")
return nil, err
}
}
@@ -226,7 +227,7 @@ func (client *HttpClient) HttpDo(method string, url string, headers map[string]s
req, err := http.NewRequest(method, url, bodyReader)
if err != nil {
- util.Logger().Errorf(err, "create request failed.")
+ log.Errorf(err, "create request failed.")
return nil, err
}
@@ -237,7 +238,7 @@ func (client *HttpClient) HttpDo(method string, url string, headers map[string]s
resp, err := client.Client.Do(req)
if err != nil {
- util.Logger().Errorf(err, "Request -----> %s failed.", url)
+ log.Errorf(err, "Request -----> %s failed.", url)
return resp, err
}
return resp, err
diff --git a/pkg/rest/roa.go b/pkg/rest/roa.go
index f217fad..b3b1dc8 100644
--- a/pkg/rest/roa.go
+++ b/pkg/rest/roa.go
@@ -17,6 +17,7 @@
package rest
import (
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
"net/http"
"reflect"
@@ -46,38 +47,38 @@ func RegisterServant(servant interface{}) {
typ := ind.Type()
name := util.FileLastName(typ.PkgPath() + "." + typ.Name())
if val.Kind() != reflect.Ptr {
- util.Logger().Errorf(nil, "<rest.RegisterServant> cannot use non-ptr servant struct `%s`", name)
+ log.Errorf(nil, "<rest.RegisterServant> cannot use non-ptr servant struct `%s`", name)
return
}
urlPatternFunc := val.MethodByName("URLPatterns")
if !urlPatternFunc.IsValid() {
- util.Logger().Errorf(nil, "<rest.RegisterServant> no 'URLPatterns' function in servant struct `%s`", name)
+ log.Errorf(nil, "<rest.RegisterServant> no 'URLPatterns' function in servant struct `%s`", name)
return
}
vals := urlPatternFunc.Call([]reflect.Value{})
if len(vals) <= 0 {
- util.Logger().Errorf(nil, "<rest.RegisterServant> call 'URLPatterns' function failed in servant struct `%s`", name)
+ log.Errorf(nil, "<rest.RegisterServant> call 'URLPatterns' function failed in servant struct `%s`", name)
return
}
val0 := vals[0]
if !val.CanInterface() {
- util.Logger().Errorf(nil, "<rest.RegisterServant> result of 'URLPatterns' function not interface type in servant struct `%s`", name)
+ log.Errorf(nil, "<rest.RegisterServant> result of 'URLPatterns' function not interface type in servant struct `%s`", name)
return
}
if routes, ok := val0.Interface().([]Route); ok {
- util.Logger().Infof("register servant %s", name)
+ log.Infof("register servant %s", name)
for _, route := range routes {
err := serverHandler.addRoute(&route)
if err != nil {
- util.Logger().Errorf(err, "register route failed.")
+ log.Errorf(err, "register route failed.")
}
}
} else {
- util.Logger().Errorf(nil, "<rest.RegisterServant> result of 'URLPatterns' function not []*Route type in servant struct `%s`", name)
+ log.Errorf(nil, "<rest.RegisterServant> result of 'URLPatterns' function not []*Route type in servant struct `%s`", name)
}
}
diff --git a/pkg/rest/route.go b/pkg/rest/route.go
index 084fe44..f00e59d 100644
--- a/pkg/rest/route.go
+++ b/pkg/rest/route.go
@@ -21,6 +21,7 @@ import (
"fmt"
"github.com/apache/incubator-servicecomb-service-center/pkg/chain"
errorsEx "github.com/apache/incubator-servicecomb-service-center/pkg/errors"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
"net/http"
"net/url"
@@ -65,13 +66,13 @@ func (this *ROAServerHandler) addRoute(route *Route) (err error) {
method := strings.ToUpper(route.Method)
if !isValidMethod(method) || !strings.HasPrefix(route.Path, "/") || route.Func == nil {
message := fmt.Sprintf("Invalid route parameters(method: %s, path: %s)", method, route.Path)
- util.Logger().Errorf(nil, message)
+ log.Errorf(nil, message)
return errors.New(message)
}
this.handlers[method] = append(this.handlers[method], &urlPatternHandler{
util.FormatFuncName(util.FuncName(route.Func)), route.Path, http.HandlerFunc(route.Func)})
- util.Logger().Infof("register route %s(%s)", route.Path, method)
+ log.Infof("register route %s(%s)", route.Path, method)
return nil
}
@@ -128,7 +129,7 @@ func (this *ROAServerHandler) serve(ph *urlPatternHandler, w http.ResponseWriter
err := ret.Err
itf := recover()
if itf != nil {
- util.LogPanic(itf)
+ log.LogPanic(itf)
err = errorsEx.RaiseError(itf)
}
diff --git a/pkg/rest/server.go b/pkg/rest/server.go
index 0bcabb6..6b5841f 100644
--- a/pkg/rest/server.go
+++ b/pkg/rest/server.go
@@ -19,7 +19,7 @@ package rest
import (
"crypto/tls"
"github.com/apache/incubator-servicecomb-service-center/pkg/grace"
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"net"
"net/http"
"os"
@@ -102,22 +102,22 @@ func (srv *Server) Serve() (err error) {
defer func() {
srv.state = serverStateClosed
}()
- defer util.RecoverAndReport()
+ defer log.Recover()
srv.state = serverStateRunning
err = srv.Server.Serve(srv.Listener)
- util.Logger().Debugf("server serve failed(%s)", err)
+ log.Debugf("server serve failed(%s)", err)
srv.wg.Wait()
return
}
func (srv *Server) AcceptOne() {
- defer util.RecoverAndReport()
+ defer log.Recover()
srv.wg.Add(1)
atomic.AddInt64(&srv.conns, 1)
}
func (srv *Server) CloseOne() bool {
- defer util.RecoverAndReport()
+ defer log.Recover()
for {
left := atomic.LoadInt64(&srv.conns)
if left <= 0 {
@@ -231,7 +231,7 @@ func (srv *Server) Shutdown() {
srv.state = serverStateTerminating
err := srv.Listener.Close()
if err != nil {
- util.Logger().Errorf(err, "server listener close failed")
+ log.Errorf(err, "server listener close failed")
}
if srv.GraceTimeout >= 0 {
@@ -260,10 +260,10 @@ func (srv *Server) gracefulStop(d time.Duration) {
}
if n != 0 {
- util.Logger().Warnf("%s timed out, force close %d connection(s)", d, n)
+ log.Warnf("%s timed out, force close %d connection(s)", d, n)
err := srv.Server.Close()
if err != nil {
- util.Logger().Errorf(err, "server close failed")
+ log.Errorf(err, "server close failed")
}
}
}
diff --git a/pkg/task/executor.go b/pkg/task/executor.go
index 6e24285..bf2c406 100644
--- a/pkg/task/executor.go
+++ b/pkg/task/executor.go
@@ -18,13 +18,14 @@ package task
import (
"errors"
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/gopool"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/queue"
"golang.org/x/net/context"
)
type Executor struct {
- pool *util.GoRoutine
- tasks *util.UniQueue
+ pool *gopool.Pool
+ tasks *queue.UniQueue
latestTask Task
}
@@ -59,10 +60,10 @@ func (s *Executor) Close() {
s.tasks.Close()
}
-func NewExecutor(pool *util.GoRoutine, task Task) *Executor {
+func NewExecutor(pool *gopool.Pool, task Task) *Executor {
return &Executor{
pool: pool,
- tasks: util.NewUniQueue(),
+ tasks: queue.NewUniQueue(),
latestTask: task,
}
}
diff --git a/pkg/task/service_async.go b/pkg/task/service_async.go
index 53f8007..4677bfe 100644
--- a/pkg/task/service_async.go
+++ b/pkg/task/service_async.go
@@ -18,6 +18,8 @@ package task
import (
"errors"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/gopool"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
"golang.org/x/net/context"
"sync"
@@ -40,7 +42,7 @@ type executorWithTTL struct {
type AsyncTaskService struct {
executors map[string]*executorWithTTL
- goroutine *util.GoRoutine
+ goroutine *gopool.Pool
lock sync.RWMutex
ready chan struct{}
isClose bool
@@ -111,7 +113,7 @@ func (lat *AsyncTaskService) daemon(ctx context.Context) {
for {
select {
case <-ctx.Done():
- util.Logger().Debugf("daemon thread exited for AsyncTaskService stopped")
+ log.Debugf("daemon thread exited for AsyncTaskService stopped")
return
case <-timer.C:
lat.lock.RLock()
@@ -160,7 +162,7 @@ func (lat *AsyncTaskService) daemon(ctx context.Context) {
}
lat.lock.Unlock()
- util.Logger().Debugf("daemon thread completed, %d executor(s) removed", len(removes))
+ log.Debugf("daemon thread completed, %d executor(s) removed", len(removes))
}
}
}
@@ -209,7 +211,7 @@ func (lat *AsyncTaskService) renew() {
func NewTaskService() TaskService {
lat := &AsyncTaskService{
- goroutine: util.NewGo(context.Background()),
+ goroutine: gopool.New(context.Background()),
ready: make(chan struct{}),
isClose: true,
}
diff --git a/pkg/tlsutil/tlsutil.go b/pkg/tlsutil/tlsutil.go
index 4995ecd..fcf444d 100644
--- a/pkg/tlsutil/tlsutil.go
+++ b/pkg/tlsutil/tlsutil.go
@@ -20,6 +20,7 @@ import (
"crypto/tls"
"crypto/x509"
"encoding/pem"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
"io/ioutil"
"strings"
@@ -42,7 +43,7 @@ func ParseSSLCipherSuites(ciphers string, permitTlsCipherSuiteMap map[string]uin
cipherSuiteList = append(cipherSuiteList, cipherSuite)
} else {
// 配置算法不存在
- util.Logger().Warnf("cipher %s not exist.", cipherSuiteName)
+ log.Warnf("cipher %s not exist.", cipherSuiteName)
}
}
@@ -58,7 +59,7 @@ func ParseSSLProtocol(sprotocol string) uint16 {
if protocol, ok := TLS_VERSION_MAP[sprotocol]; ok {
result = protocol
} else {
- util.Logger().Warnf("invalid ssl minimal version(%s), use default.", sprotocol)
+ log.Warnf("invalid ssl minimal version(%s), use default.", sprotocol)
}
return result
@@ -68,7 +69,7 @@ func GetX509CACertPool(caCertFile string) (caCertPool *x509.CertPool, err error)
pool := x509.NewCertPool()
caCert, err := ioutil.ReadFile(caCertFile)
if err != nil {
- util.Logger().Errorf(err, "read ca cert file %s failed.", caCertFile)
+ log.Errorf(err, "read ca cert file %s failed.", caCertFile)
return nil, err
}
@@ -79,19 +80,19 @@ func GetX509CACertPool(caCertFile string) (caCertPool *x509.CertPool, err error)
func LoadTLSCertificate(certFile, keyFile, plainPassphase string) (tlsCert []tls.Certificate, err error) {
certContent, err := ioutil.ReadFile(certFile)
if err != nil {
- util.Logger().Errorf(err, "read cert file %s failed.", certFile)
+ log.Errorf(err, "read cert file %s failed.", certFile)
return nil, err
}
keyContent, err := ioutil.ReadFile(keyFile)
if err != nil {
- util.Logger().Errorf(err, "read key file %s failed.", keyFile)
+ log.Errorf(err, "read key file %s failed.", keyFile)
return nil, err
}
keyBlock, _ := pem.Decode(keyContent)
if keyBlock == nil {
- util.Logger().Errorf(err, "decode key file %s failed.", keyFile)
+ log.Errorf(err, "decode key file %s failed.", keyFile)
return nil, err
}
@@ -99,7 +100,7 @@ func LoadTLSCertificate(certFile, keyFile, plainPassphase string) (tlsCert []tls
plainPassphaseBytes := util.StringToBytesWithNoCopy(plainPassphase)
keyData, err := x509.DecryptPEMBlock(keyBlock, plainPassphaseBytes)
if err != nil {
- util.Logger().Errorf(err, "decrypt key file %s failed.", keyFile)
+ log.Errorf(err, "decrypt key file %s failed.", keyFile)
return nil, err
}
@@ -114,7 +115,7 @@ func LoadTLSCertificate(certFile, keyFile, plainPassphase string) (tlsCert []tls
cert, err := tls.X509KeyPair(certContent, keyContent)
if err != nil {
- util.Logger().Errorf(err, "load X509 key pair from cert file %s with key file %s failed.", certFile, keyFile)
+ log.Errorf(err, "load X509 key pair from cert file %s with key file %s failed.", certFile, keyFile)
return nil, err
}
diff --git a/pkg/util/log.go b/pkg/util/log.go
deleted file mode 100644
index 9f1da95..0000000
--- a/pkg/util/log.go
+++ /dev/null
@@ -1,245 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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 util
-
-import (
- "fmt"
- stlager "github.com/go-chassis/paas-lager"
- "github.com/go-chassis/paas-lager/third_party/forked/cloudfoundry/lager"
- "golang.org/x/net/context"
- "os"
- "path/filepath"
- "runtime"
- "strings"
- "sync"
- "time"
-)
-
-//log var
-var (
- globalLogger lager.Logger
- globalConfig LoggerConfig
- innerLagerConfig = stlager.DefaultConfig()
- logLevel lager.LogLevel
-
- loggers map[string]lager.Logger
- loggerNames map[string]string
- loggersMux sync.RWMutex
-
- stdOutWriters = []string{"stdout"}
- fileWriters = []string{"file"}
-)
-
-// LoggerConfig struct for lager and rotate parameters
-type LoggerConfig struct {
- LoggerLevel string
- LoggerFile string
- LogFormatText bool
- LogRotatePeriod time.Duration
- LogRotateSize int
- LogBackupCount int
-}
-
-func init() {
- loggers = make(map[string]lager.Logger, 10)
- loggerNames = make(map[string]string, 10)
- // make globalLogger do not be nil, new a stdout for it
- globalLogger = NewLogger(fromLagerConfig(innerLagerConfig))
-}
-
-func fromLagerConfig(c *stlager.Config) LoggerConfig {
- return LoggerConfig{
- LoggerLevel: c.LoggerLevel,
- LoggerFile: c.LoggerFile,
- LogFormatText: c.LogFormatText,
- }
-}
-
-func toLagerConfig(c LoggerConfig) stlager.Config {
- w := fileWriters
- if len(c.LoggerFile) == 0 {
- w = stdOutWriters
- }
- return stlager.Config{
- Writers: w,
- LoggerLevel: c.LoggerLevel,
- LoggerFile: c.LoggerFile,
- LogFormatText: c.LogFormatText,
- }
-}
-
-// newLog new log, unsafe
-func NewLogger(cfg LoggerConfig) lager.Logger {
- stlager.Init(toLagerConfig(cfg))
- return stlager.NewLogger(cfg.LoggerFile)
-}
-
-func InitGlobalLogger(cfg LoggerConfig) {
- // renew the global globalLogger
- if len(cfg.LoggerLevel) == 0 {
- cfg.LoggerLevel = innerLagerConfig.LoggerLevel
- }
- globalConfig = cfg
- globalLogger = NewLogger(cfg)
- // recreate the deleted log file
- switch strings.ToUpper(cfg.LoggerLevel) {
- case "INFO":
- logLevel = lager.INFO
- case "WARN":
- logLevel = lager.WARN
- case "ERROR":
- logLevel = lager.ERROR
- case "FATAL":
- logLevel = lager.FATAL
- default:
- logLevel = lager.DEBUG
- }
-
- RunLogDirRotate(cfg)
-
- monitorLogFile()
-}
-
-func Logger() lager.Logger {
- if len(loggerNames) == 0 {
- return globalLogger
- }
- funcFullName := getCalleeFuncName()
-
- for prefix, logFile := range loggerNames {
- if strings.Index(prefix, "/") < 0 {
- // function name
- if prefix != funcFullName[strings.LastIndex(funcFullName, " ")+1:] {
- continue
- }
- } else {
- // package name
- if strings.Index(funcFullName, prefix) < 0 {
- continue
- }
- }
- loggersMux.RLock()
- logger, ok := loggers[logFile]
- loggersMux.RUnlock()
- if ok {
- return logger
- }
-
- loggersMux.Lock()
- logger, ok = loggers[logFile]
- if !ok {
- cfg := globalConfig
- if len(cfg.LoggerFile) != 0 {
- cfg.LoggerFile = filepath.Join(filepath.Dir(cfg.LoggerFile), logFile+".log")
- }
- logger = NewLogger(cfg)
- loggers[logFile] = logger
- logger.Warnf("match %s, new globalLogger %s for %s", prefix, logFile, funcFullName)
- }
- loggersMux.Unlock()
- return logger
- }
-
- return globalLogger
-}
-
-func getCalleeFuncName() string {
- fullName := ""
- for i := 2; i <= 4; i++ {
- pc, file, _, ok := runtime.Caller(i)
-
- if strings.Index(file, "/log.go") > 0 {
- continue
- }
-
- if ok {
- idx := strings.LastIndex(file, "/src/")
- switch {
- case idx >= 0:
- fullName = file[idx+4:]
- default:
- fullName = file
- }
-
- if f := runtime.FuncForPC(pc); f != nil {
- fullName += " " + FormatFuncName(f.Name())
- }
- }
- break
- }
- return fullName
-}
-
-func CustomLogger(pkgOrFunc, fileName string) {
- loggerNames[pkgOrFunc] = fileName
-}
-
-func monitorLogFile() {
- if len(globalConfig.LoggerFile) == 0 {
- return
- }
- Go(func(ctx context.Context) {
- for {
- select {
- case <-ctx.Done():
- return
- case <-time.After(time.Minute):
- Logger().Debug(fmt.Sprintf("Check log file at %s", time.Now()))
- if PathExist(globalConfig.LoggerFile) {
- continue
- }
-
- file, err := os.OpenFile(globalConfig.LoggerFile, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0600)
- if err != nil {
- Logger().Errorf(err, "Create log file failed.")
- continue
- }
-
- // TODO Here will lead to file handle leak
- sink := lager.NewReconfigurableSink(lager.NewWriterSink("file", file, lager.DEBUG), logLevel)
- Logger().RegisterSink(sink)
- Logger().Errorf(nil, "log file is removed, create again.")
- }
- }
- })
-}
-
-func LogNilOrWarnf(start time.Time, format string, args ...interface{}) {
- cost := time.Now().Sub(start)
- if cost < time.Second {
- return
- }
- Logger().Warnf("[%s]%s", cost, fmt.Sprintf(format, args...))
-}
-
-func LogDebugOrWarnf(start time.Time, format string, args ...interface{}) {
- cost := time.Now().Sub(start)
- if cost < time.Second {
- Logger().Debugf("[%s]%s", cost, fmt.Sprintf(format, args...))
- return
- }
- Logger().Warnf("[%s]%s", cost, fmt.Sprintf(format, args...))
-}
-
-func LogInfoOrWarnf(start time.Time, format string, args ...interface{}) {
- cost := time.Now().Sub(start)
- if cost < time.Second {
- Logger().Infof("[%s]%s", cost, fmt.Sprintf(format, args...))
- return
- }
- Logger().Warnf("[%s]%s", cost, fmt.Sprintf(format, args...))
-}
diff --git a/pkg/util/log_test.go b/pkg/util/log_test.go
deleted file mode 100644
index 9d0bdbf..0000000
--- a/pkg/util/log_test.go
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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 util
-
-import (
- "testing"
- "time"
-)
-
-func TestLogger(t *testing.T) {
- InitGlobalLogger(LoggerConfig{
- LoggerLevel: "DEBUG",
- })
-
- CustomLogger("Not Exist", "testDefaultLOGGER")
- l := Logger()
- if l != globalLogger {
- t.Fatalf("should equal to globalLogger")
- }
- CustomLogger("TestLogger", "testFuncName")
- l = Logger()
- if l == globalLogger || l == nil {
- t.Fatalf("should create a new instance for 'TestLogger'")
- }
- s := Logger()
- if l != s {
- t.Fatalf("should be the same globalLogger")
- }
- CustomLogger("github.com/apache/incubator-servicecomb-service-center/pkg/util", "testPkgPath")
- l = Logger()
- if l == globalLogger || l == nil {
- t.Fatalf("should create a new instance for 'util'")
- }
- // l.Infof("OK")
-
- LogDebugOrWarnf(time.Now().Add(-time.Second), "x")
- LogNilOrWarnf(time.Now().Add(-time.Second), "x")
- LogInfoOrWarnf(time.Now().Add(-time.Second), "x")
-
- LogDebugOrWarnf(time.Now(), "x")
- LogNilOrWarnf(time.Now(), "x")
- LogInfoOrWarnf(time.Now(), "x")
-}
-
-func BenchmarkLogger(b *testing.B) {
- l := Logger()
- b.RunParallel(func(pb *testing.PB) {
- for pb.Next() {
- l.Debugf("debug test")
- l.Infof("info test")
- }
- })
- // after: 50000 20964 ns/op 1296 B/op 18 allocs/op
- // before: 50000 31378 ns/op 2161 B/op 30 allocs/op
- b.ReportAllocs()
-}
-
-func BenchmarkLoggerCustom(b *testing.B) {
- CustomLogger("BenchmarkLoggerCustom", "bmLogger")
- l := Logger()
- b.RunParallel(func(pb *testing.PB) {
- for pb.Next() {
- l.Debugf("debug test")
- l.Infof("info test")
- }
- })
- // after: 100000 21374 ns/op 1296 B/op 18 allocs/op
- // before: 50000 21804 ns/op 2161 B/op 30 allocs/op
- b.ReportAllocs()
-}
diff --git a/pkg/util/reflect.go b/pkg/util/reflect.go
index 7ea324d..f45572a 100644
--- a/pkg/util/reflect.go
+++ b/pkg/util/reflect.go
@@ -25,10 +25,8 @@ import (
)
var (
- reflector *Reflector
- sliceTypeSize = uint64(reflect.TypeOf(reflect.SliceHeader{}).Size())
- stringTypeSize = uint64(reflect.TypeOf(reflect.StringHeader{}).Size())
- unknown = new(reflectObject)
+ reflector *Reflector
+ unknown = new(reflectObject)
)
func init() {
diff --git a/pkg/util/sys.go b/pkg/util/sys.go
index 7100e2e..9bd81ef 100644
--- a/pkg/util/sys.go
+++ b/pkg/util/sys.go
@@ -58,7 +58,6 @@ func GetEnvInt(name string, def int) int {
if ok {
i64, err := strconv.ParseInt(env, 10, 0)
if err != nil {
- Logger().Errorf(err, "get env '%s' value failed, return default value '%d'", name, def)
return def
}
return int(i64)
diff --git a/pkg/util/util.go b/pkg/util/util.go
index d1dfd0c..42d34f0 100644
--- a/pkg/util/util.go
+++ b/pkg/util/util.go
@@ -17,10 +17,7 @@
package util
import (
- "fmt"
- "os"
"runtime"
- "runtime/debug"
"strings"
"time"
"unsafe"
@@ -89,39 +86,12 @@ func StringJoin(args []string, sep string) string {
}
}
-func RecoverAndReport() (r interface{}) {
- if r = recover(); r != nil {
- LogPanic(r)
- }
- return
-}
-
func GetCaller(skip int) (string, string, int, bool) {
pc, file, line, ok := runtime.Caller(skip + 1)
method := FormatFuncName(runtime.FuncForPC(pc).Name())
return file, method, line, ok
}
-// this function can only be called in recover().
-func LogPanic(args ...interface{}) {
- for i := 2; i < 10; i++ {
- file, method, line, ok := GetCaller(i)
- if !ok {
- break
- }
-
- if strings.Index(file, "service-center") > 0 || strings.Index(file, "servicecenter") > 0 {
- Logger().Errorf(nil, "recover from %s %s():%d! %s", FileLastName(file), method, line, fmt.Sprint(args...))
- return
- }
- }
-
- file, method, line, _ := GetCaller(0)
- fmt.Fprintln(os.Stderr, time.Now().Format("2006-01-02T15:04:05.000Z07:00"), "FATAL", "system", os.Getpid(),
- fmt.Sprintf("%s %s():%d", FileLastName(file), method, line), fmt.Sprint(args...))
- fmt.Fprintln(os.Stderr, BytesToStringWithNoCopy(debug.Stack()))
-}
-
func Int16ToInt64(bs []int16) (in int64) {
l := len(bs)
if l > 4 || l == 0 {
diff --git a/scripts/release/LICENSE b/scripts/release/LICENSE
index 5c9fb10..a2fa902 100644
--- a/scripts/release/LICENSE
+++ b/scripts/release/LICENSE
@@ -852,3 +852,31 @@ This product bundles the css-percentage-circle library which is
licensed under the MIT License.
For details, see https://github.com/afuersch/css-percentage-circle
You can find a copy of the License at licenses/LICENSE-css-percentage-circle
+
+================================================================
+For zap (4d45f9617f7d90f7a663ff21c7a4321dbe78098b)
+================================================================
+This product bundles the zap library which is licensed under the MIT License.
+For details, see https://github.com/uber-go/zap
+You can find a copy of the License at licenses/LICENSE-uber-go-zap
+
+================================================================
+For atomic (1ea20fb1cbb1cc08cbd0d913a96dead89aa18289)
+================================================================
+This product bundles the atomic library which is licensed under the MIT License.
+For details, see https://github.com/uber-go/atomic
+You can find a copy of the License at licenses/LICENSE-uber-go-atomic
+
+================================================================
+For multierr (3c4937480c32f4c13a875a1829af76c98ca3d40a)
+================================================================
+This product bundles the multierr library which is licensed under the MIT License.
+For details, see https://github.com/uber-go/multierr
+You can find a copy of the License at licenses/LICENSE-uber-go-multierr
+
+================================================================
+For lumberjack (a96e63847dc3c67d17befa69c303767e2f84e54f)
+================================================================
+This product bundles the lumberjack library which is licensed under the MIT License.
+For details, see https://github.com/natefinch/lumberjack
+You can find a copy of the License at licenses/LICENSE-natefinch-lumberjack
diff --git a/scripts/release/licenses/LICENSE-natefinch-lumberjack b/scripts/release/licenses/LICENSE-natefinch-lumberjack
new file mode 100644
index 0000000..8d6bb4a
--- /dev/null
+++ b/scripts/release/licenses/LICENSE-natefinch-lumberjack
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014 Nate Finch
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
\ No newline at end of file
diff --git a/scripts/release/licenses/LICENSE-uber-go-atomic b/scripts/release/licenses/LICENSE-uber-go-atomic
new file mode 100644
index 0000000..721b703
--- /dev/null
+++ b/scripts/release/licenses/LICENSE-uber-go-atomic
@@ -0,0 +1,19 @@
+Copyright (c) 2016 Uber Technologies, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
\ No newline at end of file
diff --git a/scripts/release/licenses/LICENSE-uber-go-multierr b/scripts/release/licenses/LICENSE-uber-go-multierr
new file mode 100644
index 0000000..20dcf51
--- /dev/null
+++ b/scripts/release/licenses/LICENSE-uber-go-multierr
@@ -0,0 +1,19 @@
+Copyright (c) 2017 Uber Technologies, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
\ No newline at end of file
diff --git a/scripts/release/licenses/LICENSE-uber-go-zap b/scripts/release/licenses/LICENSE-uber-go-zap
new file mode 100644
index 0000000..2cf1638
--- /dev/null
+++ b/scripts/release/licenses/LICENSE-uber-go-zap
@@ -0,0 +1,19 @@
+Copyright (c) 2016-2017 Uber Technologies, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
\ No newline at end of file
diff --git a/server/admin/service.go b/server/admin/service.go
index 166a057..2a6554e 100644
--- a/server/admin/service.go
+++ b/server/admin/service.go
@@ -17,6 +17,7 @@
package admin
import (
+ "github.com/apache/incubator-servicecomb-service-center/pkg/gopool"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
"github.com/apache/incubator-servicecomb-service-center/server/admin/model"
"github.com/apache/incubator-servicecomb-service-center/server/core"
@@ -51,7 +52,7 @@ func (service *AdminService) Dump(ctx context.Context, in *model.DumpRequest) (*
}
func (service *AdminService) dumpAll(ctx context.Context, cache *model.Cache) {
- util.NewGo(ctx, util.PoolConfigure().Workers(2)).
+ gopool.New(ctx, gopool.Configure().Workers(2)).
Do(func(_ context.Context) { setValue(backend.Store().Service(), &cache.Microservices) }).
Do(func(_ context.Context) { setValue(backend.Store().ServiceIndex(), &cache.Indexes) }).
Do(func(_ context.Context) { setValue(backend.Store().ServiceAlias(), &cache.Aliases) }).
diff --git a/server/api.go b/server/api.go
index 7f7bdcb..e5c5429 100644
--- a/server/api.go
+++ b/server/api.go
@@ -18,9 +18,10 @@ package server
import (
"fmt"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/gopool"
"github.com/apache/incubator-servicecomb-service-center/pkg/grace"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/rest"
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
"github.com/apache/incubator-servicecomb-service-center/server/core"
pb "github.com/apache/incubator-servicecomb-service-center/server/core/proto"
rs "github.com/apache/incubator-servicecomb-service-center/server/rest"
@@ -40,7 +41,7 @@ func init() {
apiServer = &APIServer{
isClose: true,
err: make(chan error, 1),
- goroutine: util.NewGo(context.Background()),
+ goroutine: gopool.New(context.Background()),
}
}
@@ -70,7 +71,7 @@ type APIServer struct {
isClose bool
forked bool
err chan error
- goroutine *util.GoRoutine
+ goroutine *gopool.Pool
}
const (
@@ -95,14 +96,14 @@ func (s *APIServer) registryService(pCtx context.Context) error {
ctx := core.AddDefaultContextValue(pCtx)
respE, err := core.ServiceAPI.Exist(ctx, core.GetExistenceRequest())
if err != nil {
- util.Logger().Error("query service center existence failed", err)
+ log.Error("query service center existence failed", err)
return err
}
if respE.Response.Code == pb.Response_SUCCESS {
- util.Logger().Warnf("service center service already registered, serviceId %s", respE.ServiceId)
+ log.Warnf("service center service already registered, serviceId %s", respE.ServiceId)
respG, err := core.ServiceAPI.GetOne(ctx, core.GetServiceRequest(respE.ServiceId))
if respG.Response.Code != pb.Response_SUCCESS {
- util.Logger().Errorf(err, "query service center service info failed, serviceId %s", respE.ServiceId)
+ log.Errorf(err, "query service center service info failed, serviceId %s", respE.ServiceId)
return fmt.Errorf("service center service file lost.")
}
core.Service = respG.Service
@@ -111,11 +112,11 @@ func (s *APIServer) registryService(pCtx context.Context) error {
respS, err := core.ServiceAPI.Create(ctx, core.CreateServiceRequest())
if err != nil {
- util.Logger().Error("register service center failed", err)
+ log.Error("register service center failed", err)
return err
}
core.Service.ServiceId = respS.ServiceId
- util.Logger().Infof("register service center service %s", respS.ServiceId)
+ log.Infof("register service center service %s", respS.ServiceId)
return nil
}
@@ -134,11 +135,11 @@ func (s *APIServer) registryInstance(pCtx context.Context) error {
core.RegisterInstanceRequest(s.HostName, endpoints))
if respI.Response.Code != pb.Response_SUCCESS {
err = fmt.Errorf("register service center instance failed, %s", respI.Response.Message)
- util.Logger().Error(err.Error(), nil)
+ log.Error(err.Error(), nil)
return err
}
core.Instance.InstanceId = respI.InstanceId
- util.Logger().Infof("register service center instance %s/%s, endpoints %s",
+ log.Infof("register service center instance %s/%s, endpoints %s",
core.Service.ServiceId, respI.InstanceId, endpoints)
return nil
}
@@ -151,10 +152,10 @@ func (s *APIServer) unregisterInstance(pCtx context.Context) error {
respI, err := core.InstanceAPI.Unregister(ctx, core.UnregisterInstanceRequest())
if respI.Response.Code != pb.Response_SUCCESS {
err = fmt.Errorf("unregister service center instance failed, %s", respI.Response.Message)
- util.Logger().Error(err.Error(), nil)
+ log.Error(err.Error(), nil)
return err
}
- util.Logger().Warnf("unregister service center instance %s/%s",
+ log.Warnf("unregister service center instance %s/%s",
core.Service.ServiceId, core.Instance.InstanceId)
return nil
}
@@ -166,17 +167,17 @@ func (s *APIServer) doAPIServerHeartBeat(pCtx context.Context) {
ctx := core.AddDefaultContextValue(pCtx)
respI, err := core.InstanceAPI.Heartbeat(ctx, core.HeartbeatRequest())
if respI.Response.Code == pb.Response_SUCCESS {
- util.Logger().Debugf("update service center instance %s/%s heartbeat",
+ log.Debugf("update service center instance %s/%s heartbeat",
core.Instance.ServiceId, core.Instance.InstanceId)
return
}
- util.Logger().Errorf(err, "update service center instance %s/%s heartbeat failed",
+ log.Errorf(err, "update service center instance %s/%s heartbeat failed",
core.Instance.ServiceId, core.Instance.InstanceId)
//服务不存在,创建服务
err = s.registerServiceCenter()
if err != nil {
- util.Logger().Errorf(err, "retry to register %s/%s/%s failed.",
+ log.Errorf(err, "retry to register %s/%s/%s failed.",
core.Service.AppId, core.Service.ServiceName, core.Service.Version)
}
}
@@ -200,7 +201,7 @@ func (s *APIServer) graceDone() {
grace.Before(s.MarkForked)
grace.After(s.Stop)
if err := grace.Done(); err != nil {
- util.Logger().Errorf(err, "server reload failed")
+ log.Errorf(err, "server reload failed")
}
}
@@ -241,7 +242,7 @@ func (s *APIServer) startRESTServer() (err error) {
if err != nil {
return
}
- util.Logger().Infof("listen address: %s://%s, host: %s.",
+ log.Infof("listen address: %s://%s, host: %s.",
REST, s.restSrv.Listener.Addr().String(), s.HostName)
s.AddEndpoint(REST, s.restSrv.Listener.Addr().String())
@@ -251,7 +252,7 @@ func (s *APIServer) startRESTServer() (err error) {
if s.isClose {
return
}
- util.Logger().Errorf(err, "error to start REST API server %s", addr)
+ log.Errorf(err, "error to start REST API server %s", addr)
s.err <- err
})
return
@@ -267,7 +268,7 @@ func (s *APIServer) startRPCServer() (err error) {
if err != nil {
return
}
- util.Logger().Infof("listen address: %s://%s, host: %s.",
+ log.Infof("listen address: %s://%s, host: %s.",
RPC, s.rpcSrv.Listener.Addr().String(), s.HostName)
s.AddEndpoint(RPC, s.rpcSrv.Listener.Addr().String())
@@ -277,7 +278,7 @@ func (s *APIServer) startRPCServer() (err error) {
if s.isClose {
return
}
- util.Logger().Errorf(err, "error to start RPC API server %s", addr)
+ log.Errorf(err, "error to start RPC API server %s", addr)
s.err <- err
})
return
@@ -316,7 +317,7 @@ func (s *APIServer) Start() {
ReportScInstance()
- util.Logger().Info("api server is ready")
+ log.Info("api server is ready")
}
func (s *APIServer) Stop() {
@@ -342,7 +343,7 @@ func (s *APIServer) Stop() {
s.goroutine.Close(true)
- util.Logger().Info("api server stopped.")
+ log.Info("api server stopped.")
}
func GetAPIServer() *APIServer {
diff --git a/server/bootstrap/bootstrap.go b/server/bootstrap/bootstrap.go
index f0efb35..e0c4070 100644
--- a/server/bootstrap/bootstrap.go
+++ b/server/bootstrap/bootstrap.go
@@ -56,7 +56,7 @@ import _ "github.com/apache/incubator-servicecomb-service-center/server/admin"
import _ "github.com/apache/incubator-servicecomb-service-center/server/metric"
import (
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/server/handler/auth"
"github.com/apache/incubator-servicecomb-service-center/server/handler/cache"
"github.com/apache/incubator-servicecomb-service-center/server/handler/context"
@@ -69,7 +69,7 @@ import (
)
func init() {
- util.Logger().Info("BootStrap ServiceComb.io Edition")
+ log.Info("BootStrap ServiceComb.io Edition")
// intercept requests before routing.
interceptor.RegisterInterceptFunc(access.Intercept)
diff --git a/server/broker/service.go b/server/broker/service.go
index ec0a96a..dac2b2a 100644
--- a/server/broker/service.go
+++ b/server/broker/service.go
@@ -24,6 +24,7 @@ import (
"strings"
"time"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
"github.com/apache/incubator-servicecomb-service-center/server/broker/brokerpb"
apt "github.com/apache/incubator-servicecomb-service-center/server/core"
@@ -766,7 +767,7 @@ func (*BrokerService) PublishPact(ctx context.Context, in *brokerpb.PublishPactR
// check that the consumer has that vesion in the url
if strings.Compare(consumer.GetVersion(), in.Version) != 0 {
- util.Logger().Errorf(nil,
+ log.Errorf(nil,
"pact publish failed, version (%s) does not exist for consmer", in.Version)
return &brokerpb.PublishPactResponse{
Response: pb.CreateResponse(scerr.ErrInvalidParams, "Consumer Version does not exist."),
diff --git a/server/broker/util.go b/server/broker/util.go
index 9b43341..f09c4aa 100644
--- a/server/broker/util.go
+++ b/server/broker/util.go
@@ -24,6 +24,7 @@ import (
"strconv"
"strings"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
"github.com/apache/incubator-servicecomb-service-center/server/broker/brokerpb"
"github.com/apache/incubator-servicecomb-service-center/server/core"
@@ -32,12 +33,10 @@ import (
scerr "github.com/apache/incubator-servicecomb-service-center/server/error"
"github.com/apache/incubator-servicecomb-service-center/server/infra/registry"
serviceUtil "github.com/apache/incubator-servicecomb-service-center/server/service/util"
- "github.com/go-chassis/paas-lager/third_party/forked/cloudfoundry/lager"
"path/filepath"
- "time"
)
-var PactLogger lager.Logger
+var PactLogger *log.Logger
const (
BROKER_HOME_URL = "/"
@@ -94,13 +93,12 @@ func init() {
if len(core.ServerInfo.Config.LogFilePath) != 0 {
name = filepath.Join(filepath.Dir(core.ServerInfo.Config.LogFilePath), "broker_srvc.log")
}
- PactLogger = util.NewLogger(util.LoggerConfig{
- LoggerLevel: core.ServerInfo.Config.LogLevel,
- LoggerFile: name,
- LogFormatText: core.ServerInfo.Config.LogFormat == "text",
- LogRotatePeriod: 30 * time.Second,
- LogRotateSize: int(core.ServerInfo.Config.LogRotateSize),
- LogBackupCount: int(core.ServerInfo.Config.LogBackupCount),
+ PactLogger = log.NewLogger(log.Config{
+ LoggerLevel: core.ServerInfo.Config.LogLevel,
+ LoggerFile: name,
+ LogFormatText: core.ServerInfo.Config.LogFormat == "text",
+ LogRotateSize: int(core.ServerInfo.Config.LogRotateSize),
+ LogBackupCount: int(core.ServerInfo.Config.LogBackupCount),
})
}
@@ -266,7 +264,7 @@ func StoreData(ctx context.Context, key string, value string) error {
return err
}
-func CreateParticipant(pactLogger lager.Logger, ctx context.Context, participantKey string, participant brokerpb.Participant) (*brokerpb.PublishPactResponse, error) {
+func CreateParticipant(pactLogger *log.Logger, ctx context.Context, participantKey string, participant brokerpb.Participant) (*brokerpb.PublishPactResponse, error) {
data, err := json.Marshal(participant)
if err != nil {
PactLogger.Errorf(nil, "pact publish failed, participant cannot be created.")
@@ -300,7 +298,7 @@ func CreateParticipant(pactLogger lager.Logger, ctx context.Context, participant
return nil, nil
}
-func CreateVersion(pactLogger lager.Logger, ctx context.Context, versionKey string,
+func CreateVersion(pactLogger *log.Logger, ctx context.Context, versionKey string,
version brokerpb.Version) (*brokerpb.PublishPactResponse, error) {
data, err := json.Marshal(version)
if err != nil {
@@ -333,7 +331,7 @@ func CreateVersion(pactLogger lager.Logger, ctx context.Context, versionKey stri
return nil, nil
}
-func CreatePact(pactLogger lager.Logger, ctx context.Context,
+func CreatePact(pactLogger *log.Logger, ctx context.Context,
pactKey string, pact brokerpb.Pact) (*brokerpb.PublishPactResponse, error) {
data, err := json.Marshal(pact)
if err != nil {
@@ -368,7 +366,7 @@ func CreatePact(pactLogger lager.Logger, ctx context.Context,
return nil, nil
}
-func CreatePactVersion(pactLogger lager.Logger, ctx context.Context, pactVersionKey string, pactVersion brokerpb.PactVersion) (*brokerpb.PublishPactResponse, error) {
+func CreatePactVersion(pactLogger *log.Logger, ctx context.Context, pactVersionKey string, pactVersion brokerpb.PactVersion) (*brokerpb.PublishPactResponse, error) {
data, err := json.Marshal(pactVersion)
if err != nil {
PactLogger.Errorf(nil, "pact publish failed, pact version cannot be created.")
@@ -399,7 +397,7 @@ func CreatePactVersion(pactLogger lager.Logger, ctx context.Context, pactVersion
return nil, nil
}
-func CreateVerification(pactLogger lager.Logger, ctx context.Context,
+func CreateVerification(pactLogger *log.Logger, ctx context.Context,
verificationKey string, verification brokerpb.Verification) (*brokerpb.PublishVerificationResponse, error) {
data, err := json.Marshal(verification)
if err != nil {
diff --git a/server/core/backend/backend.go b/server/core/backend/backend.go
index 2b14735..d768205 100644
--- a/server/core/backend/backend.go
+++ b/server/core/backend/backend.go
@@ -18,6 +18,7 @@ package backend
import (
"errors"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
"github.com/apache/incubator-servicecomb-service-center/server/infra/registry"
"github.com/apache/incubator-servicecomb-service-center/server/plugin"
@@ -56,7 +57,7 @@ func Registry() registry.Registry {
for i := 0; registryInstance == nil; i++ {
inst, err := New()
if err != nil {
- util.Logger().Errorf(err, "get register center client failed")
+ log.Errorf(err, "get register center client failed")
}
registryInstance = inst
@@ -66,7 +67,7 @@ func Registry() registry.Registry {
}
t := util.GetBackoff().Delay(i)
- util.Logger().Errorf(nil, "initialize service center failed, retry after %s", t)
+ log.Errorf(nil, "initialize service center failed, retry after %s", t)
<-time.After(t)
}
singletonLock.Unlock()
diff --git a/server/core/backend/cacher_kv.go b/server/core/backend/cacher_kv.go
index 7f97b67..2394a4f 100644
--- a/server/core/backend/cacher_kv.go
+++ b/server/core/backend/cacher_kv.go
@@ -19,6 +19,8 @@ package backend
import (
"errors"
"fmt"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/gopool"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
"github.com/apache/incubator-servicecomb-service-center/server/core"
"github.com/apache/incubator-servicecomb-service-center/server/core/proto"
@@ -40,7 +42,7 @@ type KvCacher struct {
mux sync.Mutex
once sync.Once
cache Cache
- goroutine *util.GoRoutine
+ goroutine *gopool.Pool
}
func (c *KvCacher) Config() *Config {
@@ -62,7 +64,7 @@ func (c *KvCacher) needList() bool {
return false
}
- util.Logger().Debugf("no events come in more then %s, need to list key %s, rev: %d",
+ log.Debugf("no events come in more then %s, need to list key %s, rev: %d",
time.Duration(c.noEventPeriods)*c.Cfg.Timeout, c.Cfg.Key, rev)
c.noEventPeriods = 0
return true
@@ -80,11 +82,11 @@ func (c *KvCacher) doList(cfg ListWatchConfig) error {
evts := c.filter(c.lw.Revision(), kvs)
if ec, kc := len(evts), len(kvs); c.Cfg.DeferHandler != nil && ec == 0 && kc != 0 &&
c.Cfg.DeferHandler.Reset() {
- util.Logger().Warnf("most of the protected data(%d/%d) are recovered",
+ log.Warnf("most of the protected data(%d/%d) are recovered",
kc, c.cache.GetAll(nil))
}
c.sync(evts)
- util.LogDebugOrWarnf(start, "finish to cache key %s, %d items, rev: %d",
+ log.LogDebugOrWarnf(start, "finish to cache key %s, %d items, rev: %d",
c.Cfg.Key, len(kvs), c.lw.Revision())
return nil
@@ -143,7 +145,7 @@ func (c *KvCacher) handleWatcher(watcher Watcher) error {
evt.KV = c.doParse(kv)
}
default:
- util.Logger().Errorf(nil, "unknown KeyValue %v", kv)
+ log.Errorf(nil, "unknown KeyValue %v", kv)
continue
}
if evt.KV == nil {
@@ -152,7 +154,7 @@ func (c *KvCacher) handleWatcher(watcher Watcher) error {
evts = append(evts, evt)
}
c.sync(evts)
- util.LogDebugOrWarnf(start, "finish to handle %d events, prefix: %s, rev: %d",
+ log.LogDebugOrWarnf(start, "finish to handle %d events, prefix: %s, rev: %d",
len(evts), c.Cfg.Key, rev)
}
return nil
@@ -167,7 +169,7 @@ func (c *KvCacher) needDeferHandle(evts []KvEvent) bool {
}
func (c *KvCacher) refresh(ctx context.Context) {
- util.Logger().Debugf("start to list and watch %s", c.Cfg)
+ log.Debugf("start to list and watch %s", c.Cfg)
retries := 0
timer := time.NewTimer(minWaitInterval)
@@ -183,7 +185,7 @@ func (c *KvCacher) refresh(ctx context.Context) {
select {
case <-ctx.Done():
- util.Logger().Debugf("stop to list and watch %s", c.Cfg)
+ log.Debugf("stop to list and watch %s", c.Cfg)
return
case <-timer.C:
timer.Reset(nextPeriod)
@@ -379,11 +381,11 @@ func (c *KvCacher) onEvents(evts []KvEvent) {
case init:
evt.Type = proto.EVT_INIT
case !ok && evt.Type != proto.EVT_CREATE:
- util.Logger().Warnf("unexpected %s event! it should be %s key %s",
+ log.Warnf("unexpected %s event! it should be %s key %s",
evt.Type, proto.EVT_CREATE, key)
evt.Type = proto.EVT_CREATE
case ok && evt.Type != proto.EVT_UPDATE:
- util.Logger().Warnf("unexpected %s event! it should be %s key %s",
+ log.Warnf("unexpected %s event! it should be %s key %s",
evt.Type, proto.EVT_UPDATE, key)
evt.Type = proto.EVT_UPDATE
}
@@ -392,7 +394,7 @@ func (c *KvCacher) onEvents(evts []KvEvent) {
evts[i] = evt
case proto.EVT_DELETE:
if !ok {
- util.Logger().Warnf("unexpected %s event! key %s does not cache",
+ log.Warnf("unexpected %s event! key %s does not cache",
evt.Type, key)
} else {
evt.KV = prevKv
@@ -410,7 +412,7 @@ func (c *KvCacher) onKvEvents(evts []KvEvent) {
return
}
- defer util.RecoverAndReport()
+ defer log.Recover()
for _, evt := range evts {
c.Cfg.OnEvent(evt)
@@ -420,7 +422,7 @@ func (c *KvCacher) onKvEvents(evts []KvEvent) {
func (c *KvCacher) doParse(src *mvccpb.KeyValue) (kv *KeyValue) {
kv = new(KeyValue)
if err := kv.From(c.Cfg.Parser, src); err != nil {
- util.Logger().Errorf(err, "parse %s value failed", util.BytesToStringWithNoCopy(src.Key))
+ log.Errorf(err, "parse %s value failed", util.BytesToStringWithNoCopy(src.Key))
return nil
}
return
@@ -482,7 +484,7 @@ func NewKvCacher(name string, cfg *Config) *KvCacher {
Client: Registry(),
Prefix: cfg.Key,
},
- goroutine: util.NewGo(context.Background()),
+ goroutine: gopool.New(context.Background()),
}
cacher.cache = NewKvCache(name, cfg)
return cacher
diff --git a/server/core/backend/cacher_kv_test.go b/server/core/backend/cacher_kv_test.go
index 82455ec..6f8bbed 100644
--- a/server/core/backend/cacher_kv_test.go
+++ b/server/core/backend/cacher_kv_test.go
@@ -17,7 +17,7 @@
package backend
import (
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/gopool"
"github.com/apache/incubator-servicecomb-service-center/server/core/proto"
"github.com/apache/incubator-servicecomb-service-center/server/infra/registry"
"github.com/coreos/etcd/mvcc/mvccpb"
@@ -72,7 +72,7 @@ func TestNewKvCacher(t *testing.T) {
Cfg: Configure(),
ready: make(chan struct{}),
lw: lw,
- goroutine: util.NewGo(context.Background()),
+ goroutine: gopool.New(context.Background()),
cache: &mockCache{},
}
@@ -95,7 +95,7 @@ func TestNewKvCacher(t *testing.T) {
}),
ready: make(chan struct{}),
lw: lw,
- goroutine: util.NewGo(context.Background()),
+ goroutine: gopool.New(context.Background()),
cache: &mockCache{},
}
diff --git a/server/core/backend/defer_instance.go b/server/core/backend/defer_instance.go
index 095c5b8..dc4ac0a 100644
--- a/server/core/backend/defer_instance.go
+++ b/server/core/backend/defer_instance.go
@@ -17,6 +17,8 @@
package backend
import (
+ "github.com/apache/incubator-servicecomb-service-center/pkg/gopool"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
pb "github.com/apache/incubator-servicecomb-service-center/server/core/proto"
"golang.org/x/net/context"
@@ -52,7 +54,7 @@ func (iedh *InstanceEventDeferHandler) OnCondition(cache Cache, evts []KvEvent)
iedh.pendingCh = make(chan []KvEvent, eventBlockSize)
iedh.deferCh = make(chan KvEvent, eventBlockSize)
iedh.resetCh = make(chan struct{})
- util.Go(iedh.check)
+ gopool.Go(iedh.check)
})
iedh.pendingCh <- evts
@@ -66,7 +68,7 @@ func (iedh *InstanceEventDeferHandler) recoverOrDefer(evt KvEvent) error {
switch evt.Type {
case pb.EVT_CREATE, pb.EVT_UPDATE:
if ok {
- util.Logger().Infof("recovered key %s events", key)
+ log.Infof("recovered key %s events", key)
// return nil // no need to publish event to subscribers?
}
iedh.recover(evt)
@@ -90,7 +92,7 @@ func (iedh *InstanceEventDeferHandler) HandleChan() <-chan KvEvent {
}
func (iedh *InstanceEventDeferHandler) check(ctx context.Context) {
- defer util.RecoverAndReport()
+ defer log.Recover()
t, n := time.NewTimer(DEFAULT_CHECK_WINDOW), false
defer t.Stop()
@@ -115,7 +117,7 @@ func (iedh *InstanceEventDeferHandler) check(ctx context.Context) {
total := iedh.cache.GetAll(nil)
if total > 5 && float64(del) >= float64(total)*iedh.Percent {
iedh.enabled = true
- util.Logger().Warnf("self preservation is enabled, caught %d/%d(>=%.0f%%) DELETE events",
+ log.Warnf("self preservation is enabled, caught %d/%d(>=%.0f%%) DELETE events",
del, total, iedh.Percent*100)
}
@@ -133,20 +135,20 @@ func (iedh *InstanceEventDeferHandler) check(ctx context.Context) {
default:
continue
}
- util.Logger().Warnf("defer handle timed out, removed key is %s", key)
+ log.Warnf("defer handle timed out, removed key is %s", key)
}
iedh.recover(item.event)
}
if iedh.enabled && len(iedh.items) == 0 {
iedh.renew()
- util.Logger().Warnf("self preservation is stopped")
+ log.Warnf("self preservation is stopped")
}
t.Reset(DEFAULT_CHECK_WINDOW)
case <-iedh.resetCh:
iedh.renew()
- util.Logger().Warnf("self preservation is reset")
+ log.Warnf("self preservation is reset")
util.ResetTimer(t, DEFAULT_CHECK_WINDOW)
}
diff --git a/server/core/backend/entity_kv.go b/server/core/backend/entity_kv.go
index 4496137..61d16af 100644
--- a/server/core/backend/entity_kv.go
+++ b/server/core/backend/entity_kv.go
@@ -17,7 +17,7 @@
package backend
import (
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/server/core"
"sync"
)
@@ -58,7 +58,7 @@ func NewKvEntity(name string, cfg *Config) *KvEntity {
entity.Cacher = NewKvCacher(name, cfg)
entity.Indexer = NewCacheIndexer(cfg, entity.Cache())
default:
- util.Logger().Infof(
+ log.Infof(
"core will not cache '%s' and ignore all events of it, cache enabled: %v, init size: %d",
name, core.ServerInfo.Config.EnableCache, cfg.InitSize)
entity.Indexer = NewCommonIndexer(cfg.Key, cfg.Parser)
diff --git a/server/core/backend/indexer_kv.go b/server/core/backend/indexer_kv.go
index d1fb766..c627ee3 100644
--- a/server/core/backend/indexer_kv.go
+++ b/server/core/backend/indexer_kv.go
@@ -18,6 +18,7 @@ package backend
import (
"fmt"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
"github.com/apache/incubator-servicecomb-service-center/server/infra/registry"
"golang.org/x/net/context"
@@ -42,7 +43,7 @@ func (i *CacheIndexer) Search(ctx context.Context, opts ...registry.PluginOpOpti
op.Mode == registry.MODE_NO_CACHE ||
op.Revision > 0 ||
(op.Offset >= 0 && op.Limit > 0) {
- util.Logger().Debugf("search '%s' match special options, request etcd server, opts: %s",
+ log.Debugf("search '%s' match special options, request etcd server, opts: %s",
key, op)
return i.CommonIndexer.Search(ctx, opts...)
}
@@ -62,7 +63,7 @@ func (i *CacheIndexer) Search(ctx context.Context, opts ...registry.PluginOpOpti
return resp, nil
}
- util.Logger().Debugf("can not find any key from %s cache, request etcd server, key: %s",
+ log.Debugf("can not find any key from %s cache, request etcd server, key: %s",
i.Cache.Name(), key)
return i.CommonIndexer.Search(ctx, opts...)
}
@@ -98,7 +99,7 @@ func (i *CacheIndexer) searchByPrefix(op registry.PluginOp) *Response {
kvs := make([]*KeyValue, 0, resp.Count)
i.Cache.GetPrefix(prefix, &kvs)
- util.LogNilOrWarnf(t, "too long to index data[%d] from cache '%s'", len(kvs), i.Cache.Name())
+ log.LogNilOrWarnf(t, "too long to index data[%d] from cache '%s'", len(kvs), i.Cache.Name())
resp.Kvs = kvs
return resp
diff --git a/server/core/backend/lease.go b/server/core/backend/lease.go
index 928e95d..106de63 100644
--- a/server/core/backend/lease.go
+++ b/server/core/backend/lease.go
@@ -18,6 +18,7 @@ package backend
import (
errorsEx "github.com/apache/incubator-servicecomb-service-center/pkg/errors"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
"github.com/apache/incubator-servicecomb-service-center/server/infra/registry"
"golang.org/x/net/context"
@@ -44,7 +45,7 @@ func (lat *LeaseTask) Do(ctx context.Context) (err error) {
recv, start := lat.ReceiveTime(), time.Now()
lat.TTL, err = lat.Client.LeaseRenew(ctx, lat.LeaseID)
if err != nil {
- util.Logger().Errorf(err, "[%s]renew lease %d failed(recv: %s, send: %s), key %s",
+ log.Errorf(err, "[%s]renew lease %d failed(recv: %s, send: %s), key %s",
time.Now().Sub(recv),
lat.LeaseID,
recv.Format(TIME_FORMAT),
@@ -61,7 +62,7 @@ func (lat *LeaseTask) Do(ctx context.Context) (err error) {
cost := time.Now().Sub(recv)
if cost >= 2*time.Second {
- util.Logger().Warnf("[%s]renew lease %d(recv: %s, send: %s), key %s", cost,
+ log.Warnf("[%s]renew lease %d(recv: %s, send: %s), key %s", cost,
lat.LeaseID,
recv.Format(TIME_FORMAT),
start.Format(TIME_FORMAT),
diff --git a/server/core/backend/listwatch_inner.go b/server/core/backend/listwatch_inner.go
index 70b7234..5cf401a 100644
--- a/server/core/backend/listwatch_inner.go
+++ b/server/core/backend/listwatch_inner.go
@@ -18,7 +18,7 @@ package backend
import (
"fmt"
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/server/infra/registry"
"golang.org/x/net/context"
)
@@ -34,7 +34,7 @@ func (lw *innerListWatch) List(op ListWatchConfig) (*registry.PluginResponse, er
otCtx, _ := context.WithTimeout(op.Context, op.Timeout)
resp, err := lw.Client.Do(otCtx, registry.WatchPrefixOpOptions(lw.Prefix)...)
if err != nil {
- util.Logger().Errorf(err, "list prefix %s failed, current rev: %d", lw.Prefix, lw.Revision())
+ log.Errorf(err, "list prefix %s failed, current rev: %d", lw.Prefix, lw.Revision())
return nil, err
}
lw.setRevision(resp.Revision)
@@ -72,7 +72,7 @@ func (lw *innerListWatch) DoWatch(ctx context.Context, f func(*registry.PluginRe
err := lw.Client.Watch(ctx, opts...)
if err != nil { // compact可能会导致watch失败 or message body size lager than 4MB
- util.Logger().Errorf(err, "watch prefix %s failed, start rev: %d+1->%d->0", lw.Prefix, rev, lw.Revision())
+ log.Errorf(err, "watch prefix %s failed, start rev: %d+1->%d->0", lw.Prefix, rev, lw.Revision())
lw.setRevision(0)
f(nil)
diff --git a/server/core/backend/store.go b/server/core/backend/store.go
index 6eb01e7..8c175ba 100644
--- a/server/core/backend/store.go
+++ b/server/core/backend/store.go
@@ -19,6 +19,8 @@ package backend
import (
"errors"
"fmt"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/gopool"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/task"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
"github.com/apache/incubator-servicecomb-service-center/server/infra/registry"
@@ -37,7 +39,7 @@ type KvStore struct {
taskService task.TaskService
lock sync.RWMutex
ready chan struct{}
- goroutine *util.GoRoutine
+ goroutine *gopool.Pool
isClose bool
rev int64
}
@@ -46,7 +48,7 @@ func (s *KvStore) Initialize() {
s.entities = util.NewConcurrentMap(0)
s.taskService = task.NewTaskService()
s.ready = make(chan struct{})
- s.goroutine = util.NewGo(context.Background())
+ s.goroutine = gopool.New(context.Background())
}
func (s *KvStore) OnCacheEvent(evt KvEvent) {
@@ -72,7 +74,7 @@ func (s *KvStore) getOrCreateEntity(t StoreType) Entity {
return e, nil
})
if err != nil {
- util.Logger().Errorf(err, "can not find entity '%s', new default one", t.String())
+ log.Errorf(err, "can not find entity '%s', new default one", t.String())
return DefaultKvEntity()
}
@@ -95,7 +97,7 @@ func (s *KvStore) store(ctx context.Context) {
util.SafeCloseChan(s.ready)
- util.Logger().Debugf("all entities are ready")
+ log.Debugf("all entities are ready")
}
func (s *KvStore) closed() bool {
@@ -119,7 +121,7 @@ func (s *KvStore) Stop() {
util.SafeCloseChan(s.ready)
- util.Logger().Debugf("store daemon stopped")
+ log.Debugf("store daemon stopped")
}
func (s *KvStore) Ready() <-chan struct{} {
@@ -158,7 +160,7 @@ func (s *KvStore) Install(e Extension) (id StoreType, err error) {
return
}
- util.Logger().Infof("install new store entity %d:%s->%s", id, e.Name(), e.Config().Key)
+ log.Infof("install new store entity %d:%s->%s", id, e.Name(), e.Config().Key)
return
}
@@ -192,7 +194,7 @@ func (s *KvStore) KeepAlive(ctx context.Context, opts ...registry.PluginOpOption
t := NewLeaseAsyncTask(op)
if op.Mode == registry.MODE_NO_CACHE {
- util.Logger().Debugf("keep alive lease WitchNoCache, request etcd server, op: %s", op)
+ log.Debugf("keep alive lease WitchNoCache, request etcd server, op: %s", op)
err := t.Do(ctx)
ttl := t.TTL
return ttl, err
diff --git a/server/core/backend/watcher_inner.go b/server/core/backend/watcher_inner.go
index 40ec466..683e442 100644
--- a/server/core/backend/watcher_inner.go
+++ b/server/core/backend/watcher_inner.go
@@ -17,7 +17,8 @@
package backend
import (
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/gopool"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/server/infra/registry"
"golang.org/x/net/context"
"sync"
@@ -39,7 +40,7 @@ func (w *innerWatcher) EventBus() <-chan *registry.PluginResponse {
func (w *innerWatcher) process(_ context.Context) {
stopCh := make(chan struct{})
ctx, cancel := context.WithTimeout(w.Cfg.Context, w.Cfg.Timeout)
- util.Go(func(_ context.Context) {
+ gopool.Go(func(_ context.Context) {
defer close(stopCh)
w.lw.DoWatch(ctx, w.sendEvent)
})
@@ -54,7 +55,7 @@ func (w *innerWatcher) process(_ context.Context) {
}
func (w *innerWatcher) sendEvent(resp *registry.PluginResponse) {
- defer util.RecoverAndReport()
+ defer log.Recover()
w.bus <- resp
}
@@ -77,6 +78,6 @@ func newInnerWatcher(lw ListWatch, cfg ListWatchConfig) *innerWatcher {
bus: make(chan *registry.PluginResponse, EVENT_BUS_MAX_SIZE),
stopCh: make(chan struct{}),
}
- util.Go(w.process)
+ gopool.Go(w.process)
return w
}
diff --git a/server/core/core.go b/server/core/core.go
index 8562ada..1b6bf98 100644
--- a/server/core/core.go
+++ b/server/core/core.go
@@ -21,8 +21,8 @@ import (
"flag"
"fmt"
"github.com/apache/incubator-servicecomb-service-center/pkg/grace"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/plugin"
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
"github.com/apache/incubator-servicecomb-service-center/version"
"os"
"os/signal"
@@ -63,28 +63,29 @@ func initCommandLine() {
}
func printVersion() {
- util.Logger().Infof("service center version: %s", version.Ver().Version)
- util.Logger().Infof("Build tag: %s", version.Ver().BuildTag)
- util.Logger().Infof("Go version: %s", runtime.Version())
- util.Logger().Infof("Go OS/Arch: %s/%s", runtime.GOOS, runtime.GOARCH)
+ log.Infof("service center version: %s", version.Ver().Version)
+ log.Infof("Build tag: %s", version.Ver().BuildTag)
+ log.Infof("Go version: %s", runtime.Version())
+ log.Infof("Go OS/Arch: %s/%s", runtime.GOOS, runtime.GOARCH)
cores := runtime.NumCPU()
runtime.GOMAXPROCS(cores)
- util.Logger().Infof("service center is running simultaneously with %d CPU cores", cores)
+ log.Infof("service center is running simultaneously with %d CPU cores", cores)
}
func initLogger() {
- util.InitGlobalLogger(util.LoggerConfig{
- LoggerLevel: ServerInfo.Config.LogLevel,
- LoggerFile: os.ExpandEnv(ServerInfo.Config.LogFilePath),
- LogFormatText: ServerInfo.Config.LogFormat == "text",
- LogRotatePeriod: 30 * time.Second,
- LogRotateSize: int(ServerInfo.Config.LogRotateSize),
- LogBackupCount: int(ServerInfo.Config.LogBackupCount),
+ log.SetGlobal(log.Config{
+ LoggerLevel: ServerInfo.Config.LogLevel,
+ LoggerFile: os.ExpandEnv(ServerInfo.Config.LogFilePath),
+ LogFormatText: ServerInfo.Config.LogFormat == "text",
+ LogRotateSize: int(ServerInfo.Config.LogRotateSize),
+ LogBackupCount: int(ServerInfo.Config.LogBackupCount),
})
}
func handleSignals() {
+ defer log.Sync()
+
sigCh := make(chan os.Signal)
signal.Notify(sigCh,
syscall.SIGINT,
@@ -96,10 +97,10 @@ func handleSignals() {
switch sig {
case syscall.SIGINT, syscall.SIGKILL, syscall.SIGTERM:
<-time.After(wait)
- util.Logger().Warnf("waiting for server response timed out(%s), force shutdown", wait)
+ log.Warnf("waiting for server response timed out(%s), force shutdown", wait)
os.Exit(1)
default:
- util.Logger().Warnf("received signal '%v'", sig)
+ log.Warnf("received signal '%v'", sig)
}
}
}
diff --git a/server/govern/controller_v4.go b/server/govern/controller_v4.go
index 93d29cc..23d3219 100644
--- a/server/govern/controller_v4.go
+++ b/server/govern/controller_v4.go
@@ -19,8 +19,8 @@ package govern
import (
"net/http"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/rest"
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
"github.com/apache/incubator-servicecomb-service-center/server/core"
pb "github.com/apache/incubator-servicecomb-service-center/server/core/proto"
scerr "github.com/apache/incubator-servicecomb-service-center/server/error"
@@ -71,7 +71,7 @@ func (governService *GovernServiceControllerV4) GetGraph(w http.ResponseWriter,
}
proResp, err := core.ServiceAPI.GetConsumerDependencies(ctx, proRequest)
if err != nil {
- util.Logger().Errorf(err, "get providers failed. service %s", service.ServiceId)
+ log.Errorf(err, "get providers failed. service %s", service.ServiceId)
controller.WriteResponse(w, proResp.Response, nil)
return
}
diff --git a/server/govern/service.go b/server/govern/service.go
index 247a35b..7384a65 100644
--- a/server/govern/service.go
+++ b/server/govern/service.go
@@ -17,6 +17,8 @@
package govern
import (
+ "github.com/apache/incubator-servicecomb-service-center/pkg/gopool"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
apt "github.com/apache/incubator-servicecomb-service-center/server/core"
"github.com/apache/incubator-servicecomb-service-center/server/core/backend"
@@ -78,7 +80,7 @@ func (governService *GovernService) GetServicesInfo(ctx context.Context, in *pb.
//获取所有服务
services, err := serviceUtil.GetAllServiceUtil(ctx)
if err != nil {
- util.Logger().Errorf(err, "Get all services for govern service failed.")
+ log.Errorf(err, "Get all services for govern service failed.")
return &pb.GetServicesInfoResponse{
Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
}, err
@@ -151,7 +153,7 @@ func (governService *GovernService) GetServiceDetail(ctx context.Context, in *pb
}
versions, err := getServiceAllVersions(ctx, key)
if err != nil {
- util.Logger().Errorf(err, "Get service all version failed.")
+ log.Errorf(err, "Get service all version failed.")
return &pb.GetServiceDetailResponse{
Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
}, err
@@ -252,7 +254,7 @@ func getSchemaInfoUtil(ctx context.Context, domainProject string, serviceId stri
registry.WithStrKey(key),
registry.WithPrefix())
if err != nil {
- util.Logger().Errorf(err, "Get schema failed")
+ log.Errorf(err, "Get schema failed")
return make([]*pb.Schema, 0), err
}
schemas := make([]*pb.Schema, 0, len(resp.Kvs))
@@ -280,14 +282,14 @@ func getServiceDetailUtil(ctx context.Context, serviceDetailOpt ServiceDetailOpt
case "tags":
tags, err := serviceUtil.GetTagsUtils(ctx, domainProject, serviceId)
if err != nil {
- util.Logger().Errorf(err, "Get all tags for govern service failed.")
+ log.Errorf(err, "Get all tags for govern service failed.")
return nil, err
}
serviceDetail.Tags = tags
case "rules":
rules, err := serviceUtil.GetRulesUtil(ctx, domainProject, serviceId)
if err != nil {
- util.Logger().Errorf(err, "Get all rules for govern service failed.")
+ log.Errorf(err, "Get all rules for govern service failed.")
return nil, err
}
for _, rule := range rules {
@@ -298,7 +300,7 @@ func getServiceDetailUtil(ctx context.Context, serviceDetailOpt ServiceDetailOpt
if serviceDetailOpt.countOnly {
instanceCount, err := serviceUtil.GetInstanceCountOfOneService(ctx, domainProject, serviceId)
if err != nil {
- util.Logger().Errorf(err, "Get service's instances count for govern service failed.")
+ log.Errorf(err, "Get service's instances count for govern service failed.")
return nil, err
}
serviceDetail.Statics.Instances = &pb.StInstance{
@@ -307,14 +309,14 @@ func getServiceDetailUtil(ctx context.Context, serviceDetailOpt ServiceDetailOpt
}
instances, err := serviceUtil.GetAllInstancesOfOneService(ctx, domainProject, serviceId)
if err != nil {
- util.Logger().Errorf(err, "Get service's all instances for govern service failed.")
+ log.Errorf(err, "Get service's all instances for govern service failed.")
return nil, err
}
serviceDetail.Instances = instances
case "schemas":
schemas, err := getSchemaInfoUtil(ctx, domainProject, serviceId)
if err != nil {
- util.Logger().Errorf(err, "Get service's all schemas for govern service failed.")
+ log.Errorf(err, "Get service's all schemas for govern service failed.")
return nil, err
}
serviceDetail.SchemaInfos = schemas
@@ -325,14 +327,14 @@ func getServiceDetailUtil(ctx context.Context, serviceDetailOpt ServiceDetailOpt
serviceUtil.WithoutSelfDependency(),
serviceUtil.WithSameDomainProject())
if err != nil {
- util.Logger().Errorf(err, "Get service's all consumers for govern service failed.")
+ log.Errorf(err, "Get service's all consumers for govern service failed.")
return nil, err
}
providers, err := dr.GetDependencyProviders(
serviceUtil.WithoutSelfDependency(),
serviceUtil.WithSameDomainProject())
if err != nil {
- util.Logger().Errorf(err, "Get service's all providers for govern service failed.")
+ log.Errorf(err, "Get service's all providers for govern service failed.")
return nil, err
}
@@ -341,7 +343,7 @@ func getServiceDetailUtil(ctx context.Context, serviceDetailOpt ServiceDetailOpt
case "":
continue
default:
- util.Logger().Errorf(nil, "option %s from request is invalid.", opt)
+ log.Errorf(nil, "option %s from request is invalid.", opt)
}
}
return serviceDetail, nil
@@ -387,7 +389,7 @@ func statistics(ctx context.Context) (*pb.Statistics, error) {
result.Apps.Count = int64(len(app))
respGetInstanceCountByDomain := make(chan GetInstanceCountByDomainResponse, 1)
- util.Go(func(_ context.Context) {
+ gopool.Go(func(_ context.Context) {
getInstanceCountByDomain(ctx, respGetInstanceCountByDomain)
})
@@ -440,7 +442,7 @@ func getInstanceCountByDomain(ctx context.Context, resp chan GetInstanceCountByD
registry.WithCountOnly())
respIns, err := backend.Store().Instance().Search(ctx, instOpts...)
if err != nil {
- util.Logger().Errorf(err, "get instance count under same domainId %s", domainId)
+ log.Errorf(err, "get instance count under same domainId %s", domainId)
}
resp <- GetInstanceCountByDomainResponse{
err: err,
diff --git a/server/handler/auth/auth.go b/server/handler/auth/auth.go
index c01217d..8ccd64c 100644
--- a/server/handler/auth/auth.go
+++ b/server/handler/auth/auth.go
@@ -18,8 +18,8 @@ package auth
import (
"github.com/apache/incubator-servicecomb-service-center/pkg/chain"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/rest"
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
scerr "github.com/apache/incubator-servicecomb-service-center/server/error"
"github.com/apache/incubator-servicecomb-service-center/server/plugin"
"github.com/apache/incubator-servicecomb-service-center/server/rest/controller"
@@ -37,7 +37,7 @@ func (h *AuthRequest) Handle(i *chain.Invocation) {
return
}
- util.Logger().Errorf(err, "authenticate request failed, %s %s", r.Method, r.RequestURI)
+ log.Errorf(err, "authenticate request failed, %s %s", r.Method, r.RequestURI)
w := i.Context().Value(rest.CTX_RESPONSE).(http.ResponseWriter)
controller.WriteError(w, scerr.ErrUnauthorized, err.Error())
diff --git a/server/handler/context/v3.go b/server/handler/context/v3.go
index c4c10d9..f063006 100644
--- a/server/handler/context/v3.go
+++ b/server/handler/context/v3.go
@@ -18,6 +18,7 @@ package context
import (
"errors"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
"github.com/apache/incubator-servicecomb-service-center/server/core"
"net/http"
@@ -44,7 +45,7 @@ func (v *v3Context) Do(r *http.Request) error {
if len(domain) == 0 {
err := errors.New("Header does not contain domain.")
- util.Logger().Errorf(err, "Invalid Request URI %s", r.RequestURI)
+ log.Errorf(err, "Invalid Request URI %s", r.RequestURI)
return err
}
util.SetDomain(r.Context(), domain)
diff --git a/server/handler/context/v4.go b/server/handler/context/v4.go
index 7fea2c2..95b34df 100644
--- a/server/handler/context/v4.go
+++ b/server/handler/context/v4.go
@@ -18,6 +18,7 @@ package context
import (
"errors"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
"github.com/apache/incubator-servicecomb-service-center/server/core"
"net/http"
@@ -40,7 +41,7 @@ func (v *v4Context) Do(r *http.Request) error {
domain = r.Header.Get("X-Domain-Name")
if len(domain) == 0 {
err := errors.New("Header does not contain domain.")
- util.Logger().Errorf(err, "Invalid Request URI %s", r.RequestURI)
+ log.Errorf(err, "Invalid Request URI %s", r.RequestURI)
return err
}
util.SetDomain(r.Context(), domain)
diff --git a/server/handler/metric/metric.go b/server/handler/metric/metric.go
index 6dc977e..0fdc76b 100644
--- a/server/handler/metric/metric.go
+++ b/server/handler/metric/metric.go
@@ -18,8 +18,8 @@ package metric
import (
"github.com/apache/incubator-servicecomb-service-center/pkg/chain"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/rest"
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
svr "github.com/apache/incubator-servicecomb-service-center/server/rest"
"net/http"
"time"
@@ -37,7 +37,7 @@ func (h *MetricsHandler) Handle(i *chain.Invocation) {
w, r := i.Context().Value(rest.CTX_RESPONSE).(http.ResponseWriter),
i.Context().Value(rest.CTX_REQUEST).(*http.Request)
svr.ReportRequestCompleted(w, r, start)
- util.LogNilOrWarnf(start, "%s %s", r.Method, r.RequestURI)
+ log.LogNilOrWarnf(start, "%s %s", r.Method, r.RequestURI)
}))
}
diff --git a/server/infra/quota/quota.go b/server/infra/quota/quota.go
index b4f8bb4..ec61a98 100644
--- a/server/infra/quota/quota.go
+++ b/server/infra/quota/quota.go
@@ -49,14 +49,29 @@ var (
)
type ApplyQuotaResult struct {
- Reporter QuotaReporter
- Err *scerr.Error
+ Err *scerr.Error
+
+ reporter QuotaReporter
+}
+
+func (r *ApplyQuotaResult) ReportUsedQuota(ctx context.Context) error {
+ if r == nil || r.reporter == nil {
+ return nil
+ }
+ return r.reporter.ReportUsedQuota(ctx)
+}
+
+func (r *ApplyQuotaResult) Close(ctx context.Context) {
+ if r == nil || r.reporter == nil {
+ return
+ }
+ r.reporter.Close(ctx)
}
func NewApplyQuotaResult(reporter QuotaReporter, err *scerr.Error) *ApplyQuotaResult {
return &ApplyQuotaResult{
- reporter,
- err,
+ reporter: reporter,
+ Err: err,
}
}
@@ -83,7 +98,7 @@ type QuotaManager interface {
type QuotaReporter interface {
ReportUsedQuota(ctx context.Context) error
- Close()
+ Close(ctx context.Context)
}
type ResourceType int
diff --git a/server/infra/registry/registry.go b/server/infra/registry/registry.go
index 62adac5..13027d2 100644
--- a/server/infra/registry/registry.go
+++ b/server/infra/registry/registry.go
@@ -19,7 +19,7 @@ package registry
import (
"bytes"
"fmt"
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/server/core"
"github.com/astaxie/beego"
"github.com/coreos/etcd/mvcc/mvccpb"
@@ -48,19 +48,19 @@ func RegistryConfig() *Config {
defaultRegistryConfig.ClusterAddresses = beego.AppConfig.DefaultString("manager_cluster", "http://127.0.0.1:2379")
defaultRegistryConfig.DialTimeout, err = time.ParseDuration(beego.AppConfig.DefaultString("registry_timeout", "30s"))
if err != nil {
- util.Logger().Errorf(err, "connect_timeout is invalid, use default time %s", defaultDialTimeout)
+ log.Errorf(err, "connect_timeout is invalid, use default time %s", defaultDialTimeout)
defaultRegistryConfig.DialTimeout = defaultDialTimeout
}
defaultRegistryConfig.RequestTimeOut, err = time.ParseDuration(beego.AppConfig.DefaultString("registry_timeout", "30s"))
if err != nil {
- util.Logger().Errorf(err, "registry_timeout is invalid, use default time %s", defaultRequestTimeout)
+ log.Errorf(err, "registry_timeout is invalid, use default time %s", defaultRequestTimeout)
defaultRegistryConfig.RequestTimeOut = defaultRequestTimeout
}
defaultRegistryConfig.SslEnabled = core.ServerInfo.Config.SslEnabled &&
strings.Index(strings.ToLower(defaultRegistryConfig.ClusterAddresses), "https://") >= 0
defaultRegistryConfig.AutoSyncInterval, err = time.ParseDuration(core.ServerInfo.Config.AutoSyncInterval)
if err != nil {
- util.Logger().Errorf(err, "auto_sync_interval is invalid")
+ log.Errorf(err, "auto_sync_interval is invalid")
}
})
return &defaultRegistryConfig
diff --git a/server/interceptor/cors/cors.go b/server/interceptor/cors/cors.go
index 079bc77..6d3b8c1 100644
--- a/server/interceptor/cors/cors.go
+++ b/server/interceptor/cors/cors.go
@@ -18,7 +18,7 @@ package cors
import (
"errors"
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/rs/cors"
"net/http"
)
@@ -35,7 +35,7 @@ func init() {
func Intercept(w http.ResponseWriter, r *http.Request) (err error) {
CORS.HandlerFunc(w, r)
if r.Method == "OPTIONS" {
- util.Logger().Debugf("identify the current request is a CORS, url: %s", r.RequestURI)
+ log.Debugf("identify the current request is a CORS, url: %s", r.RequestURI)
err = errors.New("Handle the preflight request")
}
return
diff --git a/server/interceptor/interceptors.go b/server/interceptor/interceptors.go
index 30441ef..c486882 100644
--- a/server/interceptor/interceptors.go
+++ b/server/interceptor/interceptors.go
@@ -18,6 +18,7 @@ package interceptor
import (
errorsEx "github.com/apache/incubator-servicecomb-service-center/pkg/errors"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
"net/http"
)
@@ -47,14 +48,14 @@ func RegisterInterceptFunc(intc InterceptorFunc) {
function: intc,
})
- util.Logger().Infof("Intercept %s", intc.Name())
+ log.Infof("Intercept %s", intc.Name())
}
func InvokeInterceptors(w http.ResponseWriter, req *http.Request) (err error) {
var intc *Interception
defer func() {
if itf := recover(); itf != nil {
- util.LogPanic(itf)
+ log.LogPanic(itf)
err = errorsEx.RaiseError(itf)
diff --git a/server/metric/gatherer.go b/server/metric/gatherer.go
index c3abb8b..4d07bae 100644
--- a/server/metric/gatherer.go
+++ b/server/metric/gatherer.go
@@ -17,7 +17,8 @@
package metric
import (
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/gopool"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
pm "github.com/prometheus/client_golang/prometheus"
"golang.org/x/net/context"
"strings"
@@ -54,7 +55,7 @@ func (mm *MetricsGatherer) Start() {
}
mm.closed = false
- util.Go(mm.loop)
+ gopool.Go(mm.loop)
mm.lock.Unlock()
}
@@ -67,7 +68,7 @@ func (mm *MetricsGatherer) loop(ctx context.Context) {
return
case <-ticker.C:
if err := mm.Collect(); err != nil {
- util.Logger().Errorf(err, "metrics collect failed.")
+ log.Errorf(err, "metrics collect failed.")
return
}
diff --git a/server/metric/reporter.go b/server/metric/reporter.go
index 1dd6d80..d19a849 100644
--- a/server/metric/reporter.go
+++ b/server/metric/reporter.go
@@ -16,7 +16,7 @@
*/
package metric
-import "github.com/apache/incubator-servicecomb-service-center/pkg/util"
+import "github.com/apache/incubator-servicecomb-service-center/pkg/log"
var reporters = make(map[string]Reporter)
@@ -31,7 +31,7 @@ func (*noopReporter) Report() {}
func RegisterReporter(name string, r Reporter) {
reporters[name] = r
- util.Logger().Infof("register metrics reporter '%s'", name)
+ log.Infof("register metrics reporter '%s'", name)
}
func Report() {
diff --git a/server/plugin/infra/quota/buildin/buildin.go b/server/plugin/infra/quota/buildin/buildin.go
index 0ca8316..a4eb7b0 100644
--- a/server/plugin/infra/quota/buildin/buildin.go
+++ b/server/plugin/infra/quota/buildin/buildin.go
@@ -17,7 +17,7 @@
package buildin
import (
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/server/infra/quota"
mgr "github.com/apache/incubator-servicecomb-service-center/server/plugin"
"golang.org/x/net/context"
@@ -28,7 +28,7 @@ func init() {
}
func New() mgr.PluginInstance {
- util.Logger().Infof("quota init, service: %d, instance: %d, schema: %d/service, tag: %d/service, rule: %d/service",
+ log.Infof("quota init, service: %d, instance: %d, schema: %d/service, tag: %d/service, rule: %d/service",
quota.DefaultServiceQuota, quota.DefaultInstanceQuota,
quota.DefaultSchemaQuota, quota.DefaultTagQuota, quota.DefaultRuleQuota)
return &BuildInQuota{}
@@ -45,7 +45,6 @@ func (q *BuildInQuota) Apply4Quotas(ctx context.Context, res *quota.ApplyQuotaRe
}
return CommonQuotaCheck(ctx, res, resourceQuota(res.QuotaType), resourceLimitHandler)
-
}
//向配额中心上报配额使用量
diff --git a/server/plugin/infra/quota/buildin/common.go b/server/plugin/infra/quota/buildin/common.go
index 5b269e1..d31ef8c 100644
--- a/server/plugin/infra/quota/buildin/common.go
+++ b/server/plugin/infra/quota/buildin/common.go
@@ -17,8 +17,9 @@
package buildin
import (
+ "errors"
"fmt"
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/server/core"
"github.com/apache/incubator-servicecomb-service-center/server/core/backend"
scerr "github.com/apache/incubator-servicecomb-service-center/server/error"
@@ -33,16 +34,22 @@ type GetLimitQuota func() int64
func CommonQuotaCheck(ctx context.Context, res *quota.ApplyQuotaResource,
getLimitQuota GetLimitQuota, getCurUsedNum GetCurUsedNum) *quota.ApplyQuotaResult {
+ if res == nil || getLimitQuota == nil || getCurUsedNum == nil {
+ err := errors.New("invalid parameters")
+ log.Errorf(err, "quota check failed")
+ return quota.NewApplyQuotaResult(nil, scerr.NewError(scerr.ErrInternal, err.Error()))
+ }
+
limitQuota := getLimitQuota()
curNum, err := getCurUsedNum(ctx, res)
if err != nil {
- util.Logger().Errorf(err, "%s quota check failed", res.QuotaType)
+ log.Errorf(err, "%s quota check failed", res.QuotaType)
return quota.NewApplyQuotaResult(nil, scerr.NewError(scerr.ErrInternal, err.Error()))
}
if curNum+res.QuotaSize > limitQuota {
mes := fmt.Sprintf("no quota to create %s, max num is %d, curNum is %d, apply num is %d",
res.QuotaType, limitQuota, curNum, res.QuotaSize)
- util.Logger().Errorf(nil, mes)
+ log.Errorf(nil, mes)
return quota.NewApplyQuotaResult(nil, scerr.NewError(scerr.ErrNotEnoughQuota, mes))
}
return quota.NewApplyQuotaResult(nil, nil)
diff --git a/server/plugin/infra/quota/buildin/common_test.go b/server/plugin/infra/quota/buildin/common_test.go
new file mode 100644
index 0000000..a3c13a7
--- /dev/null
+++ b/server/plugin/infra/quota/buildin/common_test.go
@@ -0,0 +1,85 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You 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 buildin
+
+import (
+ "errors"
+ "github.com/apache/incubator-servicecomb-service-center/server/infra/quota"
+ "golang.org/x/net/context"
+ "testing"
+)
+
+func TestCommonQuotaCheck(t *testing.T) {
+ // case: invalid input
+ rst := CommonQuotaCheck(context.Background(), nil, func() int64 {
+ return 1
+ }, func(ctx context.Context, resource *quota.ApplyQuotaResource) (int64, error) {
+ return 0, nil
+ })
+ if rst.Err == nil || !rst.Err.InternalError() {
+ t.Fatalf("TestCommonQuotaCheck failed")
+ }
+ rst = CommonQuotaCheck(context.Background(), "a.ApplyQuotaResource{}, nil, func(ctx context.Context, resource *quota.ApplyQuotaResource) (int64, error) {
+ return 0, nil
+ })
+ if rst.Err == nil || !rst.Err.InternalError() {
+ t.Fatalf("TestCommonQuotaCheck failed")
+ }
+ rst = CommonQuotaCheck(context.Background(), "a.ApplyQuotaResource{}, func() int64 {
+ return 1
+ }, nil)
+ if rst.Err == nil || !rst.Err.InternalError() {
+ t.Fatalf("TestCommonQuotaCheck failed")
+ }
+
+ // case: error
+ rst = CommonQuotaCheck(context.Background(), "a.ApplyQuotaResource{
+ QuotaType: quota.MicroServiceQuotaType,
+ QuotaSize: 1,
+ }, func() int64 {
+ return 1
+ }, func(_ context.Context, _ *quota.ApplyQuotaResource) (int64, error) {
+ return 0, errors.New("error")
+ })
+ if rst.Err == nil || !rst.Err.InternalError() {
+ t.Fatalf("TestCommonQuotaCheck failed %v", rst.Err)
+ }
+
+ // case: normal
+ rst = CommonQuotaCheck(context.Background(), "a.ApplyQuotaResource{
+ QuotaType: quota.MicroServiceQuotaType,
+ QuotaSize: 1,
+ }, func() int64 {
+ return 1
+ }, func(_ context.Context, _ *quota.ApplyQuotaResource) (int64, error) {
+ return 0, nil
+ })
+ if rst.Err != nil {
+ t.Fatalf("TestCommonQuotaCheck failed %v", rst.Err)
+ }
+
+ rst = CommonQuotaCheck(context.Background(), "a.ApplyQuotaResource{
+ QuotaType: quota.MicroServiceQuotaType,
+ QuotaSize: 1,
+ }, func() int64 {
+ return 1
+ }, func(_ context.Context, _ *quota.ApplyQuotaResource) (int64, error) {
+ return 1, nil
+ })
+ if rst.Err == nil || rst.Err.InternalError() {
+ t.Fatalf("TestCommonQuotaCheck failed %v", rst.Err)
+ }
+}
diff --git a/server/plugin/infra/quota/unlimit/unlimit.go b/server/plugin/infra/quota/unlimit/unlimit.go
index b640ec1..7658284 100644
--- a/server/plugin/infra/quota/unlimit/unlimit.go
+++ b/server/plugin/infra/quota/unlimit/unlimit.go
@@ -17,7 +17,7 @@
package unlimit
import (
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/server/infra/quota"
mgr "github.com/apache/incubator-servicecomb-service-center/server/plugin"
"github.com/astaxie/beego"
@@ -42,7 +42,7 @@ type Unlimit struct {
}
func New() mgr.PluginInstance {
- util.Logger().Infof("quota init, all resources are unlimited")
+ log.Infof("quota init, all resources are unlimited")
return &Unlimit{}
}
diff --git a/server/plugin/infra/registry/buildin/buildin.go b/server/plugin/infra/registry/buildin/buildin.go
index 3794da0..fd9a0d5 100644
--- a/server/plugin/infra/registry/buildin/buildin.go
+++ b/server/plugin/infra/registry/buildin/buildin.go
@@ -18,7 +18,7 @@ package buildin
import (
"fmt"
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/server/infra/registry"
mgr "github.com/apache/incubator-servicecomb-service-center/server/plugin"
"golang.org/x/net/context"
@@ -35,7 +35,7 @@ type BuildinRegistry struct {
}
func (ec *BuildinRegistry) safeClose(chan int) {
- defer util.RecoverAndReport()
+ defer log.Recover()
close(ec.ready)
}
func (ec *BuildinRegistry) Err() (err <-chan error) {
diff --git a/server/plugin/infra/registry/embededetcd/embededetcd.go b/server/plugin/infra/registry/embededetcd/embededetcd.go
index f39257a..20e7525 100644
--- a/server/plugin/infra/registry/embededetcd/embededetcd.go
+++ b/server/plugin/infra/registry/embededetcd/embededetcd.go
@@ -21,6 +21,8 @@ import (
"errors"
"fmt"
errorsEx "github.com/apache/incubator-servicecomb-service-center/pkg/errors"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/gopool"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
"github.com/apache/incubator-servicecomb-service-center/server/infra/registry"
mgr "github.com/apache/incubator-servicecomb-service-center/server/plugin"
@@ -47,7 +49,7 @@ type EtcdEmbed struct {
Embed *embed.Etcd
err chan error
ready chan int
- goroutine *util.GoRoutine
+ goroutine *gopool.Pool
}
func (s *EtcdEmbed) Err() <-chan error {
@@ -63,7 +65,7 @@ func (s *EtcdEmbed) Close() {
s.Embed.Close()
}
s.goroutine.Close(true)
- util.Logger().Debugf("embedded etcd client stopped.")
+ log.Debugf("embedded etcd client stopped.")
}
func (s *EtcdEmbed) getPrefixEndKey(prefix []byte) []byte {
@@ -225,24 +227,24 @@ func (s *EtcdEmbed) Compact(ctx context.Context, reserve int64) error {
curRev := s.getLeaderCurrentRevision(ctx)
revToCompact := max(0, curRev-reserve)
if revToCompact <= 0 {
- util.Logger().Infof("revision is %d, <=%d, no nead to compact", curRev, reserve)
+ log.Infof("revision is %d, <=%d, no nead to compact", curRev, reserve)
return nil
}
- util.Logger().Infof("Compacting... revision is %d(current: %d, reserve %d)", revToCompact, curRev, reserve)
+ log.Infof("Compacting... revision is %d(current: %d, reserve %d)", revToCompact, curRev, reserve)
_, err := s.Embed.Server.Compact(ctx, &etcdserverpb.CompactionRequest{
Revision: revToCompact,
Physical: true,
})
if err != nil {
- util.Logger().Errorf(err, "Compact locally failed, revision is %d(current: %d, reserve %d)",
+ log.Errorf(err, "Compact locally failed, revision is %d(current: %d, reserve %d)",
revToCompact, curRev, reserve)
return err
}
- util.Logger().Infof("Compacted locally, revision is %d(current: %d, reserve %d)", revToCompact, curRev, reserve)
+ log.Infof("Compacted locally, revision is %d(current: %d, reserve %d)", revToCompact, curRev, reserve)
// TODO defragment
- util.Logger().Infof("Defraged locally")
+ log.Infof("Defraged locally")
return nil
}
@@ -256,7 +258,7 @@ func (s *EtcdEmbed) PutNoOverride(ctx context.Context, opts ...registry.PluginOp
resp, err := s.TxnWithCmp(ctx, []registry.PluginOp{op}, []registry.CompareOp{
registry.OpCmp(registry.CmpCreateRev(op.Key), registry.CMP_EQUAL, 0),
}, nil)
- util.Logger().Debugf("response %s %v %v", op.Key, resp.Succeeded, resp.Revision)
+ log.Debugf("response %s %v %v", op.Key, resp.Succeeded, resp.Revision)
if err != nil {
return false, err
}
@@ -468,7 +470,7 @@ func (s *EtcdEmbed) readyNotify() {
})
case <-time.After(timeout):
err := fmt.Errorf("timed out(%s)", timeout)
- util.Logger().Errorf(err, "read notify failed")
+ log.Errorf(err, "read notify failed")
s.Embed.Server.Stop()
@@ -503,7 +505,7 @@ func setResponseAndCallback(pResp *registry.PluginResponse, kvs []*mvccpb.KeyVal
}
func getEmbedInstance() mgr.PluginInstance {
- util.Logger().Warnf("starting service center in embed mode")
+ log.Warnf("starting service center in embed mode")
hostName := beego.AppConfig.DefaultString("manager_name", "sc-0")
mgrAddrs := beego.AppConfig.DefaultString("manager_addr", "http://127.0.0.1:2380")
@@ -511,14 +513,14 @@ func getEmbedInstance() mgr.PluginInstance {
inst := &EtcdEmbed{
err: make(chan error, 1),
ready: make(chan int),
- goroutine: util.NewGo(context.Background()),
+ goroutine: gopool.New(context.Background()),
}
if registry.RegistryConfig().SslEnabled {
var err error
embedTLSConfig, err = mgr.Plugins().TLS().ServerConfig()
if err != nil {
- util.Logger().Error("get service center tls config failed", err)
+ log.Error("get service center tls config failed", err)
inst.err <- err
return inst
}
@@ -536,7 +538,7 @@ func getEmbedInstance() mgr.PluginInstance {
// 1. 管理端口
urls, err := parseURL(mgrAddrs)
if err != nil {
- util.Logger().Error(`"manager_addr" field configure error`, err)
+ log.Error(`"manager_addr" field configure error`, err)
inst.err <- err
return inst
}
@@ -547,7 +549,7 @@ func getEmbedInstance() mgr.PluginInstance {
serverCfg.LCUrls = nil
serverCfg.ACUrls = nil
- util.Logger().Debugf("--initial-cluster %s --initial-advertise-peer-urls %s --listen-peer-urls %s",
+ log.Debugf("--initial-cluster %s --initial-advertise-peer-urls %s --listen-peer-urls %s",
serverCfg.InitialCluster, mgrAddrs, mgrAddrs)
// 自动压缩历史, 1 hour
@@ -555,7 +557,7 @@ func getEmbedInstance() mgr.PluginInstance {
etcd, err := embed.StartEtcd(serverCfg)
if err != nil {
- util.Logger().Error("error to start etcd server", err)
+ log.Error("error to start etcd server", err)
inst.err <- err
return inst
}
@@ -571,7 +573,7 @@ func parseURL(addrs string) ([]url.URL, error) {
for _, ip := range ips {
addr, err := url.Parse(ip)
if err != nil {
- util.Logger().Error("Error to parse ip address string", err)
+ log.Error("Error to parse ip address string", err)
return nil, err
}
urls = append(urls, *addr)
diff --git a/server/plugin/infra/registry/etcd/etcd.go b/server/plugin/infra/registry/etcd/etcd.go
index 1786a70..e08f8e5 100644
--- a/server/plugin/infra/registry/etcd/etcd.go
+++ b/server/plugin/infra/registry/etcd/etcd.go
@@ -21,6 +21,8 @@ import (
"errors"
"fmt"
errorsEx "github.com/apache/incubator-servicecomb-service-center/pkg/errors"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/gopool"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
"github.com/apache/incubator-servicecomb-service-center/server/infra/registry"
mgr "github.com/apache/incubator-servicecomb-service-center/server/plugin"
@@ -60,13 +62,13 @@ type EtcdClient struct {
err chan error
ready chan int
- goroutine *util.GoRoutine
+ goroutine *gopool.Pool
}
func (c *EtcdClient) Initialize() (err error) {
c.err = make(chan error, 1)
c.ready = make(chan int)
- c.goroutine = util.NewGo(context.Background())
+ c.goroutine = gopool.New(context.Background())
if len(c.Endpoints) == 0 {
// parse the endpoints from config
@@ -77,7 +79,7 @@ func (c *EtcdClient) Initialize() (err error) {
// go client tls限制,提供身份证书、不认证服务端、不校验CN
c.TLSConfig, err = mgr.Plugins().TLS().ClientConfig()
if err != nil {
- util.Logger().Error("get etcd client tls config failed", err)
+ log.Error("get etcd client tls config failed", err)
return err
}
}
@@ -90,7 +92,7 @@ func (c *EtcdClient) Initialize() (err error) {
c.Client, err = c.newClient()
if err != nil {
- util.Logger().Errorf(err, "get etcd client %v failed.", c.Endpoints)
+ log.Errorf(err, "get etcd client %v failed.", c.Endpoints)
return
}
@@ -98,7 +100,7 @@ func (c *EtcdClient) Initialize() (err error) {
close(c.ready)
- util.Logger().Warnf("get etcd client %v completed, auto sync endpoints interval is %s.",
+ log.Warnf("get etcd client %v completed, auto sync endpoints interval is %s.",
c.Endpoints, c.AutoSyncInterval)
return
}
@@ -170,7 +172,7 @@ func (c *EtcdClient) Close() {
if c.Client != nil {
c.Client.Close()
}
- util.Logger().Debugf("etcd client stopped")
+ log.Debugf("etcd client stopped")
}
func (c *EtcdClient) Compact(ctx context.Context, reserve int64) error {
@@ -179,28 +181,28 @@ func (c *EtcdClient) Compact(ctx context.Context, reserve int64) error {
revToCompact := max(0, curRev-reserve)
if revToCompact <= 0 {
- util.Logger().Infof("revision is %d, <=%d, no nead to compact %s", curRev, reserve, eps)
+ log.Infof("revision is %d, <=%d, no nead to compact %s", curRev, reserve, eps)
return nil
}
t := time.Now()
_, err := c.Client.Compact(ctx, revToCompact, clientv3.WithCompactPhysical())
if err != nil {
- util.Logger().Errorf(err, "Compact %s failed, revision is %d(current: %d, reserve %d)",
+ log.Errorf(err, "Compact %s failed, revision is %d(current: %d, reserve %d)",
eps, revToCompact, curRev, reserve)
return err
}
- util.LogInfoOrWarnf(t, "Compacted %s, revision is %d(current: %d, reserve %d)", eps, revToCompact, curRev, reserve)
+ log.LogInfoOrWarnf(t, "Compacted %s, revision is %d(current: %d, reserve %d)", eps, revToCompact, curRev, reserve)
// TODO can not defrag! because backend will always be unavailable when space in used is too large.
/*for _, ep := range eps {
t = time.Now()
_, err := c.Client.Defragment(ctx, ep)
if err != nil {
- util.Logger().Errorf(err, "Defrag %s failed", ep)
+ log.Errorf(err, "Defrag %s failed", ep)
continue
}
- util.LogInfoOrWarnf(t, "Defraged %s", ep)
+ log.LogInfoOrWarnf(t, "Defraged %s", ep)
}*/
return nil
@@ -212,12 +214,12 @@ func (c *EtcdClient) getLeaderCurrentRevision(ctx context.Context) int64 {
for _, ep := range eps {
resp, err := c.Client.Status(ctx, ep)
if err != nil {
- util.Logger().Error(fmt.Sprintf("Compact error ,can not get status from %s", ep), err)
+ log.Error(fmt.Sprintf("Compact error ,can not get status from %s", ep), err)
continue
}
curRev = resp.Header.Revision
if resp.Leader == resp.Header.MemberId {
- util.Logger().Infof("Get leader endpoint: %s, revision is %d", ep, curRev)
+ log.Infof("Get leader endpoint: %s, revision is %d", ep, curRev)
break
}
}
@@ -342,7 +344,7 @@ func (c *EtcdClient) PutNoOverride(ctx context.Context, opts ...registry.PluginO
registry.OpCmp(registry.CmpCreateRev(op.Key), registry.CMP_EQUAL, 0),
}, nil)
if err != nil {
- util.Logger().Errorf(err, "PutNoOverride %s failed", op.Key)
+ log.Errorf(err, "PutNoOverride %s failed", op.Key)
return false, err
}
return resp.Succeeded, nil
@@ -426,7 +428,7 @@ func (c *EtcdClient) paging(ctx context.Context, op registry.PluginOp) (*clientv
}
if op.Offset == -1 {
- util.LogInfoOrWarnf(start, "get too many KeyValues(%s) from etcd, now paging.(%d vs %d)",
+ log.LogInfoOrWarnf(start, "get too many KeyValues(%s) from etcd, now paging.(%d vs %d)",
key, recordCount, op.Limit)
}
@@ -440,7 +442,7 @@ func (c *EtcdClient) paging(ctx context.Context, op registry.PluginOp) (*clientv
}
etcdResp.Kvs[i], etcdResp.Kvs[last] = etcdResp.Kvs[last], etcdResp.Kvs[i]
}
- util.LogNilOrWarnf(t, "sorted descend %d KeyValues(%s)", recordCount, key)
+ log.LogNilOrWarnf(t, "sorted descend %d KeyValues(%s)", recordCount, key)
}
return etcdResp, nil
}
@@ -514,7 +516,7 @@ func (c *EtcdClient) Do(ctx context.Context, opts ...registry.PluginOpOption) (*
resp.Succeeded = true
- util.LogNilOrWarnf(start, "registry client do %s", op)
+ log.LogNilOrWarnf(start, "registry client do %s", op)
return resp, nil
}
@@ -563,7 +565,7 @@ func (c *EtcdClient) TxnWithCmp(ctx context.Context, success []registry.PluginOp
if err != nil {
return nil, err
}
- util.LogNilOrWarnf(start, "registry client txn {if(%v): %s, then: %d, else: %d}, rev: %d",
+ log.LogNilOrWarnf(start, "registry client txn {if(%v): %s, then: %d, else: %d}, rev: %d",
resp.Succeeded, cmps, len(success), len(fail), resp.Header.Revision)
return ®istry.PluginResponse{
Succeeded: resp.Succeeded,
@@ -584,7 +586,7 @@ func (c *EtcdClient) LeaseGrant(ctx context.Context, TTL int64) (int64, error) {
if err != nil {
return 0, err
}
- util.LogNilOrWarnf(start, "registry client grant lease %ds", TTL)
+ log.LogNilOrWarnf(start, "registry client grant lease %ds", TTL)
return int64(etcdResp.ID), nil
}
@@ -604,7 +606,7 @@ func (c *EtcdClient) LeaseRenew(ctx context.Context, leaseID int64) (int64, erro
}
return 0, errorsEx.RaiseError(err)
}
- util.LogNilOrWarnf(start, "registry client renew lease %d", leaseID)
+ log.LogNilOrWarnf(start, "registry client renew lease %d", leaseID)
return etcdResp.TTL, nil
}
@@ -624,7 +626,7 @@ func (c *EtcdClient) LeaseRevoke(ctx context.Context, leaseID int64) error {
}
return errorsEx.RaiseError(err)
}
- util.LogNilOrWarnf(start, "registry client revoke lease %d", leaseID)
+ log.LogNilOrWarnf(start, "registry client revoke lease %d", leaseID)
return nil
}
@@ -636,7 +638,7 @@ func (c *EtcdClient) Watch(ctx context.Context, opts ...registry.PluginOpOption)
// 必须创建新的client连接
/*client, err := newClient(c.Client.Endpoints())
if err != nil {
- util.Logger().Error("get manager client failed", err)
+ log.Error("get manager client failed", err)
return err
}
defer client.Close()*/
@@ -710,7 +712,7 @@ hcLoop:
retries = 1 // fail fast
if cerr := c.ReOpen(); cerr == nil {
- util.Logger().Errorf(err, "re-connected to etcd %s", c.Endpoints)
+ log.Errorf(err, "re-connected to etcd %s", c.Endpoints)
}
}
}
@@ -719,13 +721,13 @@ hcLoop:
func (c *EtcdClient) ReOpen() error {
client, cerr := c.newClient()
if cerr != nil {
- util.Logger().Errorf(cerr, "create a new connection to etcd %v failed.",
+ log.Errorf(cerr, "create a new connection to etcd %v failed.",
c.Endpoints)
return cerr
}
c.Client, client = client, c.Client
if cerr = client.Close(); cerr != nil {
- util.Logger().Errorf(cerr, "failed to close the unavailable etcd client.")
+ log.Errorf(cerr, "failed to close the unavailable etcd client.")
}
client = nil
return nil
@@ -813,7 +815,7 @@ func callback(action registry.ActionType, rev int64, kvs []*mvccpb.KeyValue, cb
}
func NewRegistry() mgr.PluginInstance {
- util.Logger().Warnf("starting service center in proxy mode")
+ log.Warnf("starting service center in proxy mode")
inst := &EtcdClient{}
if err := inst.Initialize(); err != nil {
diff --git a/server/plugin/infra/registry/etcd/logger.go b/server/plugin/infra/registry/etcd/logger.go
index 349614d..6e04df8 100644
--- a/server/plugin/infra/registry/etcd/logger.go
+++ b/server/plugin/infra/registry/etcd/logger.go
@@ -18,29 +18,30 @@ package etcd
import (
"fmt"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
"github.com/coreos/pkg/capnslog"
"runtime"
)
+const grpcCallerSkip = 2
+
// clientLogger implement from grcplog.LoggerV2s and capnslog.Formatter
type clientLogger struct {
}
func (l *clientLogger) Format(pkg string, level capnslog.LogLevel, depth int, entries ...interface{}) {
- fmt := "\b" + l.getCaller(depth) + " " + pkg + " %s"
+ fmt := l.getCaller(depth+1+grpcCallerSkip) + " " + pkg + " %s"
switch level {
- case capnslog.CRITICAL, capnslog.ERROR, capnslog.WARNING, capnslog.INFO:
- l.Errorf(fmt, entries...)
case capnslog.NOTICE, capnslog.DEBUG, capnslog.TRACE:
+ log.Default().Debugf(fmt, entries...)
default:
- return
+ log.Default().Errorf(nil, fmt, entries...)
}
- l.Flush()
}
func (l *clientLogger) getCaller(depth int) string {
- _, file, line, ok := runtime.Caller(depth + 4)
+ _, file, line, ok := runtime.Caller(depth + 1)
if !ok {
return "???"
}
@@ -48,42 +49,55 @@ func (l *clientLogger) getCaller(depth int) string {
}
func (l *clientLogger) Flush() {
+ log.Default().Sync()
+}
+
+func (l *clientLogger) Debug(args ...interface{}) {
+ log.Default().Debug(fmt.Sprint(args...))
+}
+
+func (l *clientLogger) Debugln(args ...interface{}) {
+ log.Default().Debug(fmt.Sprint(args...))
+}
+
+func (l *clientLogger) Debugf(format string, args ...interface{}) {
+ log.Default().Debugf(format, args...)
}
func (l *clientLogger) Info(args ...interface{}) {
- util.Logger().Info(fmt.Sprint(args...))
+ log.Default().Info(fmt.Sprint(args...))
}
func (l *clientLogger) Infoln(args ...interface{}) {
- util.Logger().Info(fmt.Sprint(args...))
+ log.Default().Info(fmt.Sprint(args...))
}
func (l *clientLogger) Infof(format string, args ...interface{}) {
- util.Logger().Infof(format, args...)
+ log.Default().Infof(format, args...)
}
func (l *clientLogger) Warning(args ...interface{}) {
- util.Logger().Warn(fmt.Sprint(args...), nil)
+ log.Default().Warn(fmt.Sprint(args...))
}
func (l *clientLogger) Warningln(args ...interface{}) {
- util.Logger().Warn(fmt.Sprint(args...), nil)
+ log.Default().Warn(fmt.Sprint(args...))
}
func (l *clientLogger) Warningf(format string, args ...interface{}) {
- util.Logger().Warnf(format, args...)
+ log.Default().Warnf(format, args...)
}
func (l *clientLogger) Error(args ...interface{}) {
- util.Logger().Error(fmt.Sprint(args...), nil)
+ log.Default().Error(fmt.Sprint(args...), nil)
}
func (l *clientLogger) Errorln(args ...interface{}) {
- util.Logger().Error(fmt.Sprint(args...), nil)
+ log.Default().Error(fmt.Sprint(args...), nil)
}
func (l *clientLogger) Errorf(format string, args ...interface{}) {
- util.Logger().Errorf(nil, format, args...)
+ log.Default().Errorf(nil, format, args...)
}
// V reports whether verbosity level l is at least the requested verbose level.
@@ -92,25 +106,25 @@ func (l *clientLogger) V(_ int) bool {
}
func (l *clientLogger) Fatal(args ...interface{}) {
- util.Logger().Fatal(fmt.Sprint(args...), nil)
+ log.Default().Fatal(fmt.Sprint(args...), nil)
}
func (l *clientLogger) Fatalf(format string, args ...interface{}) {
- util.Logger().Fatalf(nil, format, args...)
+ log.Default().Fatalf(nil, format, args...)
}
func (l *clientLogger) Fatalln(args ...interface{}) {
- util.Logger().Fatal(fmt.Sprint(args...), nil)
+ log.Default().Fatal(fmt.Sprint(args...), nil)
}
func (l *clientLogger) Print(args ...interface{}) {
- util.Logger().Error(fmt.Sprint(args...), nil)
+ log.Default().Error(fmt.Sprint(args...), nil)
}
func (l *clientLogger) Printf(format string, args ...interface{}) {
- util.Logger().Errorf(nil, format, args...)
+ log.Default().Errorf(nil, format, args...)
}
func (l *clientLogger) Println(args ...interface{}) {
- util.Logger().Error(fmt.Sprint(args...), nil)
+ log.Default().Error(fmt.Sprint(args...), nil)
}
diff --git a/server/plugin/infra/tls/buildin/tls.go b/server/plugin/infra/tls/buildin/tls.go
index 67ae48a..037695f 100644
--- a/server/plugin/infra/tls/buildin/tls.go
+++ b/server/plugin/infra/tls/buildin/tls.go
@@ -18,6 +18,7 @@ package buildin
import (
"crypto/tls"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/tlsutil"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
"github.com/apache/incubator-servicecomb-service-center/server/core"
@@ -47,14 +48,14 @@ func GetSSLPath(path string) string {
func GetPassphase() (pass string, decrypt string) {
passphase, err := ioutil.ReadFile(GetSSLPath("cert_pwd"))
if err != nil {
- util.Logger().Errorf(err, "read file cert_pwd failed.")
+ log.Errorf(err, "read file cert_pwd failed.")
}
pass = util.BytesToStringWithNoCopy(passphase)
if len(pass) > 0 {
decrypt, err = plugin.Plugins().Cipher().Decrypt(pass)
if err != nil {
- util.Logger().Errorf(err, "decrypt ssl passphase(%d) failed.", len(pass))
+ log.Errorf(err, "decrypt ssl passphase(%d) failed.", len(pass))
decrypt = ""
}
}
@@ -86,7 +87,7 @@ func GetClientTLSConfig() (_ *tls.Config, err error) {
clientTLSConfig, err = tlsutil.GetClientTLSConfig(opts...)
if clientTLSConfig != nil {
- util.Logger().Infof("client ssl configs enabled, verifyclient %t, minv %#x, cipers %d, pphase %d.",
+ log.Infof("client ssl configs enabled, verifyclient %t, minv %#x, cipers %d, pphase %d.",
core.ServerInfo.Config.SslVerifyPeer,
clientTLSConfig.MinVersion,
len(clientTLSConfig.CipherSuites),
@@ -117,7 +118,7 @@ func GetServerTLSConfig() (_ *tls.Config, err error) {
serverTLSConfig, err = tlsutil.GetServerTLSConfig(opts...)
if serverTLSConfig != nil {
- util.Logger().Infof("server ssl configs enabled, verifyClient %t, minv %#x, ciphers %d, phase %d.",
+ log.Infof("server ssl configs enabled, verifyClient %t, minv %#x, ciphers %d, phase %d.",
core.ServerInfo.Config.SslVerifyPeer,
serverTLSConfig.MinVersion,
len(serverTLSConfig.CipherSuites),
diff --git a/server/plugin/infra/tracing/buildin/buildin.go b/server/plugin/infra/tracing/buildin/buildin.go
index 12753b4..6ffc09d 100644
--- a/server/plugin/infra/tracing/buildin/buildin.go
+++ b/server/plugin/infra/tracing/buildin/buildin.go
@@ -18,6 +18,7 @@ package buildin
import (
"context"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
"github.com/apache/incubator-servicecomb-service-center/server/infra/tracing"
mgr "github.com/apache/incubator-servicecomb-service-center/server/plugin"
@@ -57,7 +58,7 @@ func (zp *Zipkin) ServerBegin(operationName string, itf tracing.Request) tracing
case nil:
case opentracing.ErrSpanContextNotFound:
default:
- util.Logger().Errorf(err, "tracer extract request failed")
+ log.Errorf(err, "tracer extract request failed")
return nil
}
@@ -116,7 +117,7 @@ func (zp *Zipkin) ClientBegin(operationName string, itf tracing.Request) tracing
opentracing.HTTPHeaders,
carrier,
); err != nil {
- util.Logger().Errorf(err, "tracer inject request failed")
+ log.Errorf(err, "tracer inject request failed")
}
case *tracing.RegistryRequest:
r := itf.(*tracing.RegistryRequest)
@@ -144,7 +145,7 @@ func (zp *Zipkin) ClientBegin(operationName string, itf tracing.Request) tracing
opentracing.HTTPHeaders,
carrier,
); err != nil {
- util.Logger().Errorf(err, "tracer inject request failed")
+ log.Errorf(err, "tracer inject request failed")
}
// inject context
carrier.ForeachKey(func(key, val string) error {
diff --git a/server/plugin/infra/tracing/buildin/common.go b/server/plugin/infra/tracing/buildin/common.go
index 14e30f7..64f410f 100644
--- a/server/plugin/infra/tracing/buildin/common.go
+++ b/server/plugin/infra/tracing/buildin/common.go
@@ -18,7 +18,7 @@ package buildin
import (
"fmt"
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/server/core"
"github.com/apache/incubator-servicecomb-service-center/server/metric"
"github.com/opentracing/opentracing-go"
@@ -31,14 +31,14 @@ import (
func initTracer() {
collector, err := newCollector()
if err != nil {
- util.Logger().Errorf(err, "new tracing collector failed, use the noop tracer")
+ log.Errorf(err, "new tracing collector failed, use the noop tracer")
return
}
ipPort := metric.InstanceName()
recorder := zipkin.NewRecorder(collector, false, ipPort, strings.ToLower(core.Service.ServiceName))
tracer, err := zipkin.NewTracer(recorder, zipkin.TraceID128Bit(true))
if err != nil {
- util.Logger().Errorf(err, "new tracer failed")
+ log.Errorf(err, "new tracer failed")
return
}
opentracing.SetGlobalTracer(tracer)
diff --git a/server/plugin/infra/tracing/buildin/file_collector.go b/server/plugin/infra/tracing/buildin/file_collector.go
index 4de5588..e0a45fe 100644
--- a/server/plugin/infra/tracing/buildin/file_collector.go
+++ b/server/plugin/infra/tracing/buildin/file_collector.go
@@ -20,6 +20,8 @@ import (
"bufio"
"encoding/json"
"fmt"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/gopool"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
"github.com/apache/incubator-servicecomb-service-center/server/core"
"github.com/openzipkin/zipkin-go-opentracing/thrift/gen-go/zipkincore"
@@ -35,7 +37,7 @@ type FileCollector struct {
Interval time.Duration
BatchSize int
c chan *zipkincore.Span
- goroutine *util.GoRoutine
+ goroutine *gopool.Pool
}
func (f *FileCollector) Collect(span *zipkincore.Span) error {
@@ -48,7 +50,7 @@ func (f *FileCollector) Collect(span *zipkincore.Span) error {
case f.c <- span:
timer.Stop()
case <-timer.C:
- util.Logger().Errorf(nil, "send span to handle channel timed out(%s)", f.Timeout)
+ log.Errorf(nil, "send span to handle channel timed out(%s)", f.Timeout)
}
return nil
}
@@ -64,7 +66,7 @@ func (f *FileCollector) write(batch []*zipkincore.Span) (c int) {
}
if err := f.checkFile(); err != nil {
- util.Logger().Errorf(err, "check tracing file failed")
+ log.Errorf(err, "check tracing file failed")
return
}
@@ -74,7 +76,7 @@ func (f *FileCollector) write(batch []*zipkincore.Span) (c int) {
s := FromZipkinSpan(span)
b, err := json.Marshal(s)
if err != nil {
- util.Logger().Errorf(err, "marshal span failed")
+ log.Errorf(err, "marshal span failed")
continue
}
w.Write(b)
@@ -83,7 +85,7 @@ func (f *FileCollector) write(batch []*zipkincore.Span) (c int) {
}
if err := w.Flush(); err != nil {
c = 0
- util.Logger().Errorf(err, "write span to file failed")
+ log.Errorf(err, "write span to file failed")
}
return
}
@@ -98,7 +100,7 @@ func (f *FileCollector) checkFile() error {
return fmt.Errorf("stat %s: %s", f.Fd.Name(), err)
}
- util.Logger().Warnf("tracing file %s does not exist, re-create one", f.Fd.Name())
+ log.Warnf("tracing file %s does not exist, re-create one", f.Fd.Name())
fd, err := os.OpenFile(f.Fd.Name(), os.O_APPEND|os.O_CREATE|os.O_RDWR, stat.Mode())
if err != nil {
return fmt.Errorf("open %s: %s", f.Fd.Name(), err)
@@ -107,7 +109,7 @@ func (f *FileCollector) checkFile() error {
var old *os.File
f.Fd, old = fd, f.Fd
if err := old.Close(); err != nil {
- util.Logger().Errorf(err, "close %s", f.Fd.Name())
+ log.Errorf(err, "close %s", f.Fd.Name())
}
return nil
}
@@ -131,7 +133,7 @@ func (f *FileCollector) Run() {
l := len(batch)
if l >= max {
dispose := l - f.BatchSize
- util.Logger().Errorf(nil, "backlog is full, dispose %d span(s), max: %d",
+ log.Errorf(nil, "backlog is full, dispose %d span(s), max: %d",
dispose, max)
batch = batch[dispose:] // allocate more
}
@@ -154,7 +156,7 @@ func (f *FileCollector) Run() {
}
case <-t.C:
if time.Now().After(nr) {
- util.LogRotateFile(f.Fd.Name(),
+ log.LogRotateFile(f.Fd.Name(),
int(core.ServerInfo.Config.LogRotateSize),
int(core.ServerInfo.Config.LogBackupCount),
)
@@ -180,7 +182,7 @@ func NewFileCollector(path string) (*FileCollector, error) {
Interval: 10 * time.Second,
BatchSize: 100,
c: make(chan *zipkincore.Span, 1000),
- goroutine: util.NewGo(context.Background()),
+ goroutine: gopool.New(context.Background()),
}
fc.Run()
return fc, nil
diff --git a/server/plugin/infra/tracing/buildin/file_collector_test.go b/server/plugin/infra/tracing/buildin/file_collector_test.go
index c7fd087..c5cd6b9 100644
--- a/server/plugin/infra/tracing/buildin/file_collector_test.go
+++ b/server/plugin/infra/tracing/buildin/file_collector_test.go
@@ -18,7 +18,7 @@ package buildin
import (
"fmt"
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/gopool"
"github.com/openzipkin/zipkin-go-opentracing/thrift/gen-go/zipkincore"
"golang.org/x/net/context"
"os"
@@ -34,7 +34,7 @@ func TestFileCollector_Collect(t *testing.T) {
Interval: 1 * time.Second,
BatchSize: 2,
c: make(chan *zipkincore.Span, 100),
- goroutine: util.NewGo(context.Background()),
+ goroutine: gopool.New(context.Background()),
}
fc.Run()
diff --git a/server/plugin/plugin.go b/server/plugin/plugin.go
index e4eb804..9627f79 100644
--- a/server/plugin/plugin.go
+++ b/server/plugin/plugin.go
@@ -17,6 +17,7 @@
package plugin
import (
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/plugin"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
"github.com/apache/incubator-servicecomb-service-center/server/infra/auditlog"
@@ -117,7 +118,7 @@ func (pm *PluginManager) Register(p Plugin) {
}
m[p.Name] = &p
pm.plugins[p.PName] = m
- util.Logger().Infof("load '%s' plugin named '%s'", p.PName, p.Name)
+ log.Infof("load '%s' plugin named '%s'", p.PName, p.Name)
}
func (pm *PluginManager) Get(pn PluginName, name string) *Plugin {
@@ -175,7 +176,7 @@ func (pm *PluginManager) New(pn PluginName) {
f = p.New
}
- util.Logger().Infof("call %s '%s' plugin %s(), new a '%s' instance",
+ log.Infof("call %s '%s' plugin %s(), new a '%s' instance",
title, p.PName, util.FuncName(f), p.Name)
wi.instance = f()
@@ -229,7 +230,7 @@ func DynamicPluginFunc(pn PluginName, funcName string) pg.Symbol {
f, err := plugin.FindFunc(pn.String(), funcName)
if err != nil {
- util.Logger().Errorf(err, "plugin '%s': not implemented function '%s'.", pn, funcName)
+ log.Errorf(err, "plugin '%s': not implemented function '%s'.", pn, funcName)
}
return f
}
diff --git a/server/rest/controller/v4/dependency_controller.go b/server/rest/controller/v4/dependency_controller.go
index 2d3b601..277edf2 100644
--- a/server/rest/controller/v4/dependency_controller.go
+++ b/server/rest/controller/v4/dependency_controller.go
@@ -18,8 +18,8 @@ package v4
import (
"encoding/json"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/rest"
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
"github.com/apache/incubator-servicecomb-service-center/server/core"
pb "github.com/apache/incubator-servicecomb-service-center/server/core/proto"
scerr "github.com/apache/incubator-servicecomb-service-center/server/error"
@@ -44,14 +44,14 @@ func (this *DependencyService) URLPatterns() []rest.Route {
func (this *DependencyService) AddDependenciesForMicroServices(w http.ResponseWriter, r *http.Request) {
requestBody, err := ioutil.ReadAll(r.Body)
if err != nil {
- util.Logger().Error("body err", err)
+ log.Error("body err", err)
controller.WriteError(w, scerr.ErrInvalidParams, err.Error())
return
}
request := &pb.AddDependenciesRequest{}
err = json.Unmarshal(requestBody, request)
if err != nil {
- util.Logger().Error("Invalid json", err)
+ log.Error("Invalid json", err)
controller.WriteError(w, scerr.ErrInvalidParams, err.Error())
return
}
@@ -63,14 +63,14 @@ func (this *DependencyService) AddDependenciesForMicroServices(w http.ResponseWr
func (this *DependencyService) CreateDependenciesForMicroServices(w http.ResponseWriter, r *http.Request) {
requestBody, err := ioutil.ReadAll(r.Body)
if err != nil {
- util.Logger().Error("body err", err)
+ log.Error("body err", err)
controller.WriteError(w, scerr.ErrInvalidParams, err.Error())
return
}
request := &pb.CreateDependenciesRequest{}
err = json.Unmarshal(requestBody, request)
if err != nil {
- util.Logger().Error("Invalid json", err)
+ log.Error("Invalid json", err)
controller.WriteError(w, scerr.ErrInvalidParams, err.Error())
return
}
diff --git a/server/rest/controller/v4/instance_controller.go b/server/rest/controller/v4/instance_controller.go
index 288b049..85bfb26 100644
--- a/server/rest/controller/v4/instance_controller.go
+++ b/server/rest/controller/v4/instance_controller.go
@@ -18,6 +18,7 @@ package v4
import (
"encoding/json"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/rest"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
"github.com/apache/incubator-servicecomb-service-center/server/core"
@@ -50,7 +51,7 @@ func (this *MicroServiceInstanceService) URLPatterns() []rest.Route {
func (this *MicroServiceInstanceService) RegisterInstance(w http.ResponseWriter, r *http.Request) {
message, err := ioutil.ReadAll(r.Body)
if err != nil {
- util.Logger().Error("register instance failed, body err", err)
+ log.Error("register instance failed, body err", err)
controller.WriteError(w, scerr.ErrInvalidParams, err.Error())
return
}
@@ -58,7 +59,7 @@ func (this *MicroServiceInstanceService) RegisterInstance(w http.ResponseWriter,
request := &pb.RegisterInstanceRequest{}
err = json.Unmarshal(message, request)
if err != nil {
- util.Logger().Error("register instance failed, Unmarshal error", err)
+ log.Error("register instance failed, Unmarshal error", err)
controller.WriteError(w, scerr.ErrInvalidParams, "Unmarshal error")
return
}
@@ -86,7 +87,7 @@ func (this *MicroServiceInstanceService) Heartbeat(w http.ResponseWriter, r *htt
func (this *MicroServiceInstanceService) HeartbeatSet(w http.ResponseWriter, r *http.Request) {
message, err := ioutil.ReadAll(r.Body)
if err != nil {
- util.Logger().Error("register instance failed, body err", err)
+ log.Error("register instance failed, body err", err)
controller.WriteError(w, scerr.ErrInvalidParams, err.Error())
return
}
@@ -94,7 +95,7 @@ func (this *MicroServiceInstanceService) HeartbeatSet(w http.ResponseWriter, r *
request := &pb.HeartbeatSetRequest{}
err = json.Unmarshal(message, request)
if err != nil {
- util.Logger().Error("register instance failed, Unmarshal error", err)
+ log.Error("register instance failed, Unmarshal error", err)
controller.WriteError(w, scerr.ErrInvalidParams, "Unmarshal error")
return
}
@@ -205,7 +206,7 @@ func (this *MicroServiceInstanceService) UpdateMetadata(w http.ResponseWriter, r
query := r.URL.Query()
message, err := ioutil.ReadAll(r.Body)
if err != nil {
- util.Logger().Error("body err", err)
+ log.Error("body err", err)
controller.WriteError(w, scerr.ErrInvalidParams, err.Error())
return
}
@@ -215,7 +216,7 @@ func (this *MicroServiceInstanceService) UpdateMetadata(w http.ResponseWriter, r
}
err = json.Unmarshal(message, request)
if err != nil {
- util.Logger().Error("Unmarshal error", err)
+ log.Error("Unmarshal error", err)
controller.WriteError(w, scerr.ErrInvalidParams, "Unmarshal error")
return
}
diff --git a/server/rest/controller/v4/instance_watcher.go b/server/rest/controller/v4/instance_watcher.go
index 9206df9..4495226 100644
--- a/server/rest/controller/v4/instance_watcher.go
+++ b/server/rest/controller/v4/instance_watcher.go
@@ -17,8 +17,8 @@
package v4
import (
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/rest"
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
"github.com/apache/incubator-servicecomb-service-center/server/core"
pb "github.com/apache/incubator-servicecomb-service-center/server/core/proto"
"github.com/gorilla/websocket"
@@ -47,7 +47,7 @@ func upgrade(w http.ResponseWriter, r *http.Request) (*websocket.Conn, error) {
}
conn, err := upgrader.Upgrade(w, r, nil)
if err != nil {
- util.Logger().Error("upgrade failed.", err)
+ log.Error("upgrade failed.", err)
// controller.WriteError(w, scerr.ErrInternal, "Upgrade error")
}
return conn, err
diff --git a/server/rest/controller/v4/microservice_controller.go b/server/rest/controller/v4/microservice_controller.go
index 60b4d7c..9cc450a 100644
--- a/server/rest/controller/v4/microservice_controller.go
+++ b/server/rest/controller/v4/microservice_controller.go
@@ -18,8 +18,8 @@ package v4
import (
"encoding/json"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/rest"
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
"github.com/apache/incubator-servicecomb-service-center/server/core"
pb "github.com/apache/incubator-servicecomb-service-center/server/core/proto"
scerr "github.com/apache/incubator-servicecomb-service-center/server/error"
@@ -49,14 +49,14 @@ func (this *MicroServiceService) URLPatterns() []rest.Route {
func (this *MicroServiceService) Register(w http.ResponseWriter, r *http.Request) {
message, err := ioutil.ReadAll(r.Body)
if err != nil {
- util.Logger().Error("body err", err)
+ log.Error("body err", err)
controller.WriteError(w, scerr.ErrInvalidParams, err.Error())
return
}
var request pb.CreateServiceRequest
err = json.Unmarshal(message, &request)
if err != nil {
- util.Logger().Error("Unmarshal error", err)
+ log.Error("Unmarshal error", err)
controller.WriteError(w, scerr.ErrInvalidParams, err.Error())
return
}
@@ -69,7 +69,7 @@ func (this *MicroServiceService) Register(w http.ResponseWriter, r *http.Request
func (this *MicroServiceService) Update(w http.ResponseWriter, r *http.Request) {
message, err := ioutil.ReadAll(r.Body)
if err != nil {
- util.Logger().Error("body err", err)
+ log.Error("body err", err)
controller.WriteError(w, scerr.ErrInvalidParams, err.Error())
return
}
@@ -78,7 +78,7 @@ func (this *MicroServiceService) Update(w http.ResponseWriter, r *http.Request)
}
err = json.Unmarshal(message, request)
if err != nil {
- util.Logger().Error("Unmarshal error", err)
+ log.Error("Unmarshal error", err)
controller.WriteError(w, scerr.ErrInvalidParams, err.Error())
return
}
@@ -145,7 +145,7 @@ func (this *MicroServiceService) GetServiceOne(w http.ResponseWriter, r *http.Re
func (this *MicroServiceService) UnregisterServices(w http.ResponseWriter, r *http.Request) {
request_body, err := ioutil.ReadAll(r.Body)
if err != nil {
- util.Logger().Error("body ,err", err)
+ log.Error("body ,err", err)
controller.WriteError(w, scerr.ErrInvalidParams, err.Error())
return
}
@@ -154,7 +154,7 @@ func (this *MicroServiceService) UnregisterServices(w http.ResponseWriter, r *ht
err = json.Unmarshal(request_body, request)
if err != nil {
- util.Logger().Error("unmarshal ,err ", err)
+ log.Error("unmarshal ,err ", err)
controller.WriteError(w, scerr.ErrInvalidParams, err.Error())
return
}
diff --git a/server/rest/controller/v4/query_rule_controller.go b/server/rest/controller/v4/query_rule_controller.go
index 539ce4d..1370ed7 100644
--- a/server/rest/controller/v4/query_rule_controller.go
+++ b/server/rest/controller/v4/query_rule_controller.go
@@ -18,8 +18,8 @@ package v4
import (
"encoding/json"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/rest"
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
"github.com/apache/incubator-servicecomb-service-center/server/core"
pb "github.com/apache/incubator-servicecomb-service-center/server/core/proto"
scerr "github.com/apache/incubator-servicecomb-service-center/server/error"
@@ -44,14 +44,14 @@ func (this *RuleService) URLPatterns() []rest.Route {
func (this *RuleService) AddRule(w http.ResponseWriter, r *http.Request) {
message, err := ioutil.ReadAll(r.Body)
if err != nil {
- util.Logger().Error("bory err", err)
+ log.Error("bory err", err)
controller.WriteError(w, scerr.ErrInvalidParams, err.Error())
return
}
rule := map[string][]*pb.AddOrUpdateServiceRule{}
err = json.Unmarshal(message, &rule)
if err != nil {
- util.Logger().Errorf(err, "Unmarshal error")
+ log.Errorf(err, "Unmarshal error")
controller.WriteError(w, scerr.ErrInvalidParams, err.Error())
return
}
@@ -80,7 +80,7 @@ func (this *RuleService) DeleteRule(w http.ResponseWriter, r *http.Request) {
func (this *RuleService) UpdateRule(w http.ResponseWriter, r *http.Request) {
message, err := ioutil.ReadAll(r.Body)
if err != nil {
- util.Logger().Error("body err", err)
+ log.Error("body err", err)
controller.WriteError(w, scerr.ErrInvalidParams, err.Error())
return
}
@@ -88,7 +88,7 @@ func (this *RuleService) UpdateRule(w http.ResponseWriter, r *http.Request) {
rule := pb.AddOrUpdateServiceRule{}
err = json.Unmarshal(message, &rule)
if err != nil {
- util.Logger().Error("Unmarshal error", err)
+ log.Error("Unmarshal error", err)
controller.WriteError(w, scerr.ErrInvalidParams, err.Error())
return
}
diff --git a/server/rest/controller/v4/schema_controller.go b/server/rest/controller/v4/schema_controller.go
index 71e4cde..6292c63 100644
--- a/server/rest/controller/v4/schema_controller.go
+++ b/server/rest/controller/v4/schema_controller.go
@@ -18,8 +18,8 @@ package v4
import (
"encoding/json"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/rest"
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
"github.com/apache/incubator-servicecomb-service-center/server/core"
pb "github.com/apache/incubator-servicecomb-service-center/server/core/proto"
scerr "github.com/apache/incubator-servicecomb-service-center/server/error"
@@ -60,7 +60,7 @@ func (this *SchemaService) GetSchemas(w http.ResponseWriter, r *http.Request) {
func (this *SchemaService) ModifySchema(w http.ResponseWriter, r *http.Request) {
message, err := ioutil.ReadAll(r.Body)
if err != nil {
- util.Logger().Error("body err", err)
+ log.Error("body err", err)
controller.WriteError(w, scerr.ErrInvalidParams, err.Error())
return
}
@@ -68,7 +68,7 @@ func (this *SchemaService) ModifySchema(w http.ResponseWriter, r *http.Request)
request := &pb.ModifySchemaRequest{}
err = json.Unmarshal(message, request)
if err != nil {
- util.Logger().Error("Unmarshal error", err)
+ log.Error("Unmarshal error", err)
controller.WriteError(w, scerr.ErrInvalidParams, err.Error())
return
}
@@ -82,7 +82,7 @@ func (this *SchemaService) ModifySchema(w http.ResponseWriter, r *http.Request)
func (this *SchemaService) ModifySchemas(w http.ResponseWriter, r *http.Request) {
message, err := ioutil.ReadAll(r.Body)
if err != nil {
- util.Logger().Error("body err", err)
+ log.Error("body err", err)
controller.WriteError(w, scerr.ErrInvalidParams, err.Error())
return
}
@@ -90,7 +90,7 @@ func (this *SchemaService) ModifySchemas(w http.ResponseWriter, r *http.Request)
request := &pb.ModifySchemasRequest{}
err = json.Unmarshal(message, request)
if err != nil {
- util.Logger().Error("Unmarshal error", err)
+ log.Error("Unmarshal error", err)
controller.WriteError(w, scerr.ErrInvalidParams, err.Error())
return
}
diff --git a/server/rest/controller/v4/tag_controller.go b/server/rest/controller/v4/tag_controller.go
index 7170498..d32d6e5 100644
--- a/server/rest/controller/v4/tag_controller.go
+++ b/server/rest/controller/v4/tag_controller.go
@@ -18,8 +18,8 @@ package v4
import (
"encoding/json"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/rest"
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
"github.com/apache/incubator-servicecomb-service-center/server/core"
pb "github.com/apache/incubator-servicecomb-service-center/server/core/proto"
scerr "github.com/apache/incubator-servicecomb-service-center/server/error"
@@ -45,14 +45,14 @@ func (this *TagService) URLPatterns() []rest.Route {
func (this *TagService) AddTags(w http.ResponseWriter, r *http.Request) {
message, err := ioutil.ReadAll(r.Body)
if err != nil {
- util.Logger().Error("body err", err)
+ log.Error("body err", err)
controller.WriteError(w, scerr.ErrInvalidParams, err.Error())
return
}
var tags map[string]map[string]string
err = json.Unmarshal(message, &tags)
if err != nil {
- util.Logger().Error("Unmarshal error", err)
+ log.Error("Unmarshal error", err)
controller.WriteError(w, scerr.ErrInvalidParams, err.Error())
return
}
diff --git a/server/rest/server_mux.go b/server/rest/server_mux.go
index ec5bb48..49115f2 100644
--- a/server/rest/server_mux.go
+++ b/server/rest/server_mux.go
@@ -17,6 +17,7 @@
package rest
import (
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
"net/http"
)
@@ -45,7 +46,7 @@ func RegisterServeMux(name string) {
func RegisterServeMuxHandleFunc(name, pattern string, f http.HandlerFunc) {
serveMuxMap[name].HandleFunc(pattern, f)
- util.Logger().Infof("register serve mux '%s' http handle function %s(), pattern %s",
+ log.Infof("register serve mux '%s' http handle function %s(), pattern %s",
name, util.FuncName(f), pattern)
}
@@ -53,7 +54,7 @@ func RegisterServeMuxHandler(name, pattern string, h http.Handler) {
serveMuxMap[name].Handle(pattern, h)
t := util.Reflect(h).Type
- util.Logger().Infof("register serve mux '%s' http handler %s/%s, pattern %s",
+ log.Infof("register serve mux '%s' http handler %s/%s, pattern %s",
name, t.PkgPath(), t.Name(), pattern)
}
diff --git a/server/rpc/server.go b/server/rpc/server.go
index ae7ef96..40ced00 100644
--- a/server/rpc/server.go
+++ b/server/rpc/server.go
@@ -17,8 +17,8 @@
package rpc
import (
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/rpc"
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
"github.com/apache/incubator-servicecomb-service-center/server/core"
"github.com/apache/incubator-servicecomb-service-center/server/plugin"
"google.golang.org/grpc"
@@ -40,7 +40,7 @@ func NewServer(ipAddr string) (_ *Server, err error) {
if core.ServerInfo.Config.SslEnabled {
tlsConfig, err := plugin.Plugins().TLS().ServerConfig()
if err != nil {
- util.Logger().Error("error to get server tls config", err)
+ log.Error("error to get server tls config", err)
return nil, err
}
creds := credentials.NewTLS(tlsConfig)
@@ -53,7 +53,7 @@ func NewServer(ipAddr string) (_ *Server, err error) {
ls, err := net.Listen("tcp", ipAddr)
if err != nil {
- util.Logger().Error("error to start Grpc API server "+ipAddr, err)
+ log.Error("error to start Grpc API server "+ipAddr, err)
return
}
diff --git a/server/server.go b/server/server.go
index fec8d08..f8048d0 100644
--- a/server/server.go
+++ b/server/server.go
@@ -19,7 +19,8 @@ package server
import _ "github.com/apache/incubator-servicecomb-service-center/server/service/event"
import (
"fmt"
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/gopool"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/server/core"
"github.com/apache/incubator-servicecomb-service-center/server/core/backend"
"github.com/apache/incubator-servicecomb-service-center/server/mux"
@@ -36,7 +37,7 @@ type ServiceCenterServer struct {
apiServer *APIServer
notifyService *nf.NotifyService
store *backend.KvStore
- goroutine *util.GoRoutine
+ goroutine *gopool.Pool
}
func (s *ServiceCenterServer) Run() {
@@ -56,7 +57,7 @@ func (s *ServiceCenterServer) waitForQuit() {
case err = <-s.notifyService.Err():
}
if err != nil {
- util.Logger().Errorf(err, "service center catch errors")
+ log.Errorf(err, "service center catch errors")
}
s.Stop()
@@ -65,14 +66,14 @@ func (s *ServiceCenterServer) waitForQuit() {
func (s *ServiceCenterServer) needUpgrade() bool {
err := LoadServerVersion()
if err != nil {
- util.Logger().Errorf(err, "check version failed, can not load the system config")
+ log.Errorf(err, "check version failed, can not load the system config")
return false
}
update := !serviceUtil.VersionMatchRule(core.ServerInfo.Version,
fmt.Sprintf("%s+", version.Ver().Version))
if !update && version.Ver().Version != core.ServerInfo.Version {
- util.Logger().Warnf(
+ log.Warnf(
"there is a higher version '%s' in cluster, now running '%s' version may be incompatible",
core.ServerInfo.Version, version.Ver().Version)
}
@@ -83,7 +84,7 @@ func (s *ServiceCenterServer) needUpgrade() bool {
func (s *ServiceCenterServer) loadOrUpgradeServerVersion() {
lock, err := mux.Lock(mux.GLOBAL_LOCK)
if err != nil {
- util.Logger().Errorf(err, "wait for server ready failed")
+ log.Errorf(err, "wait for server ready failed")
os.Exit(1)
}
if s.needUpgrade() {
@@ -98,7 +99,7 @@ func (s *ServiceCenterServer) initialize() {
s.store = backend.Store()
s.notifyService = nf.GetNotifyService()
s.apiServer = GetAPIServer()
- s.goroutine = util.NewGo(context.Background())
+ s.goroutine = gopool.New(context.Background())
// check version
s.loadOrUpgradeServerVersion()
@@ -118,11 +119,11 @@ func (s *ServiceCenterServer) autoCompactBackend() {
}
interval, err := time.ParseDuration(core.ServerInfo.Config.CompactInterval)
if err != nil {
- util.Logger().Errorf(err, "invalid compact interval %s, reset to default interval 12h", core.ServerInfo.Config.CompactInterval)
+ log.Errorf(err, "invalid compact interval %s, reset to default interval 12h", core.ServerInfo.Config.CompactInterval)
interval = 12 * time.Hour
}
s.goroutine.Do(func(ctx context.Context) {
- util.Logger().Infof("enabled the automatic compact mechanism, compact once every %s, reserve %d",
+ log.Infof("enabled the automatic compact mechanism, compact once every %s, reserve %d",
core.ServerInfo.Config.CompactInterval, delta)
for {
select {
@@ -131,7 +132,7 @@ func (s *ServiceCenterServer) autoCompactBackend() {
case <-time.After(interval):
lock, err := mux.Try(mux.GLOBAL_LOCK)
if lock == nil {
- util.Logger().Errorf(err, "can not compact backend by this service center instance now")
+ log.Errorf(err, "can not compact backend by this service center instance now")
continue
}
@@ -156,7 +157,7 @@ func (s *ServiceCenterServer) startApiServer() {
host, err := os.Hostname()
if err != nil {
host = restIp
- util.Logger().Errorf(err, "parse hostname failed")
+ log.Errorf(err, "parse hostname failed")
}
s.apiServer.HostName = host
s.apiServer.AddListener(REST, restIp, restPort)
@@ -179,9 +180,10 @@ func (s *ServiceCenterServer) Stop() {
s.goroutine.Close(true)
- util.GoCloseAndWait()
+ gopool.CloseAndWait()
backend.Registry().Close()
- util.Logger().Warnf("service center stopped")
+ log.Warnf("service center stopped")
+ log.Sync()
}
diff --git a/server/service/cache/filter_instances.go b/server/service/cache/filter_instances.go
index 1c38676..d82583b 100644
--- a/server/service/cache/filter_instances.go
+++ b/server/service/cache/filter_instances.go
@@ -19,7 +19,7 @@ package cache
import (
"fmt"
"github.com/apache/incubator-servicecomb-service-center/pkg/cache"
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
apt "github.com/apache/incubator-servicecomb-service-center/server/core"
"github.com/apache/incubator-servicecomb-service-center/server/core/backend"
pb "github.com/apache/incubator-servicecomb-service-center/server/core/proto"
@@ -51,7 +51,7 @@ func (f *InstancesFilter) Init(ctx context.Context, parent *cache.Node) (node *c
consumer := ctx.Value(CTX_FIND_CONSUMER).(*pb.MicroService)
findFlag := fmt.Sprintf("consumer %s find provider %s/%s/%s", consumer.ServiceId,
provider.AppId, provider.ServiceName, provider.Version)
- util.Logger().Errorf(err, "Instance().Search failed, %s", findFlag)
+ log.Errorf(err, "Instance().Search failed, %s", findFlag)
return nil, err
}
diff --git a/server/service/cache/filter_permission.go b/server/service/cache/filter_permission.go
index ef85944..3beae37 100644
--- a/server/service/cache/filter_permission.go
+++ b/server/service/cache/filter_permission.go
@@ -19,7 +19,7 @@ package cache
import (
"fmt"
"github.com/apache/incubator-servicecomb-service-center/pkg/cache"
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
pb "github.com/apache/incubator-servicecomb-service-center/server/core/proto"
serviceUtil "github.com/apache/incubator-servicecomb-service-center/server/service/util"
"golang.org/x/net/context"
@@ -42,7 +42,7 @@ func (f *AccessibleFilter) Init(ctx context.Context, parent *cache.Node) (node *
provider := ctx.Value(CTX_FIND_PROVIDER).(*pb.MicroServiceKey)
findFlag := fmt.Sprintf("consumer %s find provider %s/%s/%s", consumerId,
provider.AppId, provider.ServiceName, provider.Version)
- util.Logger().Errorf(err, "AccessibleFilter failed, %s", findFlag)
+ log.Errorf(err, "AccessibleFilter failed, %s", findFlag)
continue
}
ids = append(ids, providerServiceId)
diff --git a/server/service/cache/filter_tags.go b/server/service/cache/filter_tags.go
index da418c8..5139db1 100644
--- a/server/service/cache/filter_tags.go
+++ b/server/service/cache/filter_tags.go
@@ -19,6 +19,7 @@ package cache
import (
"fmt"
"github.com/apache/incubator-servicecomb-service-center/pkg/cache"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
pb "github.com/apache/incubator-servicecomb-service-center/server/core/proto"
serviceUtil "github.com/apache/incubator-servicecomb-service-center/server/service/util"
@@ -57,7 +58,7 @@ loopProviderIds:
provider := ctx.Value(CTX_FIND_PROVIDER).(*pb.MicroServiceKey)
findFlag := fmt.Sprintf("consumer %s find provider %s/%s/%s", consumer.ServiceId,
provider.AppId, provider.ServiceName, provider.Version)
- util.Logger().Errorf(err, "TagsFilter failed, %s", findFlag)
+ log.Errorf(err, "TagsFilter failed, %s", findFlag)
return nil, err
}
if len(tagsFromETCD) == 0 {
diff --git a/server/service/cache/filter_version.go b/server/service/cache/filter_version.go
index df9da3d..b65d0ca 100644
--- a/server/service/cache/filter_version.go
+++ b/server/service/cache/filter_version.go
@@ -19,7 +19,7 @@ package cache
import (
"fmt"
"github.com/apache/incubator-servicecomb-service-center/pkg/cache"
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
pb "github.com/apache/incubator-servicecomb-service-center/server/core/proto"
serviceUtil "github.com/apache/incubator-servicecomb-service-center/server/service/util"
"golang.org/x/net/context"
@@ -41,7 +41,7 @@ func (f *VersionRuleFilter) Init(ctx context.Context, parent *cache.Node) (node
consumer := ctx.Value(CTX_FIND_CONSUMER).(*pb.MicroService)
findFlag := fmt.Sprintf("consumer %s find provider %s/%s/%s", consumer.ServiceId,
provider.AppId, provider.ServiceName, provider.Version)
- util.Logger().Errorf(err, "VersionRuleFilter failed, %s", findFlag)
+ log.Errorf(err, "VersionRuleFilter failed, %s", findFlag)
return
}
if !exist {
diff --git a/server/service/dependency.go b/server/service/dependency.go
index 4c13dd0..31beb92 100644
--- a/server/service/dependency.go
+++ b/server/service/dependency.go
@@ -19,6 +19,7 @@ package service
import (
"encoding/json"
"fmt"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
apt "github.com/apache/incubator-servicecomb-service-center/server/core"
"github.com/apache/incubator-servicecomb-service-center/server/core/backend"
@@ -65,19 +66,19 @@ func (s *MicroServiceService) AddOrUpdateDependencies(ctx context.Context, depen
rsp := serviceUtil.ParamsChecker(consumerInfo, providersInfo)
if rsp != nil {
- util.Logger().Errorf(nil, "put request into dependency queue failed, override: %t, consumer is %s, %s",
+ log.Errorf(nil, "put request into dependency queue failed, override: %t, consumer is %s, %s",
override, consumerFlag, rsp.Response.Message)
return rsp.Response, nil
}
consumerId, err := serviceUtil.GetServiceId(ctx, consumerInfo)
if err != nil {
- util.Logger().Errorf(err, "put request into dependency queue failed, override: %t, get consumer %s id failed",
+ log.Errorf(err, "put request into dependency queue failed, override: %t, get consumer %s id failed",
override, consumerFlag)
return pb.CreateResponse(scerr.ErrInternal, err.Error()), err
}
if len(consumerId) == 0 {
- util.Logger().Errorf(nil, "put request into dependency queue failed, override: %t, consumer %s does not exist.",
+ log.Errorf(nil, "put request into dependency queue failed, override: %t, consumer %s does not exist.",
override, consumerFlag)
return pb.CreateResponse(scerr.ErrServiceNotExists, fmt.Sprintf("Consumer %s does not exist.", consumerFlag)), nil
}
@@ -85,7 +86,7 @@ func (s *MicroServiceService) AddOrUpdateDependencies(ctx context.Context, depen
dependencyInfo.Override = override
data, err := json.Marshal(dependencyInfo)
if err != nil {
- util.Logger().Errorf(err, "put request into dependency queue failed, override: %t, marshal consumer %s dependency failed",
+ log.Errorf(err, "put request into dependency queue failed, override: %t, marshal consumer %s dependency failed",
override, consumerFlag)
return pb.CreateResponse(scerr.ErrInternal, err.Error()), err
}
@@ -100,11 +101,11 @@ func (s *MicroServiceService) AddOrUpdateDependencies(ctx context.Context, depen
err := backend.BatchCommit(ctx, opts)
if err != nil {
- util.Logger().Errorf(err, "put request into dependency queue failed, override: %t, %v", override, dependencyInfos)
+ log.Errorf(err, "put request into dependency queue failed, override: %t, %v", override, dependencyInfos)
return pb.CreateResponse(scerr.ErrInternal, err.Error()), err
}
- util.Logger().Infof("put request into dependency queue successfully, override: %t, %v, from remote %s",
+ log.Infof("put request into dependency queue successfully, override: %t, %v, from remote %s",
override, dependencyInfos, util.GetIPFromContext(ctx))
return pb.CreateResponse(pb.Response_SUCCESS, "Create dependency successfully."), nil
}
@@ -112,7 +113,7 @@ func (s *MicroServiceService) AddOrUpdateDependencies(ctx context.Context, depen
func (s *MicroServiceService) GetProviderDependencies(ctx context.Context, in *pb.GetDependenciesRequest) (*pb.GetProDependenciesResponse, error) {
err := Validate(in)
if err != nil {
- util.Logger().Errorf(err, "GetProviderDependencies failed for validating parameters failed.")
+ log.Errorf(err, "GetProviderDependencies failed for validating parameters failed.")
return &pb.GetProDependenciesResponse{
Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
}, nil
@@ -122,11 +123,11 @@ func (s *MicroServiceService) GetProviderDependencies(ctx context.Context, in *p
provider, err := serviceUtil.GetService(ctx, domainProject, providerServiceId)
if err != nil {
- util.Logger().Errorf(err, "GetProviderDependencies failed, %s.", providerServiceId)
+ log.Errorf(err, "GetProviderDependencies failed, %s.", providerServiceId)
return nil, err
}
if provider == nil {
- util.Logger().Errorf(err, "GetProviderDependencies failed for provider does not exist, %s.", providerServiceId)
+ log.Errorf(err, "GetProviderDependencies failed for provider does not exist, %s.", providerServiceId)
return &pb.GetProDependenciesResponse{
Response: pb.CreateResponse(scerr.ErrServiceNotExists, "Provider does not exist"),
}, nil
@@ -135,7 +136,7 @@ func (s *MicroServiceService) GetProviderDependencies(ctx context.Context, in *p
dr := serviceUtil.NewProviderDependencyRelation(ctx, domainProject, provider)
services, err := dr.GetDependencyConsumers(toDependencyFilterOptions(in)...)
if err != nil {
- util.Logger().Errorf(err, "GetProviderDependencies failed.")
+ log.Errorf(err, "GetProviderDependencies failed.")
return &pb.GetProDependenciesResponse{
Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
}, err
@@ -149,7 +150,7 @@ func (s *MicroServiceService) GetProviderDependencies(ctx context.Context, in *p
func (s *MicroServiceService) GetConsumerDependencies(ctx context.Context, in *pb.GetDependenciesRequest) (*pb.GetConDependenciesResponse, error) {
err := Validate(in)
if err != nil {
- util.Logger().Errorf(err, "GetConsumerDependencies failed for validating parameters failed.")
+ log.Errorf(err, "GetConsumerDependencies failed for validating parameters failed.")
return &pb.GetConDependenciesResponse{
Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
}, nil
@@ -159,13 +160,13 @@ func (s *MicroServiceService) GetConsumerDependencies(ctx context.Context, in *p
consumer, err := serviceUtil.GetService(ctx, domainProject, consumerId)
if err != nil {
- util.Logger().Errorf(err, "GetConsumerDependencies failed for get consumer failed.")
+ log.Errorf(err, "GetConsumerDependencies failed for get consumer failed.")
return &pb.GetConDependenciesResponse{
Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
}, err
}
if consumer == nil {
- util.Logger().Errorf(err, "GetConsumerDependencies failed for consumer does not exist, %s.", consumerId)
+ log.Errorf(err, "GetConsumerDependencies failed for consumer does not exist, %s.", consumerId)
return &pb.GetConDependenciesResponse{
Response: pb.CreateResponse(scerr.ErrServiceNotExists, "Consumer does not exist"),
}, nil
@@ -174,7 +175,7 @@ func (s *MicroServiceService) GetConsumerDependencies(ctx context.Context, in *p
dr := serviceUtil.NewConsumerDependencyRelation(ctx, domainProject, consumer)
services, err := dr.GetDependencyProviders(toDependencyFilterOptions(in)...)
if err != nil {
- util.Logger().Errorf(err, "GetConsumerDependencies failed for get providers failed.")
+ log.Errorf(err, "GetConsumerDependencies failed for get providers failed.")
return &pb.GetConDependenciesResponse{
Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
}, err
diff --git a/server/service/event/dependency_event_handler.go b/server/service/event/dependency_event_handler.go
index 235fa02..f4552ae 100644
--- a/server/service/event/dependency_event_handler.go
+++ b/server/service/event/dependency_event_handler.go
@@ -18,6 +18,9 @@ package event
import (
"fmt"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/gopool"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/queue"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
"github.com/apache/incubator-servicecomb-service-center/server/core"
"github.com/apache/incubator-servicecomb-service-center/server/core/backend"
@@ -30,7 +33,7 @@ import (
)
type DependencyEventHandler struct {
- signals *util.UniQueue
+ signals *queue.UniQueue
}
func (h *DependencyEventHandler) Type() backend.StoreType {
@@ -47,7 +50,7 @@ func (h *DependencyEventHandler) OnEvent(evt backend.KvEvent) {
}
func (h *DependencyEventHandler) loop() {
- util.Go(func(ctx context.Context) {
+ gopool.Go(func(ctx context.Context) {
retries := 0
delay := func() {
<-time.After(util.GetBackoff().Delay(retries))
@@ -62,7 +65,7 @@ func (h *DependencyEventHandler) loop() {
case <-h.signals.Chan():
lock, err := mux.Try(mux.DEP_QUEUE_LOCK)
if err != nil {
- util.Logger().Errorf(err, "try to lock %s failed", mux.DEP_QUEUE_LOCK)
+ log.Errorf(err, "try to lock %s failed", mux.DEP_QUEUE_LOCK)
delay()
continue
}
@@ -75,7 +78,7 @@ func (h *DependencyEventHandler) loop() {
err = h.Handle()
lock.Unlock()
if err != nil {
- util.Logger().Errorf(err, "handle dependency event failed")
+ log.Errorf(err, "handle dependency event failed")
delay()
continue
}
@@ -160,16 +163,16 @@ func (h *DependencyEventHandler) dependencyRuleHandle(res interface{}) error {
}
if err != nil {
- util.Logger().Errorf(err, "modify dependency rule failed, override: %t, consumer %s", r.Override, consumerFlag)
+ log.Errorf(err, "modify dependency rule failed, override: %t, consumer %s", r.Override, consumerFlag)
return fmt.Errorf("override: %t, consumer is %s, %s", r.Override, consumerFlag, err.Error())
}
if err = h.removeKV(ctx, dependencyEventHandlerRes.kv); err != nil {
- util.Logger().Errorf(err, "remove dependency rule failed, override: %t, consumer %s", r.Override, consumerFlag)
+ log.Errorf(err, "remove dependency rule failed, override: %t, consumer %s", r.Override, consumerFlag)
return err
}
- util.Logger().Infof("maintain dependency %v successfully, override: %t", r, r.Override)
+ log.Infof("maintain dependency %v successfully, override: %t", r, r.Override)
return nil
}
@@ -181,14 +184,14 @@ func (h *DependencyEventHandler) removeKV(ctx context.Context, kv *backend.KeyVa
return fmt.Errorf("can not remove the dependency %s request, %s", util.BytesToStringWithNoCopy(kv.Key), err.Error())
}
if !dResp.Succeeded {
- util.Logger().Infof("the dependency %s request is changed", util.BytesToStringWithNoCopy(kv.Key))
+ log.Infof("the dependency %s request is changed", util.BytesToStringWithNoCopy(kv.Key))
}
return nil
}
func NewDependencyEventHandler() *DependencyEventHandler {
h := &DependencyEventHandler{
- signals: util.NewUniQueue(),
+ signals: queue.NewUniQueue(),
}
h.loop()
return h
diff --git a/server/service/event/instance_event_handler.go b/server/service/event/instance_event_handler.go
index b660508..a66db69 100644
--- a/server/service/event/instance_event_handler.go
+++ b/server/service/event/instance_event_handler.go
@@ -17,6 +17,7 @@
package event
import (
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
apt "github.com/apache/incubator-servicecomb-service-center/server/core"
"github.com/apache/incubator-servicecomb-service-center/server/core/backend"
@@ -58,17 +59,17 @@ func (h *InstanceEventHandler) OnEvent(evt backend.KvEvent) {
}
if nf.GetNotifyService().Closed() {
- util.Logger().Warnf("caught [%s] instance event %s/%s, but notify service is closed",
+ log.Warnf("caught [%s] instance event %s/%s, but notify service is closed",
action, providerId, providerInstanceId)
return
}
- util.Logger().Infof("caught [%s] instance event %s/%s", action, providerId, providerInstanceId)
+ log.Infof("caught [%s] instance event %s/%s", action, providerId, providerInstanceId)
// 查询服务版本信息
ctx := util.SetContext(context.Background(), serviceUtil.CTX_CACHEONLY, "1")
ms, err := serviceUtil.GetService(ctx, domainProject, providerId)
if ms == nil {
- util.Logger().Errorf(err, "get provider service %s/%s id in cache failed",
+ log.Errorf(err, "get provider service %s/%s id in cache failed",
providerId, providerInstanceId)
return
}
@@ -76,7 +77,7 @@ func (h *InstanceEventHandler) OnEvent(evt backend.KvEvent) {
// 查询所有consumer
consumerIds, _, err := serviceUtil.GetAllConsumerIds(ctx, domainProject, ms)
if err != nil {
- util.Logger().Errorf(err, "query service %s consumers failed", providerId)
+ log.Errorf(err, "query service %s consumers failed", providerId)
return
}
diff --git a/server/service/event/rule_event_handler.go b/server/service/event/rule_event_handler.go
index e2bc687..de88fc8 100644
--- a/server/service/event/rule_event_handler.go
+++ b/server/service/event/rule_event_handler.go
@@ -18,6 +18,7 @@ package event
import (
"fmt"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/task"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
"github.com/apache/incubator-servicecomb-service-center/server/core/backend"
@@ -54,17 +55,17 @@ func (apt *RulesChangedTask) publish(ctx context.Context, domainProject, provide
provider, err := serviceUtil.GetService(ctx, domainProject, providerId)
if err != nil {
- util.Logger().Errorf(err, "get provider %s service file failed", providerId)
+ log.Errorf(err, "get provider %s service file failed", providerId)
return err
}
if provider == nil {
- util.Logger().Errorf(nil, "provider %s does not exist", providerId)
+ log.Errorf(nil, "provider %s does not exist", providerId)
return fmt.Errorf("provider %s does not exist", providerId)
}
consumerIds, err := serviceUtil.GetConsumerIds(ctx, domainProject, provider)
if err != nil {
- util.Logger().Errorf(err, "get consumer services by provider %s failed", providerId)
+ log.Errorf(err, "get consumer services by provider %s failed", providerId)
return err
}
providerKey := pb.MicroServiceToKey(domainProject, provider)
@@ -88,11 +89,11 @@ func (h *RuleEventHandler) OnEvent(evt backend.KvEvent) {
providerId, ruleId, domainProject := backend.GetInfoFromRuleKV(evt.KV)
if nf.GetNotifyService().Closed() {
- util.Logger().Warnf("caught [%s] service rule event %s/%s, but notify service is closed",
+ log.Warnf("caught [%s] service rule event %s/%s, but notify service is closed",
action, providerId, ruleId)
return
}
- util.Logger().Infof("caught [%s] service rule event %s/%s", action, providerId, ruleId)
+ log.Infof("caught [%s] service rule event %s/%s", action, providerId, ruleId)
task.Service().Add(context.Background(),
NewRulesChangedAsyncTask(domainProject, providerId, evt.Revision))
diff --git a/server/service/event/service_event_handler.go b/server/service/event/service_event_handler.go
index 613a087..dcb08f5 100644
--- a/server/service/event/service_event_handler.go
+++ b/server/service/event/service_event_handler.go
@@ -17,7 +17,7 @@
package event
import (
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/server/core/backend"
pb "github.com/apache/incubator-servicecomb-service-center/server/core/proto"
"github.com/apache/incubator-servicecomb-service-center/server/service/cache"
@@ -47,7 +47,7 @@ func (h *ServiceEventHandler) OnEvent(evt backend.KvEvent) {
newProject := domainProject[strings.Index(domainProject, "/")+1:]
err := serviceUtil.NewDomainProject(context.Background(), newDomain, newProject)
if err != nil {
- util.Logger().Errorf(err, "new domain(%s) or project(%s) failed", newDomain, newProject)
+ log.Errorf(err, "new domain(%s) or project(%s) failed", newDomain, newProject)
}
case pb.EVT_DELETE:
metrics.ReportServices(fn, fv, -1)
@@ -58,7 +58,7 @@ func (h *ServiceEventHandler) OnEvent(evt backend.KvEvent) {
return
}
- util.Logger().Infof("caught [%s] service %s/%s/%s event",
+ log.Infof("caught [%s] service %s/%s/%s event",
evt.Type, ms.AppId, ms.ServiceName, ms.Version)
// cache
diff --git a/server/service/event/tag_event_handler.go b/server/service/event/tag_event_handler.go
index aecf7cb..101b224 100644
--- a/server/service/event/tag_event_handler.go
+++ b/server/service/event/tag_event_handler.go
@@ -18,6 +18,7 @@ package event
import (
"fmt"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/task"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
"github.com/apache/incubator-servicecomb-service-center/server/core/backend"
@@ -55,11 +56,11 @@ func (apt *TagsChangedTask) publish(ctx context.Context, domainProject, consumer
consumer, err := serviceUtil.GetService(ctx, domainProject, consumerId)
if err != nil {
- util.Logger().Errorf(err, "get consumer for publish event %s failed", consumerId)
+ log.Errorf(err, "get consumer for publish event %s failed", consumerId)
return err
}
if consumer == nil {
- util.Logger().Errorf(nil, "service not exist, %s", consumerId)
+ log.Errorf(nil, "service not exist, %s", consumerId)
return fmt.Errorf("service not exist, %s", consumerId)
}
@@ -68,14 +69,14 @@ func (apt *TagsChangedTask) publish(ctx context.Context, domainProject, consumer
providerIds, err := serviceUtil.GetProviderIds(ctx, domainProject, consumer)
if err != nil {
- util.Logger().Errorf(err, "get provider services by consumer %s failed", consumerId)
+ log.Errorf(err, "get provider services by consumer %s failed", consumerId)
return err
}
for _, providerId := range providerIds {
provider, err := serviceUtil.GetService(ctx, domainProject, providerId)
if provider == nil {
- util.Logger().Errorf(err, "get service %s file failed", providerId)
+ log.Errorf(err, "get service %s file failed", providerId)
continue
}
providerKey := pb.MicroServiceToKey(domainProject, provider)
@@ -101,11 +102,11 @@ func (h *TagEventHandler) OnEvent(evt backend.KvEvent) {
consumerId, domainProject := backend.GetInfoFromTagKV(evt.KV)
if nf.GetNotifyService().Closed() {
- util.Logger().Warnf("caught [%s] service tags event %s/%s, but notify service is closed",
+ log.Warnf("caught [%s] service tags event %s/%s, but notify service is closed",
action, consumerId, evt.KV.Value)
return
}
- util.Logger().Infof("caught [%s] service tags event %s/%s", action, consumerId, evt.KV.Value)
+ log.Infof("caught [%s] service tags event %s/%s", action, consumerId, evt.KV.Value)
task.Service().Add(context.Background(),
NewTagsChangedAsyncTask(domainProject, consumerId, evt.Revision))
diff --git a/server/service/instance.go b/server/service/instance.go
index fe1ef03..9e61229 100644
--- a/server/service/instance.go
+++ b/server/service/instance.go
@@ -20,6 +20,8 @@ import (
"encoding/json"
"errors"
"fmt"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/gopool"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
apt "github.com/apache/incubator-servicecomb-service-center/server/core"
"github.com/apache/incubator-servicecomb-service-center/server/core/backend"
@@ -89,7 +91,7 @@ func (s *InstanceService) Register(ctx context.Context, in *pb.RegisterInstanceR
remoteIP := util.GetIPFromContext(ctx)
if err := Validate(in); err != nil {
- util.Logger().Errorf(err, "register instance failed, invalid parameters, operator %s", remoteIP)
+ log.Errorf(err, "register instance failed, invalid parameters, operator %s", remoteIP)
return &pb.RegisterInstanceResponse{
Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
}, nil
@@ -101,7 +103,7 @@ func (s *InstanceService) Register(ctx context.Context, in *pb.RegisterInstanceR
//如果没填写 并且endpoints沒重復,則产生新的全局instance id
oldInstanceId, checkErr := serviceUtil.InstanceExist(ctx, in.Instance)
if checkErr != nil {
- util.Logger().Errorf(checkErr, "instance existence check failed, endpoints %v, host '%s', serviceId %s, operator %s",
+ log.Errorf(checkErr, "instance existence check failed, endpoints %v, host '%s', serviceId %s, operator %s",
instance.Endpoints, instance.HostName, instance.ServiceId, remoteIP)
resp := pb.CreateResponseWithSCErr(checkErr)
if checkErr.InternalError() {
@@ -110,7 +112,7 @@ func (s *InstanceService) Register(ctx context.Context, in *pb.RegisterInstanceR
return &pb.RegisterInstanceResponse{Response: resp}, nil
}
if len(oldInstanceId) > 0 {
- util.Logger().Infof("register instance successful, reuse service %s instance %s, operator %s",
+ log.Infof("register instance successful, reuse service %s instance %s, operator %s",
instance.ServiceId, oldInstanceId, remoteIP)
return &pb.RegisterInstanceResponse{
Response: pb.CreateResponse(pb.Response_SUCCESS, "instance more exist"),
@@ -119,7 +121,7 @@ func (s *InstanceService) Register(ctx context.Context, in *pb.RegisterInstanceR
}
if err := s.preProcessRegisterInstance(ctx, instance); err != nil {
- util.Logger().Errorf(err, "register instance failed, endpoints %v, host '%s', serviceId %s, operator %s",
+ log.Errorf(err, "register instance failed, endpoints %v, host '%s', serviceId %s, operator %s",
instance.Endpoints, instance.HostName, instance.ServiceId, remoteIP)
return &pb.RegisterInstanceResponse{
Response: pb.CreateResponseWithSCErr(err),
@@ -133,24 +135,21 @@ func (s *InstanceService) Register(ctx context.Context, in *pb.RegisterInstanceR
//先以domain/project的方式组装
domainProject := util.ParseDomainProject(ctx)
- var reporter quota.QuotaReporter
+ var reporter *quota.ApplyQuotaResult
if !apt.IsSCInstance(ctx) {
res := quota.NewApplyQuotaResource(quota.MicroServiceInstanceQuotaType,
domainProject, in.Instance.ServiceId, 1)
- rst := plugin.Plugins().Quota().Apply4Quotas(ctx, res)
- reporter = rst.Reporter
- err := rst.Err
- if reporter != nil {
- defer reporter.Close()
- }
- if err != nil {
- util.Logger().Errorf(err, "register instance failed, %s, operator %s",
+ reporter = plugin.Plugins().Quota().Apply4Quotas(ctx, res)
+ defer reporter.Close(ctx)
+
+ if reporter.Err != nil {
+ log.Errorf(reporter.Err, "register instance failed, %s, operator %s",
instanceFlag, remoteIP)
response := &pb.RegisterInstanceResponse{
- Response: pb.CreateResponseWithSCErr(err),
+ Response: pb.CreateResponseWithSCErr(reporter.Err),
}
- if err.InternalError() {
- return response, err
+ if reporter.Err.InternalError() {
+ return response, reporter.Err
}
return response, nil
}
@@ -159,7 +158,7 @@ func (s *InstanceService) Register(ctx context.Context, in *pb.RegisterInstanceR
instanceId := instance.InstanceId
data, err := json.Marshal(instance)
if err != nil {
- util.Logger().Errorf(err,
+ log.Errorf(err,
"register instance failed, %s, instanceId %s, operator %s",
instanceFlag, instanceId, remoteIP)
return &pb.RegisterInstanceResponse{
@@ -169,7 +168,7 @@ func (s *InstanceService) Register(ctx context.Context, in *pb.RegisterInstanceR
leaseID, err := backend.Registry().LeaseGrant(ctx, ttl)
if err != nil {
- util.Logger().Errorf(err, "grant lease failed, %s, operator: %s", instanceFlag, remoteIP)
+ log.Errorf(err, "grant lease failed, %s, operator: %s", instanceFlag, remoteIP)
return &pb.RegisterInstanceResponse{
Response: pb.CreateResponse(scerr.ErrUnavailableBackend, err.Error()),
}, err
@@ -192,7 +191,7 @@ func (s *InstanceService) Register(ctx context.Context, in *pb.RegisterInstanceR
registry.CMP_NOT_EQUAL, 0)},
nil)
if err != nil {
- util.Logger().Errorf(err,
+ log.Errorf(err,
"register instance failed, %s, instanceId %s, operator %s",
instanceFlag, instanceId, remoteIP)
return &pb.RegisterInstanceResponse{
@@ -200,7 +199,7 @@ func (s *InstanceService) Register(ctx context.Context, in *pb.RegisterInstanceR
}, err
}
if !resp.Succeeded {
- util.Logger().Errorf(nil,
+ log.Errorf(nil,
"register instance failed, %s, instanceId %s, operator %s: service does not exist",
instanceFlag, instanceId, remoteIP)
return &pb.RegisterInstanceResponse{
@@ -208,14 +207,13 @@ func (s *InstanceService) Register(ctx context.Context, in *pb.RegisterInstanceR
}, nil
}
- if reporter != nil {
- if err := reporter.ReportUsedQuota(ctx); err != nil {
- util.Logger().Errorf(err,
- "register instance failed, %s, instanceId %s, operator %s",
- instanceFlag, instanceId, remoteIP)
- }
+ if err := reporter.ReportUsedQuota(ctx); err != nil {
+ log.Errorf(err,
+ "register instance failed, %s, instanceId %s, operator %s",
+ instanceFlag, instanceId, remoteIP)
}
- util.Logger().Infof("register instance %s, instanceId %s, operator %s",
+
+ log.Infof("register instance %s, instanceId %s, operator %s",
instanceFlag, instanceId, remoteIP)
return &pb.RegisterInstanceResponse{
Response: pb.CreateResponse(pb.Response_SUCCESS, "Register service instance successfully."),
@@ -227,7 +225,7 @@ func (s *InstanceService) Unregister(ctx context.Context, in *pb.UnregisterInsta
remoteIP := util.GetIPFromContext(ctx)
if err := Validate(in); err != nil {
- util.Logger().Errorf(err, "unregister instance failed, invalid parameters, operator %s.", remoteIP)
+ log.Errorf(err, "unregister instance failed, invalid parameters, operator %s.", remoteIP)
return &pb.UnregisterInstanceResponse{
Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
}, nil
@@ -241,13 +239,13 @@ func (s *InstanceService) Unregister(ctx context.Context, in *pb.UnregisterInsta
isExist, err := serviceUtil.InstanceExistById(ctx, domainProject, serviceId, instanceId)
if err != nil {
- util.Logger().Errorf(err, "unregister instance failed, instance %s, operator %s: query instance failed.", instanceFlag, remoteIP)
+ log.Errorf(err, "unregister instance failed, instance %s, operator %s: query instance failed.", instanceFlag, remoteIP)
return &pb.UnregisterInstanceResponse{
Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
}, err
}
if !isExist {
- util.Logger().Errorf(nil, "unregister instance failed, instance %s, operator %s: instance not exist.", instanceFlag, remoteIP)
+ log.Errorf(nil, "unregister instance failed, instance %s, operator %s: instance not exist.", instanceFlag, remoteIP)
return &pb.UnregisterInstanceResponse{
Response: pb.CreateResponse(scerr.ErrInstanceNotExists, "Service instance does not exist."),
}, nil
@@ -255,7 +253,7 @@ func (s *InstanceService) Unregister(ctx context.Context, in *pb.UnregisterInsta
err, isInnerErr := revokeInstance(ctx, domainProject, serviceId, instanceId)
if err != nil {
- util.Logger().Errorf(nil, "unregister instance failed, instance %s, operator %s: revoke instance failed.", instanceFlag, remoteIP)
+ log.Errorf(nil, "unregister instance failed, instance %s, operator %s: revoke instance failed.", instanceFlag, remoteIP)
if isInnerErr {
return &pb.UnregisterInstanceResponse{
Response: pb.CreateResponse(scerr.ErrUnavailableBackend, err.Error()),
@@ -266,7 +264,7 @@ func (s *InstanceService) Unregister(ctx context.Context, in *pb.UnregisterInsta
}, nil
}
- util.Logger().Infof("unregister instance %s, operator %s.", instanceFlag, remoteIP)
+ log.Infof("unregister instance %s, operator %s.", instanceFlag, remoteIP)
return &pb.UnregisterInstanceResponse{
Response: pb.CreateResponse(pb.Response_SUCCESS, "Unregister service instance successfully."),
}, nil
@@ -292,7 +290,7 @@ func (s *InstanceService) Heartbeat(ctx context.Context, in *pb.HeartbeatRequest
remoteIP := util.GetIPFromContext(ctx)
if err := Validate(in); err != nil {
- util.Logger().Errorf(err, "heartbeat failed, invalid parameters, operator %s.", remoteIP)
+ log.Errorf(err, "heartbeat failed, invalid parameters, operator %s.", remoteIP)
return &pb.HeartbeatResponse{
Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
}, nil
@@ -303,7 +301,7 @@ func (s *InstanceService) Heartbeat(ctx context.Context, in *pb.HeartbeatRequest
_, ttl, err, isInnerErr := serviceUtil.HeartbeatUtil(ctx, domainProject, in.ServiceId, in.InstanceId)
if err != nil {
- util.Logger().Errorf(err, "heartbeat failed, instance %s, internal error '%v'. operator: %s",
+ log.Errorf(err, "heartbeat failed, instance %s, internal error '%v'. operator: %s",
instanceFlag, isInnerErr, remoteIP)
if isInnerErr {
return &pb.HeartbeatResponse{
@@ -316,10 +314,10 @@ func (s *InstanceService) Heartbeat(ctx context.Context, in *pb.HeartbeatRequest
}
if ttl == 0 {
- util.Logger().Errorf(errors.New("connect backend timed out"),
+ log.Errorf(errors.New("connect backend timed out"),
"heartbeat successful, but renew %s failed. operator: %s", instanceFlag, remoteIP)
} else {
- util.Logger().Infof("heartbeat successful: %s renew ttl to %d. operator: %s", instanceFlag, ttl, remoteIP)
+ log.Infof("heartbeat successful: %s renew ttl to %d. operator: %s", instanceFlag, ttl, remoteIP)
}
return &pb.HeartbeatResponse{
Response: pb.CreateResponse(pb.Response_SUCCESS, "Update service instance heartbeat successfully."),
@@ -328,7 +326,7 @@ func (s *InstanceService) Heartbeat(ctx context.Context, in *pb.HeartbeatRequest
func (s *InstanceService) HeartbeatSet(ctx context.Context, in *pb.HeartbeatSetRequest) (*pb.HeartbeatSetResponse, error) {
if len(in.Instances) == 0 {
- util.Logger().Errorf(nil, "heartbeats failed, invalid request. Body not contain Instances or is empty.")
+ log.Errorf(nil, "heartbeats failed, invalid request. Body not contain Instances or is empty.")
return &pb.HeartbeatSetResponse{
Response: pb.CreateResponse(scerr.ErrInvalidParams, "Request format invalid."),
}, nil
@@ -341,13 +339,13 @@ func (s *InstanceService) HeartbeatSet(ctx context.Context, in *pb.HeartbeatSetR
noMultiCounter := 0
for _, heartbeatElement := range in.Instances {
if _, ok := existFlag[heartbeatElement.ServiceId+heartbeatElement.InstanceId]; ok {
- util.Logger().Warnf("heartbeat set %s/%s multiple", heartbeatElement.ServiceId, heartbeatElement.InstanceId)
+ log.Warnf("heartbeat set %s/%s multiple", heartbeatElement.ServiceId, heartbeatElement.InstanceId)
continue
} else {
existFlag[heartbeatElement.ServiceId+heartbeatElement.InstanceId] = true
noMultiCounter++
}
- util.Go(getHeartbeatFunc(ctx, domainProject, instancesHbRst, heartbeatElement))
+ gopool.Go(getHeartbeatFunc(ctx, domainProject, instancesHbRst, heartbeatElement))
}
count := 0
successFlag := false
@@ -366,13 +364,13 @@ func (s *InstanceService) HeartbeatSet(ctx context.Context, in *pb.HeartbeatSetR
}
}
if !failFlag && successFlag {
- util.Logger().Infof("heartbeat set success")
+ log.Infof("heartbeat set success")
return &pb.HeartbeatSetResponse{
Response: pb.CreateResponse(pb.Response_SUCCESS, "Heartbeat set successfully."),
Instances: instanceHbRstArr,
}, nil
} else {
- util.Logger().Errorf(nil, "heartbeat set failed, %v", in.Instances)
+ log.Errorf(nil, "heartbeat set failed, %v", in.Instances)
return &pb.HeartbeatSetResponse{
Response: pb.CreateResponse(scerr.ErrInstanceNotExists, "Heartbeat set failed."),
Instances: instanceHbRstArr,
@@ -390,7 +388,7 @@ func getHeartbeatFunc(ctx context.Context, domainProject string, instancesHbRst
_, _, err, _ := serviceUtil.HeartbeatUtil(ctx, domainProject, element.ServiceId, element.InstanceId)
if err != nil {
hbRst.ErrMessage = err.Error()
- util.Logger().Errorf(err, "heartbeat set failed, %s/%s", element.ServiceId, element.InstanceId)
+ log.Errorf(err, "heartbeat set failed, %s/%s", element.ServiceId, element.InstanceId)
}
instancesHbRst <- hbRst
}
@@ -398,13 +396,13 @@ func getHeartbeatFunc(ctx context.Context, domainProject string, instancesHbRst
func (s *InstanceService) GetOneInstance(ctx context.Context, in *pb.GetOneInstanceRequest) (*pb.GetOneInstanceResponse, error) {
if err := Validate(in); err != nil {
- util.Logger().Errorf(err, "get instance failed: invalid parameters.")
+ log.Errorf(err, "get instance failed: invalid parameters.")
return &pb.GetOneInstanceResponse{
Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
}, nil
}
if checkErr := s.getInstancePreCheck(ctx, in.ProviderServiceId, in.ConsumerServiceId, in.Tags); checkErr != nil {
- util.Logger().Errorf(checkErr, "get instance failed: pre check failed.")
+ log.Errorf(checkErr, "get instance failed: pre check failed.")
resp := &pb.GetOneInstanceResponse{
Response: pb.CreateResponseWithSCErr(checkErr),
}
@@ -419,13 +417,13 @@ func (s *InstanceService) GetOneInstance(ctx context.Context, in *pb.GetOneInsta
instanceId := in.ProviderInstanceId
instance, err := serviceUtil.GetInstance(ctx, util.ParseTargetDomainProject(ctx), serviceId, instanceId)
if err != nil {
- util.Logger().Errorf(err, "get instance failed, %s(consumer/provider): get instance failed.", conPro)
+ log.Errorf(err, "get instance failed, %s(consumer/provider): get instance failed.", conPro)
return &pb.GetOneInstanceResponse{
Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
}, err
}
if instance == nil {
- util.Logger().Errorf(nil, "get instance failed, %s(consumer/provider): instance not exist.", conPro)
+ log.Errorf(nil, "get instance failed, %s(consumer/provider): instance not exist.", conPro)
return &pb.GetOneInstanceResponse{
Response: pb.CreateResponse(scerr.ErrInstanceNotExists, "Service instance does not exist."),
}, nil
@@ -465,13 +463,13 @@ func (s *InstanceService) getInstancePreCheck(ctx context.Context, providerServi
func (s *InstanceService) GetInstances(ctx context.Context, in *pb.GetInstancesRequest) (*pb.GetInstancesResponse, error) {
if err := Validate(in); err != nil {
- util.Logger().Errorf(err, "get instances failed: invalid parameters.")
+ log.Errorf(err, "get instances failed: invalid parameters.")
return &pb.GetInstancesResponse{
Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
}, nil
}
if checkErr := s.getInstancePreCheck(ctx, in.ProviderServiceId, in.ConsumerServiceId, in.Tags); checkErr != nil {
- util.Logger().Errorf(checkErr, "get instances failed: pre check failed.")
+ log.Errorf(checkErr, "get instances failed: pre check failed.")
resp := &pb.GetInstancesResponse{
Response: pb.CreateResponseWithSCErr(checkErr),
}
@@ -484,7 +482,7 @@ func (s *InstanceService) GetInstances(ctx context.Context, in *pb.GetInstancesR
instances, err := serviceUtil.GetAllInstancesOfOneService(ctx, util.ParseTargetDomainProject(ctx), in.ProviderServiceId)
if err != nil {
- util.Logger().Errorf(err, "get instances failed, %s(consumer/provider): get instances from etcd failed.", conPro)
+ log.Errorf(err, "get instances failed, %s(consumer/provider): get instances from etcd failed.", conPro)
return &pb.GetInstancesResponse{
Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
}, err
@@ -498,7 +496,7 @@ func (s *InstanceService) GetInstances(ctx context.Context, in *pb.GetInstancesR
func (s *InstanceService) Find(ctx context.Context, in *pb.FindInstancesRequest) (*pb.FindInstancesResponse, error) {
err := Validate(in)
if err != nil {
- util.Logger().Errorf(err, "find instance failed: invalid parameters.")
+ log.Errorf(err, "find instance failed: invalid parameters.")
return &pb.FindInstancesResponse{
Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
}, nil
@@ -508,14 +506,14 @@ func (s *InstanceService) Find(ctx context.Context, in *pb.FindInstancesRequest)
service, err := serviceUtil.GetService(ctx, domainProject, in.ConsumerServiceId)
if err != nil {
- util.Logger().Errorf(err, "get consumer failed, consumer %s find provider %s/%s/%s",
+ log.Errorf(err, "get consumer failed, consumer %s find provider %s/%s/%s",
in.ConsumerServiceId, in.AppId, in.ServiceName, in.VersionRule)
return &pb.FindInstancesResponse{
Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
}, err
}
if service == nil {
- util.Logger().Errorf(nil, "consumer not exist, consumer %s find provider %s/%s/%s",
+ log.Errorf(nil, "consumer not exist, consumer %s find provider %s/%s/%s",
in.ConsumerServiceId, in.AppId, in.ServiceName, in.VersionRule)
return &pb.FindInstancesResponse{
Response: pb.CreateResponse(scerr.ErrServiceNotExists, "Consumer does not exist."),
@@ -564,14 +562,14 @@ func (s *InstanceService) Find(ctx context.Context, in *pb.FindInstancesRequest)
for ; i < 2; i++ {
item, err = cache.FindInstances.Get(cloneCtx, service, provider, in.Tags)
if err != nil {
- util.Logger().Errorf(err, "FindInstancesCache.Get failed, %s", findFlag)
+ log.Errorf(err, "FindInstancesCache.Get failed, %s", findFlag)
return &pb.FindInstancesResponse{
Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
}, err
}
if item == nil {
mes := fmt.Errorf("provider does not exist, %s", findFlag)
- util.Logger().Errorf(mes, "FindInstancesCache.Get failed")
+ log.Errorf(mes, "FindInstancesCache.Get failed")
return &pb.FindInstancesResponse{
Response: pb.CreateResponse(scerr.ErrServiceNotExists, mes.Error()),
}, nil
@@ -591,13 +589,13 @@ func (s *InstanceService) Find(ctx context.Context, in *pb.FindInstancesRequest)
err = serviceUtil.AddServiceVersionRule(ctx, domainProject, service, provider)
} else {
mes := fmt.Errorf("provider does not exist, %s", findFlag)
- util.Logger().Errorf(mes, "AddServiceVersionRule failed")
+ log.Errorf(mes, "AddServiceVersionRule failed")
return &pb.FindInstancesResponse{
Response: pb.CreateResponse(scerr.ErrServiceNotExists, mes.Error()),
}, nil
}
if err != nil {
- util.Logger().Errorf(err, "AddServiceVersionRule failed, %s", findFlag)
+ log.Errorf(err, "AddServiceVersionRule failed, %s", findFlag)
return &pb.FindInstancesResponse{
Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
}, err
@@ -632,7 +630,7 @@ func (s *InstanceService) UpdateStatus(ctx context.Context, in *pb.UpdateInstanc
domainProject := util.ParseDomainProject(ctx)
updateStatusFlag := util.StringJoin([]string{in.ServiceId, in.InstanceId, in.Status}, "/")
if err := Validate(in); err != nil {
- util.Logger().Errorf(nil, "update instance status failed, %s.", updateStatusFlag)
+ log.Errorf(nil, "update instance status failed, %s.", updateStatusFlag)
return &pb.UpdateInstanceStatusResponse{
Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
}, nil
@@ -640,13 +638,13 @@ func (s *InstanceService) UpdateStatus(ctx context.Context, in *pb.UpdateInstanc
instance, err := serviceUtil.GetInstance(ctx, domainProject, in.ServiceId, in.InstanceId)
if err != nil {
- util.Logger().Errorf(err, "update instance status failed, %s: get instance from etcd failed.", updateStatusFlag)
+ log.Errorf(err, "update instance status failed, %s: get instance from etcd failed.", updateStatusFlag)
return &pb.UpdateInstanceStatusResponse{
Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
}, err
}
if instance == nil {
- util.Logger().Errorf(nil, "update instance status failed, %s: instance not exist.", updateStatusFlag)
+ log.Errorf(nil, "update instance status failed, %s: instance not exist.", updateStatusFlag)
return &pb.UpdateInstanceStatusResponse{
Response: pb.CreateResponse(scerr.ErrInstanceNotExists, "Service instance does not exist."),
}, nil
@@ -655,7 +653,7 @@ func (s *InstanceService) UpdateStatus(ctx context.Context, in *pb.UpdateInstanc
instance.Status = in.Status
if err := serviceUtil.UpdateInstance(ctx, domainProject, instance); err != nil {
- util.Logger().Errorf(err, "update instance status failed, %s", updateStatusFlag)
+ log.Errorf(err, "update instance status failed, %s", updateStatusFlag)
resp := &pb.UpdateInstanceStatusResponse{
Response: pb.CreateResponseWithSCErr(err),
}
@@ -665,7 +663,7 @@ func (s *InstanceService) UpdateStatus(ctx context.Context, in *pb.UpdateInstanc
return resp, nil
}
- util.Logger().Infof("update instance status successful: %s.", updateStatusFlag)
+ log.Infof("update instance status successful: %s.", updateStatusFlag)
return &pb.UpdateInstanceStatusResponse{
Response: pb.CreateResponse(pb.Response_SUCCESS, "Update service instance status successfully."),
}, nil
@@ -675,7 +673,7 @@ func (s *InstanceService) UpdateInstanceProperties(ctx context.Context, in *pb.U
domainProject := util.ParseDomainProject(ctx)
instanceFlag := util.StringJoin([]string{in.ServiceId, in.InstanceId}, "/")
if err := Validate(in); err != nil {
- util.Logger().Errorf(nil, "update instance status failed, %s.", instanceFlag)
+ log.Errorf(nil, "update instance status failed, %s.", instanceFlag)
return &pb.UpdateInstancePropsResponse{
Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
}, nil
@@ -683,13 +681,13 @@ func (s *InstanceService) UpdateInstanceProperties(ctx context.Context, in *pb.U
instance, err := serviceUtil.GetInstance(ctx, domainProject, in.ServiceId, in.InstanceId)
if err != nil {
- util.Logger().Errorf(err, "update instance properties failed, %s: get instance from etcd failed.", instanceFlag)
+ log.Errorf(err, "update instance properties failed, %s: get instance from etcd failed.", instanceFlag)
return &pb.UpdateInstancePropsResponse{
Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
}, err
}
if instance == nil {
- util.Logger().Errorf(nil, "update instance properties failed, %s: instance not exist.", instanceFlag)
+ log.Errorf(nil, "update instance properties failed, %s: instance not exist.", instanceFlag)
return &pb.UpdateInstancePropsResponse{
Response: pb.CreateResponse(scerr.ErrInstanceNotExists, "Service instance does not exist."),
}, nil
@@ -698,7 +696,7 @@ func (s *InstanceService) UpdateInstanceProperties(ctx context.Context, in *pb.U
instance.Properties = in.Properties
if err := serviceUtil.UpdateInstance(ctx, domainProject, instance); err != nil {
- util.Logger().Errorf(err, "update instance properties failed, %s", instanceFlag)
+ log.Errorf(err, "update instance properties failed, %s", instanceFlag)
resp := &pb.UpdateInstancePropsResponse{
Response: pb.CreateResponseWithSCErr(err),
}
@@ -708,7 +706,7 @@ func (s *InstanceService) UpdateInstanceProperties(ctx context.Context, in *pb.U
return resp, nil
}
- util.Logger().Infof("update instance properties successful: %s.", instanceFlag)
+ log.Infof("update instance properties successful: %s.", instanceFlag)
return &pb.UpdateInstancePropsResponse{
Response: pb.CreateResponse(pb.Response_SUCCESS, "Update service instance properties successfully."),
}, nil
@@ -725,13 +723,13 @@ func (s *InstanceService) ClusterHealth(ctx context.Context) (*pb.GetInstancesRe
})
if err != nil {
- util.Logger().Errorf(err, "health check failed: get service center serviceId failed.")
+ log.Errorf(err, "health check failed: get service center serviceId failed.")
return &pb.GetInstancesResponse{
Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
}, err
}
if len(serviceId) == 0 {
- util.Logger().Errorf(nil, "health check failed: get service center serviceId not exist.")
+ log.Errorf(nil, "health check failed: get service center serviceId not exist.")
return &pb.GetInstancesResponse{
Response: pb.CreateResponse(scerr.ErrServiceNotExists, "Service center serviceId not exist."),
}, nil
@@ -739,7 +737,7 @@ func (s *InstanceService) ClusterHealth(ctx context.Context) (*pb.GetInstancesRe
instances, err := serviceUtil.GetAllInstancesOfOneService(ctx, domainProject, serviceId)
if err != nil {
- util.Logger().Errorf(err, "health check failed: get service center instances failed.")
+ log.Errorf(err, "health check failed: get service center instances failed.")
return &pb.GetInstancesResponse{
Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
}, err
diff --git a/server/service/microservice.go b/server/service/microservice.go
index cd88ff8..ab9b0b7 100644
--- a/server/service/microservice.go
+++ b/server/service/microservice.go
@@ -20,6 +20,8 @@ import (
"encoding/json"
"errors"
"fmt"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/gopool"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
"github.com/apache/incubator-servicecomb-service-center/server/core"
apt "github.com/apache/incubator-servicecomb-service-center/server/core"
@@ -46,7 +48,7 @@ const (
func (s *MicroServiceService) Create(ctx context.Context, in *pb.CreateServiceRequest) (*pb.CreateServiceResponse, error) {
if in == nil || in.Service == nil {
- util.Logger().Errorf(nil, "create micro-service failed : param empty.")
+ log.Errorf(nil, "create micro-service failed : param empty.")
return &pb.CreateServiceResponse{
Response: pb.CreateResponse(scerr.ErrInvalidParams, "request format invalid"),
}, nil
@@ -76,7 +78,7 @@ func (s *MicroServiceService) CreateServicePri(ctx context.Context, in *pb.Creat
err := Validate(in)
if err != nil {
- util.Logger().Errorf(err, "create micro-service failed, %s: invalid parameters. operator: %s",
+ log.Errorf(err, "create micro-service failed, %s: invalid parameters. operator: %s",
serviceFlag, remoteIP)
return &pb.CreateServiceResponse{
Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
@@ -93,18 +95,17 @@ func (s *MicroServiceService) CreateServicePri(ctx context.Context, in *pb.Creat
Alias: service.Alias,
Version: service.Version,
}
- reporter, quotaErr := checkQuota(ctx, domainProject)
- if reporter != nil {
- defer reporter.Close()
- }
- if quotaErr != nil {
- util.Logger().Errorf(quotaErr, "create micro-service failed, %s: check service failed before create. operator: %s",
+ reporter := checkQuota(ctx, domainProject)
+ defer reporter.Close(ctx)
+
+ if reporter != nil && reporter.Err != nil {
+ log.Errorf(reporter.Err, "create micro-service failed, %s: check service failed before create. operator: %s",
serviceFlag, remoteIP)
resp := &pb.CreateServiceResponse{
- Response: pb.CreateResponseWithSCErr(quotaErr),
+ Response: pb.CreateResponseWithSCErr(reporter.Err),
}
- if quotaErr.InternalError() {
- return resp, quotaErr
+ if reporter.Err.InternalError() {
+ return resp, reporter.Err
}
return resp, nil
}
@@ -120,7 +121,7 @@ func (s *MicroServiceService) CreateServicePri(ctx context.Context, in *pb.Creat
data, err := json.Marshal(service)
if err != nil {
- util.Logger().Errorf(err, "create micro-service failed, %s: json marshal service failed. operator: %s",
+ log.Errorf(err, "create micro-service failed, %s: json marshal service failed. operator: %s",
serviceFlag, remoteIP)
return &pb.CreateServiceResponse{
Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
@@ -149,7 +150,7 @@ func (s *MicroServiceService) CreateServicePri(ctx context.Context, in *pb.Creat
resp, err := backend.Registry().TxnWithCmp(ctx, opts, uniqueCmpOpts, nil)
if err != nil {
- util.Logger().Errorf(err, "create micro-service failed, %s: commit data into etcd failed. operator: %s",
+ log.Errorf(err, "create micro-service failed, %s: commit data into etcd failed. operator: %s",
serviceFlag, remoteIP)
return &pb.CreateServiceResponse{
Response: pb.CreateResponse(scerr.ErrUnavailableBackend, err.Error()),
@@ -158,7 +159,7 @@ func (s *MicroServiceService) CreateServicePri(ctx context.Context, in *pb.Creat
if !resp.Succeeded {
if s.isCreateServiceEx(in) == true {
serviceIdInner, _ := serviceUtil.GetServiceId(ctx, serviceKey)
- util.Logger().Warnf("create micro-service failed, serviceId = %s , flag = %s: service already exists. operator: %s",
+ log.Warnf("create micro-service failed, serviceId = %s , flag = %s: service already exists. operator: %s",
serviceIdInner, serviceFlag, remoteIP)
return &pb.CreateServiceResponse{
@@ -167,7 +168,7 @@ func (s *MicroServiceService) CreateServicePri(ctx context.Context, in *pb.Creat
}, nil
}
- util.Logger().Warnf("create micro-service failed, %s: service already exists. operator: %s",
+ log.Warnf("create micro-service failed, %s: service already exists. operator: %s",
serviceFlag, remoteIP)
return &pb.CreateServiceResponse{
@@ -175,12 +176,11 @@ func (s *MicroServiceService) CreateServicePri(ctx context.Context, in *pb.Creat
}, nil
}
- if reporter != nil {
- if err := reporter.ReportUsedQuota(ctx); err != nil {
- util.Logger().Errorf(err, "report used quota failed.")
- }
+ if err := reporter.ReportUsedQuota(ctx); err != nil {
+ log.Errorf(err, "report used quota failed.")
}
- util.Logger().Infof("create micro-service %s, serviceId: %s. operator: %s",
+
+ log.Infof("create micro-service %s, serviceId: %s. operator: %s",
serviceFlag, service.ServiceId, remoteIP)
return &pb.CreateServiceResponse{
Response: pb.CreateResponse(pb.Response_SUCCESS, "Register service successfully."),
@@ -188,14 +188,14 @@ func (s *MicroServiceService) CreateServicePri(ctx context.Context, in *pb.Creat
}, nil
}
-func checkQuota(ctx context.Context, domainProject string) (quota.QuotaReporter, *scerr.Error) {
+func checkQuota(ctx context.Context, domainProject string) *quota.ApplyQuotaResult {
if core.IsSCInstance(ctx) {
- util.Logger().Debugf("service-center self register")
- return nil, nil
+ log.Debugf("service-center self register")
+ return nil
}
res := quota.NewApplyQuotaResource(quota.MicroServiceQuotaType, domainProject, "", 1)
rst := plugin.Plugins().Quota().Apply4Quotas(ctx, res)
- return rst.Reporter, rst.Err
+ return rst
}
func (s *MicroServiceService) DeleteServicePri(ctx context.Context, serviceId string, force bool) (*pb.Response, error) {
@@ -208,18 +208,18 @@ func (s *MicroServiceService) DeleteServicePri(ctx context.Context, serviceId st
if serviceId == apt.Service.ServiceId {
err := errors.New("not allow to delete service center")
- util.Logger().Errorf(err, "%s micro-service failed, serviceId is %s", title, serviceId)
+ log.Errorf(err, "%s micro-service failed, serviceId is %s", title, serviceId)
return pb.CreateResponse(scerr.ErrInvalidParams, err.Error()), nil
}
service, err := serviceUtil.GetService(ctx, domainProject, serviceId)
if err != nil {
- util.Logger().Errorf(err, "%s micro-service failed, serviceId is %s: get service failed.", title, serviceId)
+ log.Errorf(err, "%s micro-service failed, serviceId is %s: get service failed.", title, serviceId)
return pb.CreateResponse(scerr.ErrInternal, err.Error()), err
}
if service == nil {
- util.Logger().Errorf(err, "%s micro-service failed, serviceId is %s: service not exist.", title, serviceId)
+ log.Errorf(err, "%s micro-service failed, serviceId is %s: service not exist.", title, serviceId)
return pb.CreateResponse(scerr.ErrServiceNotExists, "Service does not exist."), nil
}
@@ -228,11 +228,11 @@ func (s *MicroServiceService) DeleteServicePri(ctx context.Context, serviceId st
dr := serviceUtil.NewProviderDependencyRelation(ctx, domainProject, service)
services, err := dr.GetDependencyConsumerIds()
if err != nil {
- util.Logger().Errorf(err, "delete micro-service failed, serviceId is %s: inner err, get service dependency failed.", serviceId)
+ log.Errorf(err, "delete micro-service failed, serviceId is %s: inner err, get service dependency failed.", serviceId)
return pb.CreateResponse(scerr.ErrInternal, err.Error()), err
}
if len(services) > 1 || (len(services) == 1 && services[0] != serviceId) {
- util.Logger().Errorf(nil, "delete micro-service failed, serviceId is %s: can't delete, other services rely it.", serviceId)
+ log.Errorf(nil, "delete micro-service failed, serviceId is %s: can't delete, other services rely it.", serviceId)
return pb.CreateResponse(scerr.ErrDependedOnConsumer, "Can not delete this service, other service rely it."), err
}
@@ -242,12 +242,12 @@ func (s *MicroServiceService) DeleteServicePri(ctx context.Context, serviceId st
registry.WithPrefix(),
registry.WithCountOnly())
if err != nil {
- util.Logger().Errorf(err, "delete micro-service failed, serviceId is %s: inner err, get instances failed.", serviceId)
+ log.Errorf(err, "delete micro-service failed, serviceId is %s: inner err, get instances failed.", serviceId)
return pb.CreateResponse(scerr.ErrUnavailableBackend, err.Error()), err
}
if rsp.Count > 0 {
- util.Logger().Errorf(nil, "delete micro-service failed, serviceId is %s: can't delete, exist instance.", serviceId)
+ log.Errorf(nil, "delete micro-service failed, serviceId is %s: can't delete, exist instance.", serviceId)
return pb.CreateResponse(scerr.ErrDeployedInstance, "Can not delete this service, exist instance."), err
}
}
@@ -270,7 +270,7 @@ func (s *MicroServiceService) DeleteServicePri(ctx context.Context, serviceId st
//删除依赖规则
optDeleteDep, err := serviceUtil.DeleteDependencyForDeleteService(domainProject, serviceId, serviceKey)
if err != nil {
- util.Logger().Errorf(err, "%s micro-service failed, serviceId is %s: inner err, delete dependency failed.", title, serviceId)
+ log.Errorf(err, "%s micro-service failed, serviceId is %s: inner err, delete dependency failed.", title, serviceId)
return pb.CreateResponse(scerr.ErrInternal, err.Error()), err
}
opts = append(opts, optDeleteDep)
@@ -306,7 +306,7 @@ func (s *MicroServiceService) DeleteServicePri(ctx context.Context, serviceId st
//删除实例
err = serviceUtil.DeleteServiceAllInstances(ctx, serviceId)
if err != nil {
- util.Logger().Errorf(err, "%s micro-service failed, serviceId is %s: delete all instances failed.", title, serviceId)
+ log.Errorf(err, "%s micro-service failed, serviceId is %s: delete all instances failed.", title, serviceId)
return pb.CreateResponse(scerr.ErrUnavailableBackend, err.Error()), err
}
@@ -316,24 +316,24 @@ func (s *MicroServiceService) DeleteServicePri(ctx context.Context, serviceId st
registry.CMP_NOT_EQUAL, 0)},
nil)
if err != nil {
- util.Logger().Errorf(err, "%s micro-service failed, serviceId is %s: commit data into etcd failed.", title, serviceId)
+ log.Errorf(err, "%s micro-service failed, serviceId is %s: commit data into etcd failed.", title, serviceId)
return pb.CreateResponse(scerr.ErrUnavailableBackend, err.Error()), err
}
if !resp.Succeeded {
- util.Logger().Errorf(err, "%s micro-service failed, serviceId is %s: service does noet exist.", title, serviceId)
+ log.Errorf(err, "%s micro-service failed, serviceId is %s: service does noet exist.", title, serviceId)
return pb.CreateResponse(scerr.ErrServiceNotExists, "Service does not exist."), nil
}
serviceUtil.RemandServiceQuota(ctx)
- util.Logger().Infof("%s micro-service successful: serviceId is %s, operator is %s.", title, serviceId, util.GetIPFromContext(ctx))
+ log.Infof("%s micro-service successful: serviceId is %s, operator is %s.", title, serviceId, util.GetIPFromContext(ctx))
return pb.CreateResponse(pb.Response_SUCCESS, "Unregister service successfully."), nil
}
func (s *MicroServiceService) Delete(ctx context.Context, in *pb.DeleteServiceRequest) (*pb.DeleteServiceResponse, error) {
err := Validate(in)
if err != nil {
- util.Logger().Errorf(err, "delete micro-service failed, serviceId is %s: invalid parameters.", in.ServiceId)
+ log.Errorf(err, "delete micro-service failed, serviceId is %s: invalid parameters.", in.ServiceId)
return &pb.DeleteServiceResponse{
Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
}, nil
@@ -362,7 +362,7 @@ func (s *MicroServiceService) DeleteServices(ctx context.Context, request *pb.De
for _, serviceId := range request.ServiceIds {
//ServiceId重复性检查
if _, ok := existFlag[serviceId]; ok {
- util.Logger().Warnf("delete micro-service %s , multiple.", serviceId)
+ log.Warnf("delete micro-service %s , multiple.", serviceId)
continue
} else {
existFlag[serviceId] = true
@@ -376,7 +376,7 @@ func (s *MicroServiceService) DeleteServices(ctx context.Context, request *pb.De
}
err := Validate(in)
if err != nil {
- util.Logger().Errorf(err, "delete micro-service failed, serviceId is %s: invalid parameters.", in.ServiceId)
+ log.Errorf(err, "delete micro-service failed, serviceId is %s: invalid parameters.", in.ServiceId)
serviceRespChan <- &pb.DelServicesRspInfo{
ServiceId: serviceId,
ErrMessage: err.Error(),
@@ -385,7 +385,7 @@ func (s *MicroServiceService) DeleteServices(ctx context.Context, request *pb.De
}
//执行删除服务操作
- util.Go(s.getDeleteServiceFunc(ctx, serviceId, request.Force, serviceRespChan))
+ gopool.Go(s.getDeleteServiceFunc(ctx, serviceId, request.Force, serviceRespChan))
}
//获取批量删除服务的结果
@@ -404,7 +404,7 @@ func (s *MicroServiceService) DeleteServices(ctx context.Context, request *pb.De
}
}
- util.Logger().Infof("Batch DeleteServices, count is %d, serviceId = %v , result = %d, ", len(request.ServiceIds), request.ServiceIds, responseCode)
+ log.Infof("Batch DeleteServices, count is %d, serviceId = %v , result = %d, ", len(request.ServiceIds), request.ServiceIds, responseCode)
resp := &pb.DelServicesResponse{
Services: delServiceRspInfo,
@@ -437,7 +437,7 @@ func (s *MicroServiceService) getDeleteServiceFunc(ctx context.Context, serviceI
func (s *MicroServiceService) GetOne(ctx context.Context, in *pb.GetServiceRequest) (*pb.GetServiceResponse, error) {
err := Validate(in)
if err != nil {
- util.Logger().Errorf(err, "get micro-service failed, serviceId is %s: invalid parameters.",
+ log.Errorf(err, "get micro-service failed, serviceId is %s: invalid parameters.",
in.ServiceId)
return &pb.GetServiceResponse{
Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
@@ -447,13 +447,13 @@ func (s *MicroServiceService) GetOne(ctx context.Context, in *pb.GetServiceReque
service, err := serviceUtil.GetService(ctx, domainProject, in.ServiceId)
if err != nil {
- util.Logger().Errorf(err, "get micro-service failed, serviceId is %s: inner err, get service failed.", in.ServiceId)
+ log.Errorf(err, "get micro-service failed, serviceId is %s: inner err, get service failed.", in.ServiceId)
return &pb.GetServiceResponse{
Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
}, err
}
if service == nil {
- util.Logger().Errorf(nil, "get micro-service failed, serviceId is %s: service not exist.", in.ServiceId)
+ log.Errorf(nil, "get micro-service failed, serviceId is %s: service not exist.", in.ServiceId)
return &pb.GetServiceResponse{
Response: pb.CreateResponse(scerr.ErrServiceNotExists, "service does not exist."),
}, nil
@@ -467,7 +467,7 @@ func (s *MicroServiceService) GetOne(ctx context.Context, in *pb.GetServiceReque
func (s *MicroServiceService) GetServices(ctx context.Context, in *pb.GetServicesRequest) (*pb.GetServicesResponse, error) {
services, err := serviceUtil.GetAllServiceUtil(ctx)
if err != nil {
- util.Logger().Errorf(err, "get services failed: inner err.")
+ log.Errorf(err, "get services failed: inner err.")
return &pb.GetServicesResponse{
Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
}, err
@@ -482,7 +482,7 @@ func (s *MicroServiceService) GetServices(ctx context.Context, in *pb.GetService
func (s *MicroServiceService) UpdateProperties(ctx context.Context, in *pb.UpdateServicePropsRequest) (*pb.UpdateServicePropsResponse, error) {
err := Validate(in)
if err != nil {
- util.Logger().Errorf(err, "update service properties failed, serviceId is %s: invalid parameters.", in.ServiceId)
+ log.Errorf(err, "update service properties failed, serviceId is %s: invalid parameters.", in.ServiceId)
return &pb.UpdateServicePropsResponse{
Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
}, nil
@@ -493,13 +493,13 @@ func (s *MicroServiceService) UpdateProperties(ctx context.Context, in *pb.Updat
key := apt.GenerateServiceKey(domainProject, in.ServiceId)
service, err := serviceUtil.GetService(ctx, domainProject, in.ServiceId)
if err != nil {
- util.Logger().Errorf(err, "update service properties failed, serviceId is %s: query service failed.", in.ServiceId)
+ log.Errorf(err, "update service properties failed, serviceId is %s: query service failed.", in.ServiceId)
return &pb.UpdateServicePropsResponse{
Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
}, err
}
if service == nil {
- util.Logger().Errorf(nil, "update service properties failed, serviceId is %s: service not exist.", in.ServiceId)
+ log.Errorf(nil, "update service properties failed, serviceId is %s: service not exist.", in.ServiceId)
return &pb.UpdateServicePropsResponse{
Response: pb.CreateResponse(scerr.ErrServiceNotExists, "service does not exist."),
}, nil
@@ -512,7 +512,7 @@ func (s *MicroServiceService) UpdateProperties(ctx context.Context, in *pb.Updat
data, err := json.Marshal(service)
if err != nil {
- util.Logger().Errorf(err, "update service properties failed, serviceId is %s: json marshal service failed.", in.ServiceId)
+ log.Errorf(err, "update service properties failed, serviceId is %s: json marshal service failed.", in.ServiceId)
return &pb.UpdateServicePropsResponse{
Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
}, err
@@ -526,19 +526,19 @@ func (s *MicroServiceService) UpdateProperties(ctx context.Context, in *pb.Updat
registry.CMP_NOT_EQUAL, 0)},
nil)
if err != nil {
- util.Logger().Errorf(err, "update service properties failed, serviceId is %s: commit data into etcd failed.", in.ServiceId)
+ log.Errorf(err, "update service properties failed, serviceId is %s: commit data into etcd failed.", in.ServiceId)
return &pb.UpdateServicePropsResponse{
Response: pb.CreateResponse(scerr.ErrUnavailableBackend, err.Error()),
}, err
}
if !resp.Succeeded {
- util.Logger().Errorf(err, "update service properties failed, serviceId is %s: service does not exist.", in.ServiceId)
+ log.Errorf(err, "update service properties failed, serviceId is %s: service does not exist.", in.ServiceId)
return &pb.UpdateServicePropsResponse{
Response: pb.CreateResponse(scerr.ErrServiceNotExists, "Service does not exist."),
}, nil
}
- util.Logger().Infof("update service properties successful: serviceId is %s.", in.ServiceId)
+ log.Infof("update service properties successful: serviceId is %s.", in.ServiceId)
return &pb.UpdateServicePropsResponse{
Response: pb.CreateResponse(pb.Response_SUCCESS, "update service successfully."),
}, nil
@@ -551,7 +551,7 @@ func (s *MicroServiceService) Exist(ctx context.Context, in *pb.GetExistenceRequ
err := ExistenceReqValidator().Validate(in)
serviceFlag := util.StringJoin([]string{in.AppId, in.ServiceName, in.Version}, "/")
if err != nil {
- util.Logger().Errorf(err, "micro-service exist failed, service %s: invalid params.", serviceFlag)
+ log.Errorf(err, "micro-service exist failed, service %s: invalid params.", serviceFlag)
return &pb.GetExistenceResponse{
Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
}, nil
@@ -566,19 +566,19 @@ func (s *MicroServiceService) Exist(ctx context.Context, in *pb.GetExistenceRequ
Tenant: domainProject,
})
if err != nil {
- util.Logger().Errorf(err, "micro-service exist failed, find %s serviceIds failed.", serviceFlag)
+ log.Errorf(err, "micro-service exist failed, find %s serviceIds failed.", serviceFlag)
return &pb.GetExistenceResponse{
Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
}, err
}
if !exist {
- util.Logger().Infof("micro-service exist failed, service %s does not exist.", serviceFlag)
+ log.Infof("micro-service exist failed, service %s does not exist.", serviceFlag)
return &pb.GetExistenceResponse{
Response: pb.CreateResponse(scerr.ErrServiceNotExists, serviceFlag+" does not exist."),
}, nil
}
if len(ids) == 0 {
- util.Logger().Infof("micro-service exist failed, %s version mismatch.", serviceFlag)
+ log.Infof("micro-service exist failed, %s version mismatch.", serviceFlag)
return &pb.GetExistenceResponse{
Response: pb.CreateResponse(scerr.ErrServiceVersionNotExists, serviceFlag+" version mismatch."),
}, nil
@@ -590,14 +590,14 @@ func (s *MicroServiceService) Exist(ctx context.Context, in *pb.GetExistenceRequ
case EXIST_TYPE_SCHEMA:
err := GetSchemaReqValidator().Validate(in)
if err != nil {
- util.Logger().Errorf(err, "schema exist failed, serviceId %s, schemaId %s: invalid params.", in.ServiceId, in.SchemaId)
+ log.Errorf(err, "schema exist failed, serviceId %s, schemaId %s: invalid params.", in.ServiceId, in.SchemaId)
return &pb.GetExistenceResponse{
Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
}, nil
}
if !serviceUtil.ServiceExist(ctx, domainProject, in.ServiceId) {
- util.Logger().Warnf("schema exist failed, serviceId %s, schemaId %s: service not exist.", in.ServiceId, in.SchemaId)
+ log.Warnf("schema exist failed, serviceId %s, schemaId %s: service not exist.", in.ServiceId, in.SchemaId)
return &pb.GetExistenceResponse{
Response: pb.CreateResponse(scerr.ErrServiceNotExists, "service does not exist."),
}, nil
@@ -606,20 +606,20 @@ func (s *MicroServiceService) Exist(ctx context.Context, in *pb.GetExistenceRequ
key := apt.GenerateServiceSchemaKey(domainProject, in.ServiceId, in.SchemaId)
exist, err := serviceUtil.CheckSchemaInfoExist(ctx, key)
if err != nil {
- util.Logger().Errorf(err, "schema exist failed, serviceId %s, schemaId %s: get schema failed.", in.ServiceId, in.SchemaId)
+ log.Errorf(err, "schema exist failed, serviceId %s, schemaId %s: get schema failed.", in.ServiceId, in.SchemaId)
return &pb.GetExistenceResponse{
Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
}, err
}
if !exist {
- util.Logger().Infof("schema exist failed, serviceId %s, schemaId %s: schema not exist.", in.ServiceId, in.SchemaId)
+ log.Infof("schema exist failed, serviceId %s, schemaId %s: schema not exist.", in.ServiceId, in.SchemaId)
return &pb.GetExistenceResponse{
Response: pb.CreateResponse(scerr.ErrSchemaNotExists, "schema does not exist."),
}, nil
}
schemaSummary, err := getSchemaSummary(ctx, domainProject, in.ServiceId, in.SchemaId)
if err != nil {
- util.Logger().Errorf(err, "schema exist failed, serviceId %s, schemaId %s: get schema summary failed.", in.ServiceId, in.SchemaId)
+ log.Errorf(err, "schema exist failed, serviceId %s, schemaId %s: get schema summary failed.", in.ServiceId, in.SchemaId)
return &pb.GetExistenceResponse{
Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
}, err
@@ -630,7 +630,7 @@ func (s *MicroServiceService) Exist(ctx context.Context, in *pb.GetExistenceRequ
Summary: schemaSummary,
}, nil
default:
- util.Logger().Warnf("unexpected type '%s' for query.", in.Type)
+ log.Warnf("unexpected type '%s' for query.", in.Type)
return &pb.GetExistenceResponse{
Response: pb.CreateResponse(scerr.ErrInvalidParams, "Only micro-service and schema can be used as type."),
}, nil
@@ -647,7 +647,7 @@ func (s *MicroServiceService) CreateServiceEx(ctx context.Context, in *pb.Create
//create rules
if in.Rules != nil && len(in.Rules) != 0 {
chanLen++
- util.Go(func(_ context.Context) {
+ gopool.Go(func(_ context.Context) {
req := &pb.AddServiceRulesRequest{
ServiceId: serviceId,
Rules: in.Rules,
@@ -667,7 +667,7 @@ func (s *MicroServiceService) CreateServiceEx(ctx context.Context, in *pb.Create
//create tags
if in.Tags != nil && len(in.Tags) != 0 {
chanLen++
- util.Go(func(_ context.Context) {
+ gopool.Go(func(_ context.Context) {
req := &pb.AddServiceTagsRequest{
ServiceId: serviceId,
Tags: in.Tags,
@@ -687,7 +687,7 @@ func (s *MicroServiceService) CreateServiceEx(ctx context.Context, in *pb.Create
// create instance
if in.Instances != nil && len(in.Instances) != 0 {
chanLen++
- util.Go(func(_ context.Context) {
+ gopool.Go(func(_ context.Context) {
chanRsp := &pb.Response{}
for _, ins := range in.Instances {
req := &pb.RegisterInstanceRequest{
@@ -724,7 +724,7 @@ func (s *MicroServiceService) CreateServiceEx(ctx context.Context, in *pb.Create
errMessage, err := json.Marshal(errMessages)
if err != nil {
result.Response.Message = "marshal errMessages error"
- util.Logger().Error("marshal errMessages error", err)
+ log.Error("marshal errMessages error", err)
return result, nil
}
result.Response.Message = fmt.Sprintf("errMessage : %s", string(errMessage))
@@ -732,7 +732,7 @@ func (s *MicroServiceService) CreateServiceEx(ctx context.Context, in *pb.Create
result.Response.Code = pb.Response_SUCCESS
}
- util.Logger().Infof("createServiceEx, serviceId = %s, result = %s ", result.ServiceId, result.Response.Message)
+ log.Infof("createServiceEx, serviceId = %s, result = %s ", result.ServiceId, result.Response.Message)
return result, nil
}
diff --git a/server/service/notification/listwatcher.go b/server/service/notification/listwatcher.go
index bffbb45..feffe64 100644
--- a/server/service/notification/listwatcher.go
+++ b/server/service/notification/listwatcher.go
@@ -17,7 +17,8 @@
package notification
import (
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/gopool"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
pb "github.com/apache/incubator-servicecomb-service-center/server/core/proto"
"golang.org/x/net/context"
"time"
@@ -48,8 +49,8 @@ func (w *ListWatcher) OnAccept() {
if w.Err() != nil {
return
}
- util.Logger().Debugf("accepted by notify service, %s watcher %s %s", w.Type(), w.Group(), w.Subject())
- util.Go(w.listAndPublishJobs)
+ log.Debugf("accepted by notify service, %s watcher %s %s", w.Type(), w.Group(), w.Subject())
+ gopool.Go(w.listAndPublishJobs)
}
func (w *ListWatcher) listAndPublishJobs(_ context.Context) {
@@ -83,14 +84,14 @@ func (w *ListWatcher) OnMessage(job NotifyJob) {
case <-w.listCh:
timer.Stop()
case <-timer.C:
- util.Logger().Errorf(nil,
+ log.Errorf(nil,
"the %s listwatcher %s %s is not ready[over %s], send the event %v",
w.Type(), w.Group(), w.Subject(), w.Timeout(), job)
}
}
if wJob.Revision <= w.ListRevision {
- util.Logger().Warnf("unexpected notify %s job is coming in, watcher %s %s, job is %v, current revision is %v",
+ log.Warnf("unexpected notify %s job is coming in, watcher %s %s, job is %v, current revision is %v",
w.Type(), w.Group(), w.Subject(), job, w.ListRevision)
return
}
@@ -98,7 +99,7 @@ func (w *ListWatcher) OnMessage(job NotifyJob) {
}
func (w *ListWatcher) sendMessage(job *WatchJob) {
- defer util.RecoverAndReport()
+ defer log.Recover()
select {
case w.Job <- job:
default:
@@ -107,7 +108,7 @@ func (w *ListWatcher) sendMessage(job *WatchJob) {
case w.Job <- job:
timer.Stop()
case <-timer.C:
- util.Logger().Errorf(nil,
+ log.Errorf(nil,
"the %s watcher %s %s event queue is full[over %s], drop the event %v",
w.Type(), w.Group(), w.Subject(), w.Timeout(), job)
}
diff --git a/server/service/notification/notification_healthchecker.go b/server/service/notification/notification_healthchecker.go
index 597713c..ddd84af 100644
--- a/server/service/notification/notification_healthchecker.go
+++ b/server/service/notification/notification_healthchecker.go
@@ -16,7 +16,7 @@
*/
package notification
-import "github.com/apache/incubator-servicecomb-service-center/pkg/util"
+import "github.com/apache/incubator-servicecomb-service-center/pkg/log"
const (
NOTIFY_SERVER_CHECKER_NAME = "__HealthChecker__"
@@ -38,12 +38,12 @@ func (s *NotifyServiceHealthChecker) OnMessage(job NotifyJob) {
err := j.ErrorSubscriber.Err()
if j.ErrorSubscriber.Type() == NOTIFTY {
- util.Logger().Errorf(nil, "remove %s watcher %s %s failed, here cause a dead lock",
+ log.Errorf(nil, "remove %s watcher %s %s failed, here cause a dead lock",
j.ErrorSubscriber.Type(), j.ErrorSubscriber.Subject(), j.ErrorSubscriber.Group())
return
}
- util.Logger().Debugf("notification service remove %s watcher, error: %s, subject: %s, group: %s",
+ log.Debugf("notification service remove %s watcher, error: %s, subject: %s, group: %s",
j.ErrorSubscriber.Type(), err.Error(), j.ErrorSubscriber.Subject(), j.ErrorSubscriber.Group())
s.Service().RemoveSubscriber(j.ErrorSubscriber)
}
diff --git a/server/service/notification/notification_service.go b/server/service/notification/notification_service.go
index 8837396..e28fc91 100644
--- a/server/service/notification/notification_service.go
+++ b/server/service/notification/notification_service.go
@@ -18,6 +18,8 @@ package notification
import (
"errors"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/gopool"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
"golang.org/x/net/context"
"sync"
@@ -28,13 +30,13 @@ var notifyService *NotifyService
func init() {
notifyService = &NotifyService{
isClose: true,
- goroutine: util.NewGo(context.Background()),
+ goroutine: gopool.New(context.Background()),
}
}
type NotifyService struct {
processors *util.ConcurrentMap
- goroutine *util.GoRoutine
+ goroutine *gopool.Pool
err chan error
closeMux sync.RWMutex
isClose bool
@@ -54,7 +56,7 @@ func (s *NotifyService) init() {
func (s *NotifyService) Start() {
if !s.Closed() {
- util.Logger().Warnf("notify service is already running")
+ log.Warnf("notify service is already running")
return
}
s.closeMux.Lock()
@@ -65,7 +67,7 @@ func (s *NotifyService) Start() {
// 错误subscriber清理
s.AddSubscriber(NewNotifyServiceHealthChecker())
- util.Logger().Debugf("notify service is started")
+ log.Debugf("notify service is started")
s.processors.ForEach(func(item util.MapItem) (next bool) {
s.goroutine.Do(item.Value.(*Processor).Do)
@@ -141,7 +143,7 @@ func (s *NotifyService) Stop() {
close(s.err)
- util.Logger().Debug("notify service stopped")
+ log.Debug("notify service stopped")
}
func GetNotifyService() *NotifyService {
diff --git a/server/service/notification/notification_test.go b/server/service/notification/notification_test.go
index 014e06e..97527a1 100644
--- a/server/service/notification/notification_test.go
+++ b/server/service/notification/notification_test.go
@@ -17,7 +17,7 @@
package notification
import (
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/gopool"
"golang.org/x/net/context"
"testing"
"time"
@@ -31,7 +31,7 @@ func TestGetNotifyService(t *testing.T) {
notifyService := &NotifyService{
isClose: true,
- goroutine: util.NewGo(context.Background()),
+ goroutine: gopool.New(context.Background()),
}
if notifyService == nil {
t.Fatalf("TestGetNotifyService failed")
diff --git a/server/service/notification/processor.go b/server/service/notification/processor.go
index 7fe27f1..a0fd53d 100644
--- a/server/service/notification/processor.go
+++ b/server/service/notification/processor.go
@@ -17,6 +17,7 @@
package notification
import (
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
"golang.org/x/net/context"
)
@@ -79,7 +80,7 @@ func (p *Processor) Clear() {
}
func (p *Processor) Accept(job NotifyJob) {
- defer util.RecoverAndReport()
+ defer log.Recover()
p.queue <- job
}
diff --git a/server/service/notification/processor_test.go b/server/service/notification/processor_test.go
index da4bd86..ed5f270 100644
--- a/server/service/notification/processor_test.go
+++ b/server/service/notification/processor_test.go
@@ -17,7 +17,7 @@
package notification
import (
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/gopool"
"testing"
)
@@ -25,7 +25,7 @@ func TestProcessor_Do(t *testing.T) {
mock1 := &mockSubscriber{BaseSubscriber: NewSubscriber(INSTANCE, "s1", "g1")}
mock2 := &mockSubscriber{BaseSubscriber: NewSubscriber(INSTANCE, "s1", "g2")}
p := NewProcessor("p1", 0)
- util.Go(p.Do)
+ gopool.Go(p.Do)
if p.Name() != "p1" {
t.Fatalf("TestProcessor_Do")
}
diff --git a/server/service/notification/publisher.go b/server/service/notification/publisher.go
index 17bab45..861e863 100644
--- a/server/service/notification/publisher.go
+++ b/server/service/notification/publisher.go
@@ -17,7 +17,7 @@
package notification
import (
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/gopool"
"golang.org/x/net/context"
"sync"
"time"
@@ -33,11 +33,11 @@ func init() {
type Publisher struct {
wss []*WebSocket
lock sync.Mutex
- goroutine *util.GoRoutine
+ goroutine *gopool.Pool
}
func (wh *Publisher) Run() {
- util.Go(publisher.loop)
+ gopool.Go(publisher.loop)
}
func (wh *Publisher) Stop() {
@@ -98,6 +98,6 @@ func (wh *Publisher) Accept(ws *WebSocket) {
func NewPublisher() *Publisher {
return &Publisher{
- goroutine: util.NewGo(context.Background()),
+ goroutine: gopool.New(context.Background()),
}
}
diff --git a/server/service/notification/stream.go b/server/service/notification/stream.go
index f215553..da44f3e 100644
--- a/server/service/notification/stream.go
+++ b/server/service/notification/stream.go
@@ -18,6 +18,7 @@ package notification
import (
"errors"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
pb "github.com/apache/incubator-servicecomb-service-center/server/core/proto"
"time"
@@ -35,17 +36,17 @@ func HandleWatchJob(watcher *ListWatcher, stream pb.ServiceInstanceCtrl_WatchSer
case job := <-watcher.Job:
if job == nil {
err = errors.New("channel is closed")
- util.Logger().Errorf(err, "watcher caught an exception, subject: %s, group: %s",
+ log.Errorf(err, "watcher caught an exception, subject: %s, group: %s",
watcher.Subject(), watcher.Group())
return
}
resp := job.Response
- util.Logger().Infof("event is coming in, watcher, subject: %s, group: %s",
+ log.Infof("event is coming in, watcher, subject: %s, group: %s",
watcher.Subject(), watcher.Group())
err = stream.Send(resp)
if err != nil {
- util.Logger().Errorf(err, "send message error, subject: %s, group: %s",
+ log.Errorf(err, "send message error, subject: %s, group: %s",
watcher.Subject(), watcher.Group())
watcher.SetError(err)
return
diff --git a/server/service/notification/websocket.go b/server/service/notification/websocket.go
index 00778ea..deafd5f 100644
--- a/server/service/notification/websocket.go
+++ b/server/service/notification/websocket.go
@@ -19,6 +19,7 @@ package notification
import (
"encoding/json"
"fmt"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
apt "github.com/apache/incubator-servicecomb-service-center/server/core"
pb "github.com/apache/incubator-servicecomb-service-center/server/core/proto"
@@ -53,11 +54,11 @@ func (wh *WebSocket) Init() error {
if err := GetNotifyService().AddSubscriber(wh.watcher); err != nil {
err = fmt.Errorf("establish[%s] websocket watch failed: notify service error, %s",
remoteAddr, err.Error())
- util.Logger().Errorf(nil, err.Error())
+ log.Errorf(nil, err.Error())
werr := wh.conn.WriteMessage(websocket.TextMessage, util.StringToBytesWithNoCopy(err.Error()))
if werr != nil {
- util.Logger().Errorf(werr, "establish[%s] websocket watch failed: write message failed.", remoteAddr)
+ log.Errorf(werr, "establish[%s] websocket watch failed: write message failed.", remoteAddr)
}
return err
}
@@ -65,7 +66,7 @@ func (wh *WebSocket) Init() error {
// put in publisher queue
publisher.Accept(wh)
- util.Logger().Debugf("start watching instance status, watcher[%s], subject: %s, group: %s",
+ log.Debugf("start watching instance status, watcher[%s], subject: %s, group: %s",
remoteAddr, wh.watcher.Subject(), wh.watcher.Group())
return nil
}
@@ -81,7 +82,7 @@ func (wh *WebSocket) heartbeat(messageType int) error {
if messageType == websocket.PongMessage {
messageTypeName = "Pong"
}
- util.Logger().Errorf(err, "fail to send '%s' to watcher[%s], subject: %s, group: %s",
+ log.Errorf(err, "fail to send '%s' to watcher[%s], subject: %s, group: %s",
messageTypeName, wh.conn.RemoteAddr(), wh.watcher.Subject(), wh.watcher.Group())
//wh.watcher.SetError(err)
return err
@@ -94,7 +95,7 @@ func (wh *WebSocket) HandleWatchWebSocketControlMessage() {
// PING
wh.conn.SetPingHandler(func(message string) error {
if wh.needPingWatcher {
- util.Logger().Infof("received 'Ping' message '%s' from watcher[%s], no longer send 'Ping' to it, subject: %s, group: %s",
+ log.Infof("received 'Ping' message '%s' from watcher[%s], no longer send 'Ping' to it, subject: %s, group: %s",
message, remoteAddr, wh.watcher.Subject(), wh.watcher.Group())
}
wh.needPingWatcher = false
@@ -102,13 +103,13 @@ func (wh *WebSocket) HandleWatchWebSocketControlMessage() {
})
// PONG
wh.conn.SetPongHandler(func(message string) error {
- util.Logger().Debugf("received 'Pong' message '%s' from watcher[%s], subject: %s, group: %s",
+ log.Debugf("received 'Pong' message '%s' from watcher[%s], subject: %s, group: %s",
message, remoteAddr, wh.watcher.Subject(), wh.watcher.Group())
return nil
})
// CLOSE
wh.conn.SetCloseHandler(func(code int, text string) error {
- util.Logger().Infof("watcher[%s] active closed, code: %d, message: '%s', subject: %s, group: %s",
+ log.Infof("watcher[%s] active closed, code: %d, message: '%s', subject: %s, group: %s",
remoteAddr, code, text, wh.watcher.Subject(), wh.watcher.Group())
return wh.sendClose(code, text)
})
@@ -131,7 +132,7 @@ func (wh *WebSocket) sendClose(code int, text string) error {
}
err := wh.conn.WriteControl(websocket.CloseMessage, message, time.Now().Add(wh.Timeout()))
if err != nil {
- util.Logger().Errorf(err, "watcher[%s] catch an err, subject: %s, group: %s",
+ log.Errorf(err, "watcher[%s] catch an err, subject: %s, group: %s",
remoteAddr, wh.watcher.Subject(), wh.watcher.Group())
return err
}
@@ -174,7 +175,7 @@ func (wh *WebSocket) HandleWatchWebSocketJob(o interface{}) {
switch o.(type) {
case error:
err := o.(error)
- util.Logger().Errorf(err, "watcher[%s] catch an err, subject: %s, group: %s",
+ log.Errorf(err, "watcher[%s] catch an err, subject: %s, group: %s",
remoteAddr, wh.watcher.Subject(), wh.watcher.Group())
message = util.StringToBytesWithNoCopy(fmt.Sprintf("watcher catch an err: %s", err.Error()))
@@ -189,7 +190,7 @@ func (wh *WebSocket) HandleWatchWebSocketJob(o interface{}) {
return
}
- util.Logger().Debugf("send 'Ping' message to watcher[%s], subject: %s, group: %s",
+ log.Debugf("send 'Ping' message to watcher[%s], subject: %s, group: %s",
remoteAddr, wh.watcher.Subject(), wh.watcher.Group())
wh.heartbeat(websocket.PingMessage)
return
@@ -201,20 +202,20 @@ func (wh *WebSocket) HandleWatchWebSocketJob(o interface{}) {
if resp.Action != string(pb.EVT_EXPIRE) {
providerFlag = fmt.Sprintf("%s/%s(%s)", resp.Instance.ServiceId, resp.Instance.InstanceId, providerFlag)
}
- util.Logger().Infof("event[%s] is coming in, watcher[%s] watch %s, subject: %s, group: %s",
+ log.Infof("event[%s] is coming in, watcher[%s] watch %s, subject: %s, group: %s",
resp.Action, remoteAddr, providerFlag, wh.watcher.Subject(), wh.watcher.Group())
resp.Response = nil
data, err := json.Marshal(resp)
if err != nil {
- util.Logger().Errorf(err, "watcher[%s] watch %s, subject: %s, group: %s",
+ log.Errorf(err, "watcher[%s] watch %s, subject: %s, group: %s",
remoteAddr, providerFlag, o, wh.watcher.Subject(), wh.watcher.Group())
message = util.StringToBytesWithNoCopy(fmt.Sprintf("marshal output file error, %s", err.Error()))
break
}
message = data
default:
- util.Logger().Errorf(nil, "watcher[%s] unknown input %v, subject: %s, group: %s",
+ log.Errorf(nil, "watcher[%s] unknown input %v, subject: %s, group: %s",
remoteAddr, o, wh.watcher.Subject(), wh.watcher.Group())
return
}
@@ -227,7 +228,7 @@ func (wh *WebSocket) HandleWatchWebSocketJob(o interface{}) {
err := wh.conn.WriteMessage(websocket.TextMessage, message)
if err != nil {
- util.Logger().Errorf(err, "watcher[%s] catch an err, subject: %s, group: %s",
+ log.Errorf(err, "watcher[%s] catch an err, subject: %s, group: %s",
remoteAddr, wh.watcher.Subject(), wh.watcher.Group())
}
}
@@ -269,8 +270,8 @@ func process(socket *WebSocket) {
func EstablishWebSocketError(conn *websocket.Conn, err error) {
remoteAddr := conn.RemoteAddr().String()
- util.Logger().Errorf(err, "establish[%s] websocket watch failed.", remoteAddr)
+ log.Errorf(err, "establish[%s] websocket watch failed.", remoteAddr)
if err := conn.WriteMessage(websocket.TextMessage, util.StringToBytesWithNoCopy(err.Error())); err != nil {
- util.Logger().Errorf(err, "establish[%s] websocket watch failed: write message failed.", remoteAddr)
+ log.Errorf(err, "establish[%s] websocket watch failed: write message failed.", remoteAddr)
}
}
diff --git a/server/service/rule.go b/server/service/rule.go
index 42b2ce7..40ca4bd 100644
--- a/server/service/rule.go
+++ b/server/service/rule.go
@@ -18,6 +18,7 @@ package service
import (
"encoding/json"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
apt "github.com/apache/incubator-servicecomb-service-center/server/core"
"github.com/apache/incubator-servicecomb-service-center/server/core/backend"
@@ -35,7 +36,7 @@ import (
func (s *MicroServiceService) AddRule(ctx context.Context, in *pb.AddServiceRulesRequest) (*pb.AddServiceRulesResponse, error) {
err := Validate(in)
if err != nil {
- util.Logger().Errorf(err, "add rule failed, serviceId is %s.", in.ServiceId)
+ log.Errorf(err, "add rule failed, serviceId is %s.", in.ServiceId)
return &pb.AddServiceRulesResponse{
Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
}, nil
@@ -45,7 +46,7 @@ func (s *MicroServiceService) AddRule(ctx context.Context, in *pb.AddServiceRule
// service id存在性校验
if !serviceUtil.ServiceExist(ctx, domainProject, in.ServiceId) {
- util.Logger().Errorf(nil, "add rule failed, serviceId is %s: service not exist.", in.ServiceId)
+ log.Errorf(nil, "add rule failed, serviceId is %s: service not exist.", in.ServiceId)
return &pb.AddServiceRulesResponse{
Response: pb.CreateResponse(scerr.ErrInvalidParams, "Service does not exist."),
}, nil
@@ -54,7 +55,7 @@ func (s *MicroServiceService) AddRule(ctx context.Context, in *pb.AddServiceRule
rst := plugin.Plugins().Quota().Apply4Quotas(ctx, res)
errQuota := rst.Err
if errQuota != nil {
- util.Logger().Errorf(errQuota, "")
+ log.Errorf(errQuota, "")
response := &pb.AddServiceRulesResponse{
Response: pb.CreateResponseWithSCErr(errQuota),
}
@@ -78,7 +79,7 @@ func (s *MicroServiceService) AddRule(ctx context.Context, in *pb.AddServiceRule
ruleType = rule.RuleType
} else {
if ruleType != rule.RuleType {
- util.Logger().Errorf(nil, "add rule failed, serviceId is %s:can only exist one type, BLACK or WHITE.", in.ServiceId)
+ log.Errorf(nil, "add rule failed, serviceId is %s:can only exist one type, BLACK or WHITE.", in.ServiceId)
return &pb.AddServiceRulesResponse{
Response: pb.CreateResponse(scerr.ErrBlackAndWhiteRule, "Service can only contain one rule type, BLACK or WHITE."),
}, nil
@@ -87,7 +88,7 @@ func (s *MicroServiceService) AddRule(ctx context.Context, in *pb.AddServiceRule
//同一服务,attribute和pattern确定一个rule
if serviceUtil.RuleExist(ctx, domainProject, in.ServiceId, rule.Attribute, rule.Pattern) {
- util.Logger().Infof("This rule more exists, %s ", in.ServiceId)
+ log.Infof("This rule more exists, %s ", in.ServiceId)
continue
}
@@ -109,7 +110,7 @@ func (s *MicroServiceService) AddRule(ctx context.Context, in *pb.AddServiceRule
data, err := json.Marshal(ruleAdd)
if err != nil {
- util.Logger().Errorf(err, "add rule failed, serviceId is %s: marshal rule failed.", in.ServiceId)
+ log.Errorf(err, "add rule failed, serviceId is %s: marshal rule failed.", in.ServiceId)
return &pb.AddServiceRulesResponse{
Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
}, err
@@ -119,7 +120,7 @@ func (s *MicroServiceService) AddRule(ctx context.Context, in *pb.AddServiceRule
opts = append(opts, registry.OpPut(registry.WithStrKey(indexKey), registry.WithStrValue(ruleAdd.RuleId)))
}
if len(opts) <= 0 {
- util.Logger().Infof("add rule successful, serviceId is %s: rule already exists, no rules to add.", in.ServiceId)
+ log.Infof("add rule successful, serviceId is %s: rule already exists, no rules to add.", in.ServiceId)
return &pb.AddServiceRulesResponse{
Response: pb.CreateResponse(pb.Response_SUCCESS, "Service rules has been added."),
}, nil
@@ -131,19 +132,19 @@ func (s *MicroServiceService) AddRule(ctx context.Context, in *pb.AddServiceRule
registry.CMP_NOT_EQUAL, 0)},
nil)
if err != nil {
- util.Logger().Errorf(err, "add rule failed, serviceId is %s: commit data into etcd failed.", in.ServiceId)
+ log.Errorf(err, "add rule failed, serviceId is %s: commit data into etcd failed.", in.ServiceId)
return &pb.AddServiceRulesResponse{
Response: pb.CreateResponse(scerr.ErrUnavailableBackend, err.Error()),
}, err
}
if !resp.Succeeded {
- util.Logger().Errorf(nil, "add rule failed, serviceId is %s: service does not exist.", in.ServiceId)
+ log.Errorf(nil, "add rule failed, serviceId is %s: service does not exist.", in.ServiceId)
return &pb.AddServiceRulesResponse{
Response: pb.CreateResponse(scerr.ErrServiceNotExists, "Service does not exist."),
}, nil
}
- util.Logger().Infof("add rule successful, serviceId %s, ruleIds %v.", in.ServiceId, ruleIds)
+ log.Infof("add rule successful, serviceId %s, ruleIds %v.", in.ServiceId, ruleIds)
return &pb.AddServiceRulesResponse{
Response: pb.CreateResponse(pb.Response_SUCCESS, "Add service rules successfully."),
RuleIds: ruleIds,
@@ -153,7 +154,7 @@ func (s *MicroServiceService) AddRule(ctx context.Context, in *pb.AddServiceRule
func (s *MicroServiceService) UpdateRule(ctx context.Context, in *pb.UpdateServiceRuleRequest) (*pb.UpdateServiceRuleResponse, error) {
err := Validate(in)
if err != nil {
- util.Logger().Errorf(err, "update rule failed, serviceId is %s, ruleId is %s.", in.ServiceId, in.RuleId)
+ log.Errorf(err, "update rule failed, serviceId is %s, ruleId is %s.", in.ServiceId, in.RuleId)
return &pb.UpdateServiceRuleResponse{
Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
}, nil
@@ -163,7 +164,7 @@ func (s *MicroServiceService) UpdateRule(ctx context.Context, in *pb.UpdateServi
// service id存在性校验
if !serviceUtil.ServiceExist(ctx, domainProject, in.ServiceId) {
- util.Logger().Errorf(nil, "update rule failed, serviceId is %s, ruleId is %s: service not exist.", in.ServiceId, in.RuleId)
+ log.Errorf(nil, "update rule failed, serviceId is %s, ruleId is %s: service not exist.", in.ServiceId, in.RuleId)
return &pb.UpdateServiceRuleResponse{
Response: pb.CreateResponse(scerr.ErrServiceNotExists, "Service does not exist."),
}, nil
@@ -172,13 +173,13 @@ func (s *MicroServiceService) UpdateRule(ctx context.Context, in *pb.UpdateServi
//是否能改变ruleType
ruleType, ruleNum, err := serviceUtil.GetServiceRuleType(ctx, domainProject, in.ServiceId)
if err != nil {
- util.Logger().Errorf(err, "update rule failed, serviceId is %s, ruleId is %s: get rule type failed.", in.ServiceId, in.RuleId)
+ log.Errorf(err, "update rule failed, serviceId is %s, ruleId is %s: get rule type failed.", in.ServiceId, in.RuleId)
return &pb.UpdateServiceRuleResponse{
Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
}, err
}
if ruleNum >= 1 && ruleType != in.Rule.RuleType {
- util.Logger().Errorf(err, "update rule failed, serviceId is %s, ruleId is %s: rule type can exist one type, BLACK or WHITE.rule type is %s", in.ServiceId, in.RuleId, in.Rule.RuleType)
+ log.Errorf(err, "update rule failed, serviceId is %s, ruleId is %s: rule type can exist one type, BLACK or WHITE.rule type is %s", in.ServiceId, in.RuleId, in.Rule.RuleType)
return &pb.UpdateServiceRuleResponse{
Response: pb.CreateResponse(scerr.ErrModifyRuleNotAllow, "Exist multiple rules,can not change rule type. Rule type is "+ruleType),
}, nil
@@ -186,13 +187,13 @@ func (s *MicroServiceService) UpdateRule(ctx context.Context, in *pb.UpdateServi
rule, err := serviceUtil.GetOneRule(ctx, domainProject, in.ServiceId, in.RuleId)
if err != nil {
- util.Logger().Errorf(err, "update rule failed, serviceId is %s, ruleId is %s: query service rule failed.", in.ServiceId, in.RuleId)
+ log.Errorf(err, "update rule failed, serviceId is %s, ruleId is %s: query service rule failed.", in.ServiceId, in.RuleId)
return &pb.UpdateServiceRuleResponse{
Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
}, err
}
if rule == nil {
- util.Logger().Errorf(err, "update rule failed, serviceId is %s, ruleId is %s:this rule does not exist,can't update.", in.ServiceId, in.RuleId)
+ log.Errorf(err, "update rule failed, serviceId is %s, ruleId is %s:this rule does not exist,can't update.", in.ServiceId, in.RuleId)
return &pb.UpdateServiceRuleResponse{
Response: pb.CreateResponse(scerr.ErrRuleNotExists, "This rule does not exist."),
}, nil
@@ -216,7 +217,7 @@ func (s *MicroServiceService) UpdateRule(ctx context.Context, in *pb.UpdateServi
key := apt.GenerateServiceRuleKey(domainProject, in.ServiceId, in.RuleId)
data, err := json.Marshal(rule)
if err != nil {
- util.Logger().Errorf(err, "update rule failed, serviceId is %s, ruleId is %s: marshal service rule failed.", in.ServiceId, in.RuleId)
+ log.Errorf(err, "update rule failed, serviceId is %s, ruleId is %s: marshal service rule failed.", in.ServiceId, in.RuleId)
return &pb.UpdateServiceRuleResponse{
Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
}, err
@@ -239,19 +240,19 @@ func (s *MicroServiceService) UpdateRule(ctx context.Context, in *pb.UpdateServi
registry.CMP_NOT_EQUAL, 0)},
nil)
if err != nil {
- util.Logger().Errorf(err, "update rule failed, serviceId is %s, ruleId is %s: commit data into etcd failed.", in.ServiceId, in.RuleId)
+ log.Errorf(err, "update rule failed, serviceId is %s, ruleId is %s: commit data into etcd failed.", in.ServiceId, in.RuleId)
return &pb.UpdateServiceRuleResponse{
Response: pb.CreateResponse(scerr.ErrUnavailableBackend, err.Error()),
}, err
}
if !resp.Succeeded {
- util.Logger().Errorf(err, "update rule failed, serviceId is %s, ruleId is %s: service does not exist.", in.ServiceId, in.RuleId)
+ log.Errorf(err, "update rule failed, serviceId is %s, ruleId is %s: service does not exist.", in.ServiceId, in.RuleId)
return &pb.UpdateServiceRuleResponse{
Response: pb.CreateResponse(scerr.ErrServiceNotExists, "Service does not exist."),
}, nil
}
- util.Logger().Infof("update rule successful: servieId is %s, ruleId is %s.", in.ServiceId, in.RuleId)
+ log.Infof("update rule successful: servieId is %s, ruleId is %s.", in.ServiceId, in.RuleId)
return &pb.UpdateServiceRuleResponse{
Response: pb.CreateResponse(pb.Response_SUCCESS, "Get service rules successfully."),
}, nil
@@ -260,7 +261,7 @@ func (s *MicroServiceService) UpdateRule(ctx context.Context, in *pb.UpdateServi
func (s *MicroServiceService) GetRule(ctx context.Context, in *pb.GetServiceRulesRequest) (*pb.GetServiceRulesResponse, error) {
err := Validate(in)
if err != nil {
- util.Logger().Errorf(err, "get service rule failed, serviceId %s.", in.ServiceId)
+ log.Errorf(err, "get service rule failed, serviceId %s.", in.ServiceId)
return &pb.GetServiceRulesResponse{
Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
}, nil
@@ -270,7 +271,7 @@ func (s *MicroServiceService) GetRule(ctx context.Context, in *pb.GetServiceRule
// service id存在性校验
if !serviceUtil.ServiceExist(ctx, domainProject, in.ServiceId) {
- util.Logger().Errorf(nil, "get service rule failed, serviceId is %s: service not exist.", in.ServiceId)
+ log.Errorf(nil, "get service rule failed, serviceId is %s: service not exist.", in.ServiceId)
return &pb.GetServiceRulesResponse{
Response: pb.CreateResponse(scerr.ErrServiceNotExists, "Service does not exist."),
}, nil
@@ -278,7 +279,7 @@ func (s *MicroServiceService) GetRule(ctx context.Context, in *pb.GetServiceRule
rules, err := serviceUtil.GetRulesUtil(ctx, domainProject, in.ServiceId)
if err != nil {
- util.Logger().Errorf(err, "get service rule failed, serviceId is %s: get rule failed.", in.ServiceId)
+ log.Errorf(err, "get service rule failed, serviceId is %s: get rule failed.", in.ServiceId)
return &pb.GetServiceRulesResponse{
Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
}, err
@@ -293,7 +294,7 @@ func (s *MicroServiceService) GetRule(ctx context.Context, in *pb.GetServiceRule
func (s *MicroServiceService) DeleteRule(ctx context.Context, in *pb.DeleteServiceRulesRequest) (*pb.DeleteServiceRulesResponse, error) {
err := Validate(in)
if err != nil {
- util.Logger().Errorf(err, "delete rule failed, serviceId is %s, ruleIds are %s.", in.ServiceId, in.RuleIds)
+ log.Errorf(err, "delete rule failed, serviceId is %s, ruleIds are %s.", in.ServiceId, in.RuleIds)
return &pb.DeleteServiceRulesResponse{
Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
}, nil
@@ -303,7 +304,7 @@ func (s *MicroServiceService) DeleteRule(ctx context.Context, in *pb.DeleteServi
// service id存在性校验
if !serviceUtil.ServiceExist(ctx, domainProject, in.ServiceId) {
- util.Logger().Errorf(nil, "delete service rule failed, serviceId is %s, rule is %v: service does not exist.", in.ServiceId, in.RuleIds)
+ log.Errorf(nil, "delete service rule failed, serviceId is %s, rule is %v: service does not exist.", in.ServiceId, in.RuleIds)
return &pb.DeleteServiceRulesResponse{
Response: pb.CreateResponse(scerr.ErrServiceNotExists, "Service does not exist."),
}, nil
@@ -314,16 +315,16 @@ func (s *MicroServiceService) DeleteRule(ctx context.Context, in *pb.DeleteServi
indexKey := ""
for _, ruleId := range in.RuleIds {
key = apt.GenerateServiceRuleKey(domainProject, in.ServiceId, ruleId)
- util.Logger().Debugf("start delete service rule file: %s", key)
+ log.Debugf("start delete service rule file: %s", key)
data, err := serviceUtil.GetOneRule(ctx, domainProject, in.ServiceId, ruleId)
if err != nil {
- util.Logger().Errorf(err, "delete service rule failed, serviceId is %s, rule is %v: get rule of ruleId %s failed.", in.ServiceId, in.RuleIds, ruleId)
+ log.Errorf(err, "delete service rule failed, serviceId is %s, rule is %v: get rule of ruleId %s failed.", in.ServiceId, in.RuleIds, ruleId)
return &pb.DeleteServiceRulesResponse{
Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
}, err
}
if data == nil {
- util.Logger().Errorf(nil, "delete service rule failed, serviceId is %s, rule is %v: ruleId %s not exist.", in.ServiceId, in.RuleIds, ruleId)
+ log.Errorf(nil, "delete service rule failed, serviceId is %s, rule is %v: ruleId %s not exist.", in.ServiceId, in.RuleIds, ruleId)
return &pb.DeleteServiceRulesResponse{
Response: pb.CreateResponse(scerr.ErrRuleNotExists, "This rule does not exist."),
}, nil
@@ -334,7 +335,7 @@ func (s *MicroServiceService) DeleteRule(ctx context.Context, in *pb.DeleteServi
registry.OpDel(registry.WithStrKey(indexKey)))
}
if len(opts) <= 0 {
- util.Logger().Errorf(nil, "delete service rule failed, serviceId is %s, rule is %v: rule has been deleted.", in.ServiceId, in.RuleIds)
+ log.Errorf(nil, "delete service rule failed, serviceId is %s, rule is %v: rule has been deleted.", in.ServiceId, in.RuleIds)
return &pb.DeleteServiceRulesResponse{
Response: pb.CreateResponse(scerr.ErrRuleNotExists, "No service rule has been deleted."),
}, nil
@@ -346,19 +347,19 @@ func (s *MicroServiceService) DeleteRule(ctx context.Context, in *pb.DeleteServi
registry.CMP_NOT_EQUAL, 0)},
nil)
if err != nil {
- util.Logger().Errorf(err, "delete service rule failed, serviceId is %s, rule is %v: commit data into etcd failed.", in.ServiceId, in.RuleIds)
+ log.Errorf(err, "delete service rule failed, serviceId is %s, rule is %v: commit data into etcd failed.", in.ServiceId, in.RuleIds)
return &pb.DeleteServiceRulesResponse{
Response: pb.CreateResponse(scerr.ErrUnavailableBackend, err.Error()),
}, err
}
if !resp.Succeeded {
- util.Logger().Errorf(err, "delete service rule failed, serviceId is %s, rule is %v: service does not exist.", in.ServiceId, in.RuleIds)
+ log.Errorf(err, "delete service rule failed, serviceId is %s, rule is %v: service does not exist.", in.ServiceId, in.RuleIds)
return &pb.DeleteServiceRulesResponse{
Response: pb.CreateResponse(scerr.ErrServiceNotExists, "Service does not exist."),
}, nil
}
- util.Logger().Infof("delete rule successful: serviceId %s, ruleIds %v", in.ServiceId, in.RuleIds)
+ log.Infof("delete rule successful: serviceId %s, ruleIds %v", in.ServiceId, in.RuleIds)
return &pb.DeleteServiceRulesResponse{
Response: pb.CreateResponse(pb.Response_SUCCESS, "Delete service rules successfully."),
}, nil
diff --git a/server/service/schema.go b/server/service/schema.go
index 182ce4f..80b4ac2 100644
--- a/server/service/schema.go
+++ b/server/service/schema.go
@@ -18,6 +18,7 @@ package service
import (
"fmt"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
apt "github.com/apache/incubator-servicecomb-service-center/server/core"
"github.com/apache/incubator-servicecomb-service-center/server/core/backend"
@@ -34,7 +35,7 @@ import (
func (s *MicroServiceService) GetSchemaInfo(ctx context.Context, in *pb.GetSchemaRequest) (*pb.GetSchemaResponse, error) {
err := Validate(in)
if err != nil {
- util.Logger().Errorf(nil, "get schema failed, serviceId %s, schemaId %s: invalid params.", in.ServiceId, in.SchemaId)
+ log.Errorf(nil, "get schema failed, serviceId %s, schemaId %s: invalid params.", in.ServiceId, in.SchemaId)
return &pb.GetSchemaResponse{
Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
}, nil
@@ -43,7 +44,7 @@ func (s *MicroServiceService) GetSchemaInfo(ctx context.Context, in *pb.GetSchem
domainProject := util.ParseDomainProject(ctx)
if !serviceUtil.ServiceExist(ctx, domainProject, in.ServiceId) {
- util.Logger().Errorf(nil, "get schema failed, serviceId %s, schemaId %s: service not exist.", in.ServiceId, in.SchemaId)
+ log.Errorf(nil, "get schema failed, serviceId %s, schemaId %s: service not exist.", in.ServiceId, in.SchemaId)
return &pb.GetSchemaResponse{
Response: pb.CreateResponse(scerr.ErrServiceNotExists, "Service does not exist."),
}, nil
@@ -53,13 +54,13 @@ func (s *MicroServiceService) GetSchemaInfo(ctx context.Context, in *pb.GetSchem
opts := append(serviceUtil.FromContext(ctx), registry.WithStrKey(key))
resp, errDo := backend.Store().Schema().Search(ctx, opts...)
if errDo != nil {
- util.Logger().Errorf(errDo, "get schema failed, serviceId %s, schemaId %s: get schema info failed.", in.ServiceId, in.SchemaId)
+ log.Errorf(errDo, "get schema failed, serviceId %s, schemaId %s: get schema info failed.", in.ServiceId, in.SchemaId)
return &pb.GetSchemaResponse{
Response: pb.CreateResponse(scerr.ErrUnavailableBackend, errDo.Error()),
}, errDo
}
if resp.Count == 0 {
- util.Logger().Errorf(errDo, "get schema failed, serviceId %s, schemaId %s: schema not exists.", in.ServiceId, in.SchemaId)
+ log.Errorf(errDo, "get schema failed, serviceId %s, schemaId %s: schema not exists.", in.ServiceId, in.SchemaId)
return &pb.GetSchemaResponse{
Response: pb.CreateResponse(scerr.ErrSchemaNotExists, "Do not have this schema info."),
}, nil
@@ -67,7 +68,7 @@ func (s *MicroServiceService) GetSchemaInfo(ctx context.Context, in *pb.GetSchem
schemaSummary, err := getSchemaSummary(ctx, domainProject, in.ServiceId, in.SchemaId)
if err != nil {
- util.Logger().Errorf(err, "get schema failed, serviceId %s, schemaId %s: get schema summary failed.", in.ServiceId, in.SchemaId)
+ log.Errorf(err, "get schema failed, serviceId %s, schemaId %s: get schema summary failed.", in.ServiceId, in.SchemaId)
return &pb.GetSchemaResponse{
Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
}, err
@@ -83,7 +84,7 @@ func (s *MicroServiceService) GetSchemaInfo(ctx context.Context, in *pb.GetSchem
func (s *MicroServiceService) GetAllSchemaInfo(ctx context.Context, in *pb.GetAllSchemaRequest) (*pb.GetAllSchemaResponse, error) {
err := Validate(in)
if err != nil {
- util.Logger().Errorf(nil, "get schema failed, serviceId %s: invalid params.", in.ServiceId)
+ log.Errorf(nil, "get schema failed, serviceId %s: invalid params.", in.ServiceId)
return &pb.GetAllSchemaResponse{
Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
}, nil
@@ -93,13 +94,13 @@ func (s *MicroServiceService) GetAllSchemaInfo(ctx context.Context, in *pb.GetAl
service, err := serviceUtil.GetService(ctx, domainProject, in.ServiceId)
if err != nil {
- util.Logger().Errorf(err, "get all schemas failed: get service failed. %s", in.ServiceId)
+ log.Errorf(err, "get all schemas failed: get service failed. %s", in.ServiceId)
return &pb.GetAllSchemaResponse{
Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
}, err
}
if service == nil {
- util.Logger().Errorf(nil, "get all schemas failed: service does not exist. %s", in.ServiceId)
+ log.Errorf(nil, "get all schemas failed: service does not exist. %s", in.ServiceId)
return &pb.GetAllSchemaResponse{
Response: pb.CreateResponse(scerr.ErrServiceNotExists, "Service does not exist."),
}, nil
@@ -117,7 +118,7 @@ func (s *MicroServiceService) GetAllSchemaInfo(ctx context.Context, in *pb.GetAl
opts := append(serviceUtil.FromContext(ctx), registry.WithStrKey(key), registry.WithPrefix())
resp, errDo := backend.Store().SchemaSummary().Search(ctx, opts...)
if errDo != nil {
- util.Logger().Errorf(errDo, "get schema failed, serviceId %s: get schema info failed.", in.ServiceId)
+ log.Errorf(errDo, "get schema failed, serviceId %s: get schema info failed.", in.ServiceId)
return &pb.GetAllSchemaResponse{
Response: pb.CreateResponse(scerr.ErrUnavailableBackend, errDo.Error()),
}, errDo
@@ -129,7 +130,7 @@ func (s *MicroServiceService) GetAllSchemaInfo(ctx context.Context, in *pb.GetAl
opts := append(serviceUtil.FromContext(ctx), registry.WithStrKey(key), registry.WithPrefix())
respWithSchema, errDo = backend.Store().Schema().Search(ctx, opts...)
if errDo != nil {
- util.Logger().Errorf(errDo, "get schema failed, serviceId %s: get schema info failed.", in.ServiceId)
+ log.Errorf(errDo, "get schema failed, serviceId %s: get schema info failed.", in.ServiceId)
return &pb.GetAllSchemaResponse{
Response: pb.CreateResponse(scerr.ErrUnavailableBackend, errDo.Error()),
}, errDo
@@ -166,7 +167,7 @@ func (s *MicroServiceService) GetAllSchemaInfo(ctx context.Context, in *pb.GetAl
func (s *MicroServiceService) DeleteSchema(ctx context.Context, in *pb.DeleteSchemaRequest) (*pb.DeleteSchemaResponse, error) {
err := Validate(in)
if err != nil {
- util.Logger().Errorf(err, "delete schema failed, serviceId %s, schemaId %s: invalid params.", in.ServiceId, in.SchemaId)
+ log.Errorf(err, "delete schema failed, serviceId %s, schemaId %s: invalid params.", in.ServiceId, in.SchemaId)
return &pb.DeleteSchemaResponse{
Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
}, nil
@@ -174,7 +175,7 @@ func (s *MicroServiceService) DeleteSchema(ctx context.Context, in *pb.DeleteSch
domainProject := util.ParseDomainProject(ctx)
if !serviceUtil.ServiceExist(ctx, domainProject, in.ServiceId) {
- util.Logger().Errorf(nil, "delete schema failed, serviceId %s, schemaId %s: service not exist.", in.ServiceId, in.SchemaId)
+ log.Errorf(nil, "delete schema failed, serviceId %s, schemaId %s: service not exist.", in.ServiceId, in.SchemaId)
return &pb.DeleteSchemaResponse{
Response: pb.CreateResponse(scerr.ErrServiceNotExists, "Service does not exist."),
}, nil
@@ -183,13 +184,13 @@ func (s *MicroServiceService) DeleteSchema(ctx context.Context, in *pb.DeleteSch
key := apt.GenerateServiceSchemaKey(domainProject, in.ServiceId, in.SchemaId)
exist, err := serviceUtil.CheckSchemaInfoExist(ctx, key)
if err != nil {
- util.Logger().Errorf(err, "delete schema failed, serviceId %s, schemaId %s: get schema failed.", in.ServiceId, in.SchemaId)
+ log.Errorf(err, "delete schema failed, serviceId %s, schemaId %s: get schema failed.", in.ServiceId, in.SchemaId)
return &pb.DeleteSchemaResponse{
Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
}, err
}
if !exist {
- util.Logger().Errorf(nil, "delete schema failed, serviceId %s, schemaId %s: schema not exist.", in.ServiceId, in.SchemaId)
+ log.Errorf(nil, "delete schema failed, serviceId %s, schemaId %s: schema not exist.", in.ServiceId, in.SchemaId)
return &pb.DeleteSchemaResponse{
Response: pb.CreateResponse(scerr.ErrSchemaNotExists, "Schema info does not exist."),
}, nil
@@ -206,19 +207,19 @@ func (s *MicroServiceService) DeleteSchema(ctx context.Context, in *pb.DeleteSch
registry.CMP_NOT_EQUAL, 0)},
nil)
if errDo != nil {
- util.Logger().Errorf(errDo, "delete schema failed, serviceId %s, schemaId %s: delete schema from etcd failed.", in.ServiceId, in.SchemaId)
+ log.Errorf(errDo, "delete schema failed, serviceId %s, schemaId %s: delete schema from etcd failed.", in.ServiceId, in.SchemaId)
return &pb.DeleteSchemaResponse{
Response: pb.CreateResponse(scerr.ErrUnavailableBackend, errDo.Error()),
}, errDo
}
if !resp.Succeeded {
- util.Logger().Errorf(nil, "delete schema failed, serviceId %s, schemaId %s: service does not exist.", in.ServiceId, in.SchemaId)
+ log.Errorf(nil, "delete schema failed, serviceId %s, schemaId %s: service does not exist.", in.ServiceId, in.SchemaId)
return &pb.DeleteSchemaResponse{
Response: pb.CreateResponse(scerr.ErrServiceNotExists, "Service does not exist."),
}, nil
}
- util.Logger().Infof("delete schema info successfully.%s", in.SchemaId)
+ log.Infof("delete schema info successfully.%s", in.SchemaId)
return &pb.DeleteSchemaResponse{
Response: pb.CreateResponse(pb.Response_SUCCESS, "Delete schema info successfully."),
}, nil
@@ -227,7 +228,7 @@ func (s *MicroServiceService) DeleteSchema(ctx context.Context, in *pb.DeleteSch
func (s *MicroServiceService) ModifySchemas(ctx context.Context, in *pb.ModifySchemasRequest) (*pb.ModifySchemasResponse, error) {
err := Validate(in)
if err != nil {
- util.Logger().Errorf(err, "modify schemas failed: invalid params.")
+ log.Errorf(err, "modify schemas failed: invalid params.")
return &pb.ModifySchemasResponse{
Response: pb.CreateResponse(scerr.ErrInvalidParams, "Invalid request."),
}, nil
@@ -238,13 +239,13 @@ func (s *MicroServiceService) ModifySchemas(ctx context.Context, in *pb.ModifySc
service, err := serviceUtil.GetService(ctx, domainProject, serviceId)
if err != nil {
- util.Logger().Errorf(err, "modify schemas failed: get service failed. %s", serviceId)
+ log.Errorf(err, "modify schemas failed: get service failed. %s", serviceId)
return &pb.ModifySchemasResponse{
Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
}, err
}
if service == nil {
- util.Logger().Errorf(nil, "modify schemas failed: service does not exist. %s", serviceId)
+ log.Errorf(nil, "modify schemas failed: service does not exist. %s", serviceId)
return &pb.ModifySchemasResponse{
Response: pb.CreateResponse(scerr.ErrServiceNotExists, "Service does not exist."),
}, nil
@@ -252,7 +253,7 @@ func (s *MicroServiceService) ModifySchemas(ctx context.Context, in *pb.ModifySc
respErr := modifySchemas(ctx, domainProject, service, in.Schemas)
if respErr != nil {
- util.Logger().Errorf(nil, "modify schemas failed: commit data failed, serviceId %s", serviceId)
+ log.Errorf(nil, "modify schemas failed: commit data failed, serviceId %s", serviceId)
resp := &pb.ModifySchemasResponse{
Response: pb.CreateResponseWithSCErr(respErr),
}
@@ -324,7 +325,7 @@ func modifySchemas(ctx context.Context, domainProject string, service *pb.MicroS
serviceId := service.ServiceId
schemasFromDatabase, err := GetSchemasFromDatabase(ctx, domainProject, serviceId)
if err != nil {
- util.Logger().Errorf(nil, "modify schema failed: get schema from database failed, %s", serviceId)
+ log.Errorf(nil, "modify schema failed: get schema from database failed, %s", serviceId)
return scerr.NewError(scerr.ErrUnavailableBackend, err.Error())
}
@@ -337,21 +338,21 @@ func modifySchemas(ctx context.Context, domainProject string, service *pb.MicroS
rst := plugin.Plugins().Quota().Apply4Quotas(ctx, res)
errQuota := rst.Err
if errQuota != nil {
- util.Logger().Errorf(errQuota, "modify schemas info failed, serviceId is %s", serviceId)
+ log.Errorf(errQuota, "modify schemas info failed, serviceId is %s", serviceId)
return errQuota
}
service.Schemas = nonExistSchemaIds
opt, err := serviceUtil.UpdateService(domainProject, serviceId, service)
if err != nil {
- util.Logger().Errorf(err, "modify schemas info failed, update service failed , %s", serviceId)
+ log.Errorf(err, "modify schemas info failed, update service failed , %s", serviceId)
return scerr.NewError(scerr.ErrInternal, err.Error())
}
pluginOps = append(pluginOps, opt)
} else {
if len(nonExistSchemaIds) != 0 {
errInfo := fmt.Sprintf("non-exist schemaId %s", util.StringJoin(nonExistSchemaIds, " ,"))
- util.Logger().Errorf(nil, "modify schemas failed, serviceId %s, %s", serviceId, errInfo)
+ log.Errorf(nil, "modify schemas failed, serviceId %s, %s", serviceId, errInfo)
return scerr.NewError(scerr.ErrUndefinedSchemaId, errInfo)
}
for _, needUpdateSchema := range needUpdateSchemas {
@@ -363,13 +364,13 @@ func modifySchemas(ctx context.Context, domainProject string, service *pb.MicroS
opts := schemaWithDatabaseOpera(registry.OpPut, domainProject, serviceId, needUpdateSchema)
pluginOps = append(pluginOps, opts...)
} else {
- util.Logger().Warnf("schema and summary already exist, skip to update, serviceId %s, schemaId %s", serviceId, needUpdateSchema.SchemaId)
+ log.Warnf("schema and summary already exist, skip to update, serviceId %s, schemaId %s", serviceId, needUpdateSchema.SchemaId)
}
}
}
for _, schema := range needAddSchemas {
- util.Logger().Infof("add new schema: serviceId %s, schemaId %s", serviceId, schema.SchemaId)
+ log.Infof("add new schema: serviceId %s, schemaId %s", serviceId, schema.SchemaId)
opts := schemaWithDatabaseOpera(registry.OpPut, domainProject, service.ServiceId, schema)
pluginOps = append(pluginOps, opts...)
}
@@ -380,28 +381,28 @@ func modifySchemas(ctx context.Context, domainProject string, service *pb.MicroS
rst := plugin.Plugins().Quota().Apply4Quotas(ctx, res)
err := rst.Err
if err != nil {
- util.Logger().Errorf(err, "modify schemas info failed, check resource num failed, %s", serviceId)
+ log.Errorf(err, "modify schemas info failed, check resource num failed, %s", serviceId)
return err
}
}
var schemaIds []string
for _, schema := range needAddSchemas {
- util.Logger().Infof("add new schema: serviceId %s, schemaId %s", serviceId, schema.SchemaId)
+ log.Infof("add new schema: serviceId %s, schemaId %s", serviceId, schema.SchemaId)
opts := schemaWithDatabaseOpera(registry.OpPut, domainProject, service.ServiceId, schema)
pluginOps = append(pluginOps, opts...)
schemaIds = append(schemaIds, schema.SchemaId)
}
for _, schema := range needUpdateSchemas {
- util.Logger().Infof("update schema: serviceId %s, schemaId %s", serviceId, schema.SchemaId)
+ log.Infof("update schema: serviceId %s, schemaId %s", serviceId, schema.SchemaId)
opts := schemaWithDatabaseOpera(registry.OpPut, domainProject, serviceId, schema)
pluginOps = append(pluginOps, opts...)
schemaIds = append(schemaIds, schema.SchemaId)
}
for _, schema := range needDeleteSchemas {
- util.Logger().Infof("delete non-exist schema: serviceId %s, schemaId %s", serviceId, schema.SchemaId)
+ log.Infof("delete non-exist schema: serviceId %s, schemaId %s", serviceId, schema.SchemaId)
opts := schemaWithDatabaseOpera(registry.OpDel, domainProject, serviceId, schema)
pluginOps = append(pluginOps, opts...)
}
@@ -409,7 +410,7 @@ func modifySchemas(ctx context.Context, domainProject string, service *pb.MicroS
service.Schemas = schemaIds
opt, err := serviceUtil.UpdateService(domainProject, serviceId, service)
if err != nil {
- util.Logger().Errorf(err, "modify schema info failed, update service.Schemas failed , %s", serviceId)
+ log.Errorf(err, "modify schema info failed, update service.Schemas failed , %s", serviceId)
return scerr.NewError(scerr.ErrInternal, err.Error())
}
pluginOps = append(pluginOps, opt)
@@ -435,7 +436,7 @@ func isExistSchemaId(service *pb.MicroService, schemas []*pb.Schema) bool {
serviceSchemaIds := service.Schemas
for _, schema := range schemas {
if !containsValueInSlice(serviceSchemaIds, schema.SchemaId) {
- util.Logger().Errorf(nil, "schema not exist schemaId: %s, serviceId %s", schema.SchemaId, service.ServiceId)
+ log.Errorf(nil, "schema not exist schemaId: %s, serviceId %s", schema.SchemaId, service.ServiceId)
return false
}
}
@@ -459,7 +460,7 @@ func GetSchemasFromDatabase(ctx context.Context, domainProject string, serviceId
registry.WithPrefix(),
registry.WithStrKey(key))
if err != nil {
- util.Logger().Errorf(err, "Get schema of one service failed. %s", serviceId)
+ log.Errorf(err, "Get schema of one service failed. %s", serviceId)
return nil, err
}
schemas := make([]*pb.Schema, 0, len(resp.Kvs))
@@ -500,7 +501,7 @@ func (s *MicroServiceService) ModifySchema(ctx context.Context, request *pb.Modi
}
err := s.modifySchema(ctx, serviceId, &schema)
if err != nil {
- util.Logger().Errorf(err, "modify schema failed, serviceId %s, schemaId %s", serviceId, schemaId)
+ log.Errorf(err, "modify schema failed, serviceId %s, schemaId %s", serviceId, schemaId)
resp := &pb.ModifySchemaResponse{
Response: pb.CreateResponseWithSCErr(err),
}
@@ -510,7 +511,7 @@ func (s *MicroServiceService) ModifySchema(ctx context.Context, request *pb.Modi
return resp, nil
}
- util.Logger().Infof("modify schema successfully: serviceId %s, schemaId %s.", serviceId, schemaId)
+ log.Infof("modify schema successfully: serviceId %s, schemaId %s.", serviceId, schemaId)
return &pb.ModifySchemaResponse{
Response: pb.CreateResponse(pb.Response_SUCCESS, "modify schema info success"),
}, nil
@@ -520,12 +521,12 @@ func (s *MicroServiceService) canModifySchema(ctx context.Context, domainProject
serviceId := in.ServiceId
schemaId := in.SchemaId
if len(schemaId) == 0 || len(serviceId) == 0 {
- util.Logger().Errorf(nil, "update schema failed: invalid params.")
+ log.Errorf(nil, "update schema failed: invalid params.")
return scerr.NewError(scerr.ErrInvalidParams, "serviceId or schemaId is nil")
}
err := Validate(in)
if err != nil {
- util.Logger().Errorf(err, "update schema failed, serviceId %s, schemaId %s: invalid params.", serviceId, schemaId)
+ log.Errorf(err, "update schema failed, serviceId %s, schemaId %s: invalid params.", serviceId, schemaId)
return scerr.NewError(scerr.ErrInvalidParams, err.Error())
}
@@ -533,11 +534,11 @@ func (s *MicroServiceService) canModifySchema(ctx context.Context, domainProject
rst := plugin.Plugins().Quota().Apply4Quotas(ctx, res)
errQuota := rst.Err
if errQuota != nil {
- util.Logger().Errorf(errQuota, "modify schema info failed, check resource num failed, %s, %s", serviceId, schemaId)
+ log.Errorf(errQuota, "modify schema info failed, check resource num failed, %s, %s", serviceId, schemaId)
return errQuota
}
if len(in.Summary) == 0 {
- util.Logger().Warnf("service %s schema %s summary is empty.", in.ServiceId, schemaId)
+ log.Warnf("service %s schema %s summary is empty.", in.ServiceId, schemaId)
}
return nil
}
@@ -548,11 +549,11 @@ func (s *MicroServiceService) modifySchema(ctx context.Context, serviceId string
service, err := serviceUtil.GetService(ctx, domainProject, serviceId)
if err != nil {
- util.Logger().Errorf(err, "modify schema failed, serviceId %s, schemaId %s: get service failed.", serviceId, schemaId)
+ log.Errorf(err, "modify schema failed, serviceId %s, schemaId %s: get service failed.", serviceId, schemaId)
return scerr.NewError(scerr.ErrInternal, err.Error())
}
if service == nil {
- util.Logger().Errorf(nil, "modify schema failed, serviceId %s, schemaId %s: service not exist", serviceId, schemaId)
+ log.Errorf(nil, "modify schema failed, serviceId %s, schemaId %s: service not exist", serviceId, schemaId)
return scerr.NewError(scerr.ErrServiceNotExists, "service non-exist")
}
@@ -567,23 +568,23 @@ func (s *MicroServiceService) modifySchema(ctx context.Context, serviceId string
key := apt.GenerateServiceSchemaKey(domainProject, serviceId, schemaId)
respSchema, err := backend.Store().Schema().Search(ctx, registry.WithStrKey(key), registry.WithCountOnly())
if err != nil {
- util.Logger().Errorf(err, "modify schema failed, get schema summary failed, %s %s", serviceId, schemaId)
+ log.Errorf(err, "modify schema failed, get schema summary failed, %s %s", serviceId, schemaId)
return scerr.NewError(scerr.ErrUnavailableBackend, err.Error())
}
if respSchema.Count != 0 {
if len(schema.Summary) == 0 {
- util.Logger().Errorf(err, "prod mode, schema already exist, can not change, %s %s", serviceId, schemaId)
+ log.Errorf(err, "prod mode, schema already exist, can not change, %s %s", serviceId, schemaId)
return scerr.NewError(scerr.ErrModifySchemaNotAllow, "schema already exist, can not change, environment is production")
}
exist, err := isExistSchemaSummary(ctx, domainProject, serviceId, schemaId)
if err != nil {
- util.Logger().Errorf(err, "check schema summary is exist failed, serviceId %s, schemaId %s", serviceId, schemaId)
+ log.Errorf(err, "check schema summary is exist failed, serviceId %s, schemaId %s", serviceId, schemaId)
return scerr.NewError(scerr.ErrInternal, err.Error())
}
if exist {
- util.Logger().Errorf(err, "prod mode, schema already exist, can not change, %s %s", serviceId, schemaId)
+ log.Errorf(err, "prod mode, schema already exist, can not change, %s %s", serviceId, schemaId)
return scerr.NewError(scerr.ErrModifySchemaNotAllow, "schema already exist, can not change, environment is production")
}
}
@@ -592,7 +593,7 @@ func (s *MicroServiceService) modifySchema(ctx context.Context, serviceId string
service.Schemas = append(service.Schemas, schemaId)
opt, err := serviceUtil.UpdateService(domainProject, serviceId, service)
if err != nil {
- util.Logger().Errorf(err, "modify schema failed, update service.Schemas failed , serviceId %s, schemaId %s", serviceId, schemaId)
+ log.Errorf(err, "modify schema failed, update service.Schemas failed , serviceId %s, schemaId %s", serviceId, schemaId)
return scerr.NewError(scerr.ErrInternal, err.Error())
}
pluginOps = append(pluginOps, opt)
@@ -602,7 +603,7 @@ func (s *MicroServiceService) modifySchema(ctx context.Context, serviceId string
service.Schemas = append(service.Schemas, schemaId)
opt, err := serviceUtil.UpdateService(domainProject, serviceId, service)
if err != nil {
- util.Logger().Errorf(err, "modify schema failed, update service.Schemas failed , serviceId %s, schemaId %s", serviceId, schemaId)
+ log.Errorf(err, "modify schema failed, update service.Schemas failed , serviceId %s, schemaId %s", serviceId, schemaId)
return scerr.NewError(scerr.ErrInternal, err.Error())
}
pluginOps = append(pluginOps, opt)
@@ -666,7 +667,7 @@ func getSchemaSummary(ctx context.Context, domainProject string, serviceId strin
registry.WithStrKey(key),
)
if err != nil {
- util.Logger().Errorf(err, "get %s schema %s summary failed", serviceId, schemaId)
+ log.Errorf(err, "get %s schema %s summary failed", serviceId, schemaId)
return "", err
}
if len(resp.Kvs) == 0 {
diff --git a/server/service/tag.go b/server/service/tag.go
index a5b4a7b..aafaf82 100644
--- a/server/service/tag.go
+++ b/server/service/tag.go
@@ -18,6 +18,7 @@ package service
import (
"encoding/json"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
apt "github.com/apache/incubator-servicecomb-service-center/server/core"
"github.com/apache/incubator-servicecomb-service-center/server/core/backend"
@@ -33,7 +34,7 @@ import (
func (s *MicroServiceService) AddTags(ctx context.Context, in *pb.AddServiceTagsRequest) (*pb.AddServiceTagsResponse, error) {
err := Validate(in)
if err != nil {
- util.Logger().Errorf(err, "add service tags failed, serviceId %s, tags %v: invalid parameters.", in.ServiceId, in.Tags)
+ log.Errorf(err, "add service tags failed, serviceId %s, tags %v: invalid parameters.", in.ServiceId, in.Tags)
return &pb.AddServiceTagsResponse{
Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
}, nil
@@ -42,7 +43,7 @@ func (s *MicroServiceService) AddTags(ctx context.Context, in *pb.AddServiceTags
domainProject := util.ParseDomainProject(ctx)
// service id存在性校验
if !serviceUtil.ServiceExist(ctx, domainProject, in.ServiceId) {
- util.Logger().Errorf(nil, "add service tags failed, serviceId %s, tags %v: service not exist.", in.ServiceId, in.Tags)
+ log.Errorf(nil, "add service tags failed, serviceId %s, tags %v: service not exist.", in.ServiceId, in.Tags)
return &pb.AddServiceTagsResponse{
Response: pb.CreateResponse(scerr.ErrServiceNotExists, "Service does not exist."),
}, nil
@@ -53,7 +54,7 @@ func (s *MicroServiceService) AddTags(ctx context.Context, in *pb.AddServiceTags
rst := plugin.Plugins().Quota().Apply4Quotas(ctx, res)
errQuota := rst.Err
if errQuota != nil {
- util.Logger().Errorf(errQuota, "add tag info failed, check resource num failed, %s", in.ServiceId)
+ log.Errorf(errQuota, "add tag info failed, check resource num failed, %s", in.ServiceId)
response := &pb.AddServiceTagsResponse{
Response: pb.CreateResponseWithSCErr(errQuota),
}
@@ -65,7 +66,7 @@ func (s *MicroServiceService) AddTags(ctx context.Context, in *pb.AddServiceTags
dataTags, err := serviceUtil.GetTagsUtils(ctx, domainProject, in.ServiceId)
if err != nil {
- util.Logger().Errorf(err, "add service tags failed, serviceId %s, tags %v: get existed tag failed.", in.ServiceId, in.Tags)
+ log.Errorf(err, "add service tags failed, serviceId %s, tags %v: get existed tag failed.", in.ServiceId, in.Tags)
return &pb.AddServiceTagsResponse{
Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
}, err
@@ -80,7 +81,7 @@ func (s *MicroServiceService) AddTags(ctx context.Context, in *pb.AddServiceTags
checkErr := serviceUtil.AddTagIntoETCD(ctx, domainProject, in.ServiceId, dataTags)
if checkErr != nil {
- util.Logger().Errorf(checkErr, "add service tags failed, serviceId %s, tags %v", in.ServiceId, in.Tags)
+ log.Errorf(checkErr, "add service tags failed, serviceId %s, tags %v", in.ServiceId, in.Tags)
resp := &pb.AddServiceTagsResponse{
Response: pb.CreateResponseWithSCErr(checkErr),
}
@@ -90,7 +91,7 @@ func (s *MicroServiceService) AddTags(ctx context.Context, in *pb.AddServiceTags
return resp, nil
}
- util.Logger().Infof("add service tags successful, serviceId %s, tags %v.", in.ServiceId, in.Tags)
+ log.Infof("add service tags successful, serviceId %s, tags %v.", in.ServiceId, in.Tags)
return &pb.AddServiceTagsResponse{
Response: pb.CreateResponse(pb.Response_SUCCESS, "Add service tags successfully."),
}, nil
@@ -100,7 +101,7 @@ func (s *MicroServiceService) UpdateTag(ctx context.Context, in *pb.UpdateServic
tagFlag := util.StringJoin([]string{in.Key, in.Value}, "/")
err := Validate(in)
if err != nil {
- util.Logger().Errorf(err, "update service tag failed, serviceId %s, tag %s: invalid params.", in.ServiceId, tagFlag)
+ log.Errorf(err, "update service tag failed, serviceId %s, tag %s: invalid params.", in.ServiceId, tagFlag)
return &pb.UpdateServiceTagResponse{
Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
}, nil
@@ -109,7 +110,7 @@ func (s *MicroServiceService) UpdateTag(ctx context.Context, in *pb.UpdateServic
domainProject := util.ParseDomainProject(ctx)
if !serviceUtil.ServiceExist(ctx, domainProject, in.ServiceId) {
- util.Logger().Errorf(err, "update service tag failed, serviceId %s, tag %s: service not exist.", in.ServiceId, tagFlag)
+ log.Errorf(err, "update service tag failed, serviceId %s, tag %s: service not exist.", in.ServiceId, tagFlag)
return &pb.UpdateServiceTagResponse{
Response: pb.CreateResponse(scerr.ErrServiceNotExists, "Service does not exist."),
}, nil
@@ -117,14 +118,14 @@ func (s *MicroServiceService) UpdateTag(ctx context.Context, in *pb.UpdateServic
tags, err := serviceUtil.GetTagsUtils(ctx, domainProject, in.ServiceId)
if err != nil {
- util.Logger().Errorf(err, "update service tag failed, serviceId %s, tag %s: get tag failed.", in.ServiceId, tagFlag)
+ log.Errorf(err, "update service tag failed, serviceId %s, tag %s: get tag failed.", in.ServiceId, tagFlag)
return &pb.UpdateServiceTagResponse{
Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
}, err
}
//check tag 是否存在
if _, ok := tags[in.Key]; !ok {
- util.Logger().Errorf(nil, "update service tag failed, serviceId %s, tag %s: tag not exist, please add first.", in.ServiceId, tagFlag)
+ log.Errorf(nil, "update service tag failed, serviceId %s, tag %s: tag not exist, please add first.", in.ServiceId, tagFlag)
return &pb.UpdateServiceTagResponse{
Response: pb.CreateResponse(scerr.ErrTagNotExists, "Update tag for service failed for update tags not exist, please add first."),
}, nil
@@ -133,7 +134,7 @@ func (s *MicroServiceService) UpdateTag(ctx context.Context, in *pb.UpdateServic
checkErr := serviceUtil.AddTagIntoETCD(ctx, domainProject, in.ServiceId, tags)
if checkErr != nil {
- util.Logger().Errorf(checkErr, "update service tag failed, serviceId %s, tag %s.", in.ServiceId, tagFlag)
+ log.Errorf(checkErr, "update service tag failed, serviceId %s, tag %s.", in.ServiceId, tagFlag)
resp := &pb.UpdateServiceTagResponse{
Response: pb.CreateResponseWithSCErr(checkErr),
}
@@ -143,7 +144,7 @@ func (s *MicroServiceService) UpdateTag(ctx context.Context, in *pb.UpdateServic
return resp, nil
}
- util.Logger().Infof("update tag successful, serviceId %s, tag %s.", in.ServiceId, tagFlag)
+ log.Infof("update tag successful, serviceId %s, tag %s.", in.ServiceId, tagFlag)
return &pb.UpdateServiceTagResponse{
Response: pb.CreateResponse(pb.Response_SUCCESS, "Update service tag success."),
}, nil
@@ -152,7 +153,7 @@ func (s *MicroServiceService) UpdateTag(ctx context.Context, in *pb.UpdateServic
func (s *MicroServiceService) DeleteTags(ctx context.Context, in *pb.DeleteServiceTagsRequest) (*pb.DeleteServiceTagsResponse, error) {
err := Validate(in)
if err != nil {
- util.Logger().Errorf(err, "delete service tags failed, serviceId %s, tags %v: invalid params.", in.ServiceId, in.Keys)
+ log.Errorf(err, "delete service tags failed, serviceId %s, tags %v: invalid params.", in.ServiceId, in.Keys)
return &pb.DeleteServiceTagsResponse{
Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
}, nil
@@ -161,7 +162,7 @@ func (s *MicroServiceService) DeleteTags(ctx context.Context, in *pb.DeleteServi
domainProject := util.ParseDomainProject(ctx)
if !serviceUtil.ServiceExist(ctx, domainProject, in.ServiceId) {
- util.Logger().Errorf(nil, "delete service tags failed, serviceId %s, tags %v: service not exist.", in.ServiceId, in.Keys)
+ log.Errorf(nil, "delete service tags failed, serviceId %s, tags %v: service not exist.", in.ServiceId, in.Keys)
return &pb.DeleteServiceTagsResponse{
Response: pb.CreateResponse(scerr.ErrServiceNotExists, "Service does not exist."),
}, nil
@@ -169,14 +170,14 @@ func (s *MicroServiceService) DeleteTags(ctx context.Context, in *pb.DeleteServi
tags, err := serviceUtil.GetTagsUtils(ctx, domainProject, in.ServiceId)
if err != nil {
- util.Logger().Errorf(err, "delete service tags failed, serviceId %s, tags %v: query service failed.", in.ServiceId, in.Keys)
+ log.Errorf(err, "delete service tags failed, serviceId %s, tags %v: query service failed.", in.ServiceId, in.Keys)
return &pb.DeleteServiceTagsResponse{
Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
}, err
}
for _, key := range in.Keys {
if _, ok := tags[key]; !ok {
- util.Logger().Errorf(nil, "delete service tags failed, serviceId %s, tags %v: tag %s not exist.", in.ServiceId, in.Keys, key)
+ log.Errorf(nil, "delete service tags failed, serviceId %s, tags %v: tag %s not exist.", in.ServiceId, in.Keys, key)
return &pb.DeleteServiceTagsResponse{
Response: pb.CreateResponse(scerr.ErrTagNotExists, "Delete tags failed for this key "+key+" does not exist."),
}, nil
@@ -187,7 +188,7 @@ func (s *MicroServiceService) DeleteTags(ctx context.Context, in *pb.DeleteServi
// tags 可能size == 0
data, err := json.Marshal(tags)
if err != nil {
- util.Logger().Errorf(err, "delete service tags failed, serviceId %s, tags %v: marshall service tag failed.", in.ServiceId, in.Keys)
+ log.Errorf(err, "delete service tags failed, serviceId %s, tags %v: marshall service tag failed.", in.ServiceId, in.Keys)
return &pb.DeleteServiceTagsResponse{
Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
}, err
@@ -202,19 +203,19 @@ func (s *MicroServiceService) DeleteTags(ctx context.Context, in *pb.DeleteServi
registry.CMP_NOT_EQUAL, 0)},
nil)
if err != nil {
- util.Logger().Errorf(err, "delete service tags failed, serviceId %s, tags %v: commit tag data into etcd failed.", in.ServiceId, in.Keys)
+ log.Errorf(err, "delete service tags failed, serviceId %s, tags %v: commit tag data into etcd failed.", in.ServiceId, in.Keys)
return &pb.DeleteServiceTagsResponse{
Response: pb.CreateResponse(scerr.ErrUnavailableBackend, err.Error()),
}, err
}
if !resp.Succeeded {
- util.Logger().Errorf(err, "delete service properties failed, serviceId is %s, tags %v: service does not exist.", in.ServiceId, in.Keys)
+ log.Errorf(err, "delete service properties failed, serviceId is %s, tags %v: service does not exist.", in.ServiceId, in.Keys)
return &pb.DeleteServiceTagsResponse{
Response: pb.CreateResponse(scerr.ErrServiceNotExists, "Service does not exist."),
}, nil
}
- util.Logger().Infof("delete service tags successful: serviceId %s, tag %v.", in.ServiceId, in.Keys)
+ log.Infof("delete service tags successful: serviceId %s, tag %v.", in.ServiceId, in.Keys)
return &pb.DeleteServiceTagsResponse{
Response: pb.CreateResponse(pb.Response_SUCCESS, "Delete service tags successfully."),
}, nil
@@ -223,7 +224,7 @@ func (s *MicroServiceService) DeleteTags(ctx context.Context, in *pb.DeleteServi
func (s *MicroServiceService) GetTags(ctx context.Context, in *pb.GetServiceTagsRequest) (*pb.GetServiceTagsResponse, error) {
err := Validate(in)
if err != nil {
- util.Logger().Errorf(err, "get service tags failed, serviceId %s: invalid parameters.", in.ServiceId)
+ log.Errorf(err, "get service tags failed, serviceId %s: invalid parameters.", in.ServiceId)
return &pb.GetServiceTagsResponse{
Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
}, nil
@@ -232,7 +233,7 @@ func (s *MicroServiceService) GetTags(ctx context.Context, in *pb.GetServiceTags
domainProject := util.ParseDomainProject(ctx)
if !serviceUtil.ServiceExist(ctx, domainProject, in.ServiceId) {
- util.Logger().Errorf(err, "get service tags failed, serviceId %s: service not exist.", in.ServiceId)
+ log.Errorf(err, "get service tags failed, serviceId %s: service not exist.", in.ServiceId)
return &pb.GetServiceTagsResponse{
Response: pb.CreateResponse(scerr.ErrServiceNotExists, "Service does not exist."),
}, nil
@@ -240,7 +241,7 @@ func (s *MicroServiceService) GetTags(ctx context.Context, in *pb.GetServiceTags
tags, err := serviceUtil.GetTagsUtils(ctx, domainProject, in.ServiceId)
if err != nil {
- util.Logger().Errorf(err, "get service tags failed, serviceId %s: get tag failed.", in.ServiceId)
+ log.Errorf(err, "get service tags failed, serviceId %s: get tag failed.", in.ServiceId)
return &pb.GetServiceTagsResponse{
Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
}, err
diff --git a/server/service/util/dependency.go b/server/service/util/dependency.go
index f26f0f7..2b483ff 100644
--- a/server/service/util/dependency.go
+++ b/server/service/util/dependency.go
@@ -19,7 +19,8 @@ package util
import (
"encoding/json"
"errors"
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/gopool"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
apt "github.com/apache/incubator-servicecomb-service-center/server/core"
"github.com/apache/incubator-servicecomb-service-center/server/core/backend"
pb "github.com/apache/incubator-servicecomb-service-center/server/core/proto"
@@ -40,14 +41,14 @@ type Dependency struct {
func (dep *Dependency) RemoveConsumerOfProviderRule() {
dep.chanNum++
- util.Go(dep.removeConsumerOfProviderRule)
+ gopool.Go(dep.removeConsumerOfProviderRule)
}
func (dep *Dependency) removeConsumerOfProviderRule(ctx context.Context) {
opts := make([]registry.PluginOp, 0, len(dep.removedDependencyRuleList))
for _, providerRule := range dep.removedDependencyRuleList {
proProkey := apt.GenerateProviderDependencyRuleKey(providerRule.Tenant, providerRule)
- util.Logger().Debugf("This proProkey is %s.", proProkey)
+ log.Debugf("This proProkey is %s.", proProkey)
consumerValue, err := TransferToMicroServiceDependency(ctx, proProkey)
if err != nil {
dep.err <- err
@@ -58,7 +59,7 @@ func (dep *Dependency) removeConsumerOfProviderRule(ctx context.Context) {
consumerValue.Dependency = append(consumerValue.Dependency[:key], consumerValue.Dependency[key+1:]...)
break
}
- util.Logger().Debugf("tmp and dep.Consumer not equal, tmp %v, consumer %v", tmp, dep.Consumer)
+ log.Debugf("tmp and dep.Consumer not equal, tmp %v, consumer %v", tmp, dep.Consumer)
}
//删除后,如果不存在依赖规则了,就删除该provider的依赖规则,如果有,则更新该依赖规则
if len(consumerValue.Dependency) == 0 {
@@ -67,7 +68,7 @@ func (dep *Dependency) removeConsumerOfProviderRule(ctx context.Context) {
}
data, err := json.Marshal(consumerValue)
if err != nil {
- util.Logger().Errorf(nil, "Marshal tmpValue failed.")
+ log.Errorf(nil, "Marshal tmpValue failed.")
dep.err <- err
return
}
@@ -87,7 +88,7 @@ func (dep *Dependency) removeConsumerOfProviderRule(ctx context.Context) {
func (dep *Dependency) AddConsumerOfProviderRule() {
dep.chanNum++
- util.Go(dep.addConsumerOfProviderRule)
+ gopool.Go(dep.addConsumerOfProviderRule)
}
func (dep *Dependency) addConsumerOfProviderRule(ctx context.Context) {
@@ -103,7 +104,7 @@ func (dep *Dependency) addConsumerOfProviderRule(ctx context.Context) {
data, errMarshal := json.Marshal(tmpValue)
if errMarshal != nil {
- util.Logger().Errorf(nil, "Marshal tmpValue failed.")
+ log.Errorf(nil, "Marshal tmpValue failed.")
dep.err <- errors.New("Marshal tmpValue failed.")
return
}
@@ -131,7 +132,7 @@ func (dep *Dependency) UpdateProvidersRuleOfConsumer(conKey string) error {
registry.WithStrKey(conKey),
)
if err != nil {
- util.Logger().Errorf(nil, "Upload dependency rule failed.")
+ log.Errorf(nil, "Upload dependency rule failed.")
return err
}
return nil
@@ -142,7 +143,7 @@ func (dep *Dependency) UpdateProvidersRuleOfConsumer(conKey string) error {
}
data, err := json.Marshal(dependency)
if err != nil {
- util.Logger().Errorf(nil, "Marshal tmpValue fialed.")
+ log.Errorf(nil, "Marshal tmpValue fialed.")
return err
}
_, err = backend.Registry().Do(context.TODO(),
@@ -150,7 +151,7 @@ func (dep *Dependency) UpdateProvidersRuleOfConsumer(conKey string) error {
registry.WithStrKey(conKey),
registry.WithValue(data))
if err != nil {
- util.Logger().Errorf(nil, "Upload dependency rule failed.")
+ log.Errorf(nil, "Upload dependency rule failed.")
return err
}
return nil
diff --git a/server/service/util/dependency_query.go b/server/service/util/dependency_query.go
index eab4c57..88bf4c4 100644
--- a/server/service/util/dependency_query.go
+++ b/server/service/util/dependency_query.go
@@ -18,6 +18,7 @@ package util
import (
"fmt"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
apt "github.com/apache/incubator-servicecomb-service-center/server/core"
"github.com/apache/incubator-servicecomb-service-center/server/core/backend"
@@ -85,7 +86,7 @@ func (dr *DependencyRelation) GetDependencyProviders(opts ...DependencyRelationF
for _, providerId := range providerIds {
provider, err := GetService(dr.ctx, key.Tenant, providerId)
if err != nil {
- util.Logger().Warnf("Provider does not exist, %s/%s/%s",
+ log.Warnf("Provider does not exist, %s/%s/%s",
key.AppId, key.ServiceName, key.Version)
continue
}
@@ -115,7 +116,7 @@ func (dr *DependencyRelation) GetDependencyProviderIds() ([]string, error) {
func (dr *DependencyRelation) getProviderKeys() ([]*pb.MicroServiceKey, error) {
if dr.consumer == nil {
- util.Logger().Infof("dr.consumer is nil ------->")
+ log.Infof("dr.consumer is nil ------->")
return nil, fmt.Errorf("Invalid consumer")
}
consumerMicroServiceKey := pb.MicroServiceToKey(dr.domainProject, dr.consumer)
@@ -135,18 +136,18 @@ func (dr *DependencyRelation) getDependencyProviderIds(providerRules []*pb.Micro
switch {
case provider.ServiceName == "*":
if err != nil {
- util.Logger().Errorf(err, "Add dependency failed, rely all service: get all services failed.")
+ log.Errorf(err, "Add dependency failed, rely all service: get all services failed.")
return provideServiceIds, err
}
return serviceIds, nil
default:
if err != nil {
- util.Logger().Errorf(err, "Get providerIds failed, service: %s/%s/%s",
+ log.Errorf(err, "Get providerIds failed, service: %s/%s/%s",
provider.AppId, provider.ServiceName, provider.Version)
return provideServiceIds, err
}
if len(serviceIds) == 0 {
- util.Logger().Warnf("Get providerIds is empty, service: %s/%s/%s does not exist",
+ log.Warnf("Get providerIds is empty, service: %s/%s/%s does not exist",
provider.AppId, provider.ServiceName, provider.Version)
continue
}
@@ -160,7 +161,7 @@ func (dr *DependencyRelation) parseDependencyRule(dependencyRule *pb.MicroServic
opts := FromContext(dr.ctx)
switch {
case dependencyRule.ServiceName == "*":
- util.Logger().Infof("Rely all service, * type, consumerId %s", dr.consumer.ServiceId)
+ log.Infof("Rely all service, * type, consumerId %s", dr.consumer.ServiceId)
splited := strings.Split(apt.GenerateServiceIndexKey(dependencyRule), "/")
allServiceKey := util.StringJoin(splited[:len(splited)-3], "/") + "/"
sopts := append(opts,
@@ -183,7 +184,7 @@ func (dr *DependencyRelation) parseDependencyRule(dependencyRule *pb.MicroServic
func (dr *DependencyRelation) GetDependencyConsumers(opts ...DependencyRelationFilterOption) ([]*pb.MicroService, error) {
consumerDependAllList, err := dr.getDependencyConsumersOfProvider()
if err != nil {
- util.Logger().Errorf(err, "Get consumers of provider rule failed, %s", dr.provider.ServiceId)
+ log.Errorf(err, "Get consumers of provider rule failed, %s", dr.provider.ServiceId)
return nil, err
}
consumers := make([]*pb.MicroService, 0)
@@ -198,7 +199,7 @@ func (dr *DependencyRelation) GetDependencyConsumers(opts ...DependencyRelationF
return nil, err
}
if service == nil {
- util.Logger().Warnf("Consumer does not exist, %v", consumer)
+ log.Warnf("Consumer does not exist, %v", consumer)
continue
}
@@ -217,7 +218,7 @@ func (dr *DependencyRelation) getServiceByMicroServiceKey(service *pb.MicroServi
return nil, err
}
if len(serviceId) == 0 {
- util.Logger().Warnf("Service not exist,%v", service)
+ log.Warnf("Service not exist,%v", service)
return nil, nil
}
return GetService(dr.ctx, service.Tenant, serviceId)
@@ -232,11 +233,11 @@ func (dr *DependencyRelation) GetDependencyConsumerIds() ([]string, error) {
for _, consumer := range consumerDependAllList {
consumerId, err := GetServiceId(dr.ctx, consumer)
if err != nil {
- util.Logger().Errorf(err, "Get consumer failed, %v", consumer)
+ log.Errorf(err, "Get consumer failed, %v", consumer)
return nil, err
}
if len(consumerId) == 0 {
- util.Logger().Warnf("Get consumer not exist, %v", consumer)
+ log.Warnf("Get consumer not exist, %v", consumer)
continue
}
consumerIds = append(consumerIds, consumerId)
@@ -247,19 +248,19 @@ func (dr *DependencyRelation) GetDependencyConsumerIds() ([]string, error) {
func (dr *DependencyRelation) getDependencyConsumersOfProvider() ([]*pb.MicroServiceKey, error) {
if dr.provider == nil {
- util.Logger().Infof("dr.provider is nil ------->")
+ log.Infof("dr.provider is nil ------->")
return nil, fmt.Errorf("Invalid provider")
}
providerService := pb.MicroServiceToKey(dr.domainProject, dr.provider)
consumerDependAllList, err := dr.getConsumerOfDependAllServices()
if err != nil {
- util.Logger().Errorf(err, "Get consumer that depend on all services failed, %s", dr.provider.ServiceId)
+ log.Errorf(err, "Get consumer that depend on all services failed, %s", dr.provider.ServiceId)
return nil, err
}
consumerDependList, err := dr.getConsumerOfSameServiceNameAndAppId(providerService)
if err != nil {
- util.Logger().Errorf(err, "Get consumer that depend on same serviceName and appid rule failed, %s",
+ log.Errorf(err, "Get consumer that depend on same serviceName and appid rule failed, %s",
dr.provider.ServiceId)
return nil, err
}
@@ -274,11 +275,11 @@ func (dr *DependencyRelation) getConsumerOfDependAllServices() ([]*pb.MicroServi
opts := append(FromContext(dr.ctx), registry.WithStrKey(relyAllKey))
rsp, err := backend.Store().DependencyRule().Search(dr.ctx, opts...)
if err != nil {
- util.Logger().Errorf(err, "get consumer that rely all service failed.")
+ log.Errorf(err, "get consumer that rely all service failed.")
return nil, err
}
if len(rsp.Kvs) != 0 {
- util.Logger().Infof("consumer that rely all service exist.ServiceName: %s.", dr.provider.ServiceName)
+ log.Infof("consumer that rely all service exist.ServiceName: %s.", dr.provider.ServiceName)
return rsp.Kvs[0].Value.(*pb.MicroServiceDependency).Dependency, nil
}
return nil, nil
@@ -295,7 +296,7 @@ func (dr *DependencyRelation) getConsumerOfSameServiceNameAndAppId(provider *pb.
registry.WithPrefix())
rsp, err := backend.Store().DependencyRule().Search(dr.ctx, opts...)
if err != nil {
- util.Logger().Errorf(err, "get all dependency rule failed: provider rule key %v.", provider)
+ log.Errorf(err, "get all dependency rule failed: provider rule key %v.", provider)
return nil, err
}
@@ -309,12 +310,12 @@ func (dr *DependencyRelation) getConsumerOfSameServiceNameAndAppId(provider *pb.
if latestServiceId == nil {
latestServiceId, _, err = FindServiceIds(dr.ctx, providerVersionRule, provider)
if err != nil {
- util.Logger().Errorf(err, "Get latest service failed.")
+ log.Errorf(err, "Get latest service failed.")
return nil, err
}
}
if len(latestServiceId) == 0 {
- util.Logger().Infof("%s 's providerId is empty,no this service.", provider.ServiceName)
+ log.Infof("%s 's providerId is empty,no this service.", provider.ServiceName)
continue
}
if dr.provider.ServiceId != latestServiceId[0] {
@@ -327,7 +328,7 @@ func (dr *DependencyRelation) getConsumerOfSameServiceNameAndAppId(provider *pb.
}
}
- util.Logger().Debugf("providerETCD is %s", providerVersionRuleArr)
+ log.Debugf("providerETCD is %s", providerVersionRuleArr)
allConsumers = append(allConsumers, kv.Value.(*pb.MicroServiceDependency).Dependency...)
}
return allConsumers, nil
diff --git a/server/service/util/dependency_util.go b/server/service/util/dependency_util.go
index f7f4aae..d77a49e 100644
--- a/server/service/util/dependency_util.go
+++ b/server/service/util/dependency_util.go
@@ -20,6 +20,7 @@ import (
"encoding/json"
"errors"
"fmt"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
apt "github.com/apache/incubator-servicecomb-service-center/server/core"
"github.com/apache/incubator-servicecomb-service-center/server/core/backend"
@@ -35,7 +36,7 @@ func GetConsumerIds(ctx context.Context, domainProject string, provider *pb.Micr
dr := NewProviderDependencyRelation(ctx, domainProject, provider)
consumerIds, err := dr.GetDependencyConsumerIds()
if err != nil {
- util.Logger().Errorf(err, "Get dependency consumerIds failed.%s", provider.ServiceId)
+ log.Errorf(err, "Get dependency consumerIds failed.%s", provider.ServiceId)
return nil, err
}
return consumerIds, nil
@@ -46,7 +47,7 @@ func GetProviderIds(ctx context.Context, domainProject string, consumer *pb.Micr
dr := NewConsumerDependencyRelation(ctx, domainProject, consumer)
providerIds, err := dr.GetDependencyProviderIds()
if err != nil {
- util.Logger().Errorf(err, "Get dependency providerIds failed.%s", consumer.ServiceId)
+ log.Errorf(err, "Get dependency providerIds failed.%s", consumer.ServiceId)
return nil, err
}
return providerIds, nil
@@ -184,7 +185,7 @@ func AddServiceVersionRule(ctx context.Context, domainProject string, consumer *
return err
}
if !resp.Succeeded {
- util.Logger().Infof("find request into dependency queue successfully, %s: %v", key, r)
+ log.Infof("find request into dependency queue successfully, %s: %v", key, r)
}
return nil
}
@@ -197,7 +198,7 @@ func TransferToMicroServiceDependency(ctx context.Context, key string) (*pb.Micr
opts := append(FromContext(ctx), registry.WithStrKey(key))
res, err := backend.Store().DependencyRule().Search(ctx, opts...)
if err != nil {
- util.Logger().Errorf(nil, "Get dependency rule failed.")
+ log.Errorf(nil, "Get dependency rule failed.")
return nil, err
}
if len(res.Kvs) != 0 {
@@ -234,7 +235,7 @@ func parseAddOrUpdateRules(ctx context.Context, dep *Dependency) (newDependencyR
oldProviderRules, err := TransferToMicroServiceDependency(ctx, conKey)
if err != nil {
- util.Logger().Errorf(err, "maintain dependency rule failed, consumer %s/%s/%s: get consumer depedency rule failed.",
+ log.Errorf(err, "maintain dependency rule failed, consumer %s/%s/%s: get consumer depedency rule failed.",
dep.Consumer.AppId, dep.Consumer.ServiceName, dep.Consumer.Version)
return
}
@@ -279,7 +280,7 @@ func parseOverrideRules(ctx context.Context, dep *Dependency) (newDependencyRule
oldProviderRules, err := TransferToMicroServiceDependency(ctx, conKey)
if err != nil {
- util.Logger().Errorf(err, "maintain dependency rule failed, consumer %s/%s/%s: get consumer depedency rule failed.",
+ log.Errorf(err, "maintain dependency rule failed, consumer %s/%s/%s: get consumer depedency rule failed.",
dep.Consumer.AppId, dep.Consumer.ServiceName, dep.Consumer.Version)
return
}
@@ -314,13 +315,13 @@ func syncDependencyRule(ctx context.Context, dep *Dependency, filter func(contex
dep.err = make(chan error, 5)
dep.chanNum = 0
if len(deleteDependencyRuleList) != 0 {
- util.Logger().Infof("Delete dependency rule remove for consumer %s, %v, ", consumerFlag, deleteDependencyRuleList)
+ log.Infof("Delete dependency rule remove for consumer %s, %v, ", consumerFlag, deleteDependencyRuleList)
dep.removedDependencyRuleList = deleteDependencyRuleList
dep.RemoveConsumerOfProviderRule()
}
if len(newDependencyRuleList) != 0 {
- util.Logger().Infof("New dependency rule add for consumer %s, %v, ", consumerFlag, newDependencyRuleList)
+ log.Infof("New dependency rule add for consumer %s, %v, ", consumerFlag, newDependencyRuleList)
dep.NewDependencyRuleList = newDependencyRuleList
dep.AddConsumerOfProviderRule()
}
@@ -376,7 +377,7 @@ func containServiceDependency(services []*pb.MicroServiceKey, service *pb.MicroS
}
func BadParamsResponse(detailErr string) *pb.CreateDependenciesResponse {
- util.Logger().Errorf(nil, "Request params is invalid. %s", detailErr)
+ log.Errorf(nil, "Request params is invalid. %s", detailErr)
if len(detailErr) == 0 {
detailErr = "Request params is invalid."
}
@@ -390,7 +391,7 @@ func ParamsChecker(consumerInfo *pb.MicroServiceKey, providersInfo []*pb.MicroSe
for _, providerInfo := range providersInfo {
//存在带*的情况,后面的数据就不校验了
if providerInfo.ServiceName == "*" {
- util.Logger().Debugf("%s 's provider contains *.", consumerInfo.ServiceName)
+ log.Debugf("%s 's provider contains *.", consumerInfo.ServiceName)
break
}
if len(providerInfo.AppId) == 0 {
diff --git a/server/service/util/domain_util.go b/server/service/util/domain_util.go
index bd529ca..3dff4e4 100644
--- a/server/service/util/domain_util.go
+++ b/server/service/util/domain_util.go
@@ -17,6 +17,7 @@
package util
import (
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
apt "github.com/apache/incubator-servicecomb-service-center/server/core"
"github.com/apache/incubator-servicecomb-service-center/server/core/backend"
@@ -106,7 +107,7 @@ func NewDomainProject(ctx context.Context, domain, project string) error {
if !ok && err == nil {
ok, err = NewDomain(ctx, domain)
if ok {
- util.Logger().Infof("new domain(%s)", domain)
+ log.Infof("new domain(%s)", domain)
}
}
if err != nil {
@@ -116,7 +117,7 @@ func NewDomainProject(ctx context.Context, domain, project string) error {
if !ok && err == nil {
ok, err = NewProject(ctx, domain, project)
if ok {
- util.Logger().Infof("new project(%s/%s)", domain, project)
+ log.Infof("new project(%s/%s)", domain, project)
}
}
return err
diff --git a/server/service/util/instance_util.go b/server/service/util/instance_util.go
index a523c61..27ccdc0 100644
--- a/server/service/util/instance_util.go
+++ b/server/service/util/instance_util.go
@@ -19,6 +19,7 @@ package util
import (
"encoding/json"
"fmt"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
apt "github.com/apache/incubator-servicecomb-service-center/server/core"
"github.com/apache/incubator-servicecomb-service-center/server/core/backend"
@@ -79,7 +80,7 @@ func GetAllInstancesOfOneService(ctx context.Context, domainProject string, serv
opts := append(FromContext(ctx), registry.WithStrKey(key), registry.WithPrefix())
resp, err := backend.Store().Instance().Search(ctx, opts...)
if err != nil {
- util.Logger().Errorf(err, "Get instance of service %s from etcd failed.", serviceId)
+ log.Errorf(err, "Get instance of service %s from etcd failed.", serviceId)
return nil, err
}
@@ -98,7 +99,7 @@ func GetInstanceCountOfOneService(ctx context.Context, domainProject string, ser
registry.WithCountOnly())
resp, err := backend.Store().Instance().Search(ctx, opts...)
if err != nil {
- util.Logger().Errorf(err, "Get instance count of service %s from etcd failed.", serviceId)
+ log.Errorf(err, "Get instance count of service %s from etcd failed.", serviceId)
return 0, err
}
return resp.Count, nil
@@ -156,11 +157,11 @@ func DeleteServiceAllInstances(ctx context.Context, serviceId string) error {
registry.WithPrefix(),
registry.WithNoCache())
if err != nil {
- util.Logger().Errorf(err, "delete service %s all instance failed: get instance lease failed.", serviceId)
+ log.Errorf(err, "delete service %s all instance failed: get instance lease failed.", serviceId)
return err
}
if resp.Count <= 0 {
- util.Logger().Warnf("service %s has no deployment of instance.", serviceId)
+ log.Warnf("service %s has no deployment of instance.", serviceId)
return nil
}
for _, v := range resp.Kvs {
@@ -177,16 +178,16 @@ func QueryAllProvidersInstances(ctx context.Context, selfServiceId string) (resu
service, err := GetService(ctx, domainProject, selfServiceId)
if err != nil {
- util.Logger().Errorf(err, "get service %s failed", selfServiceId)
+ log.Errorf(err, "get service %s failed", selfServiceId)
return
}
if service == nil {
- util.Logger().Errorf(nil, "service not exist, %s", selfServiceId)
+ log.Errorf(nil, "service not exist, %s", selfServiceId)
return
}
providerIds, _, err := GetAllProviderIds(ctx, domainProject, service)
if err != nil {
- util.Logger().Errorf(err, "get service %s providers id set failed.", selfServiceId)
+ log.Errorf(err, "get service %s providers id set failed.", selfServiceId)
return
}
@@ -195,7 +196,7 @@ func QueryAllProvidersInstances(ctx context.Context, selfServiceId string) (resu
for _, providerId := range providerIds {
service, err := GetServiceWithRev(ctx, domainProject, providerId, rev)
if err != nil {
- util.Logger().Errorf(err, "get service %s provider service %s file with revision %d failed.",
+ log.Errorf(err, "get service %s provider service %s file with revision %d failed.",
selfServiceId, providerId, rev)
return
}
@@ -205,7 +206,7 @@ func QueryAllProvidersInstances(ctx context.Context, selfServiceId string) (resu
kvs, err := queryServiceInstancesKvs(ctx, providerId, rev)
if err != nil {
- util.Logger().Errorf(err, "get service %s provider %s instances with revision %d failed.",
+ log.Errorf(err, "get service %s provider %s instances with revision %d failed.",
selfServiceId, providerId, rev)
return
}
@@ -235,7 +236,7 @@ func queryServiceInstancesKvs(ctx context.Context, serviceId string, rev int64)
registry.WithPrefix(),
registry.WithRev(rev))
if err != nil {
- util.Logger().Errorf(err, "query instance of service %s with revision %d from etcd failed.",
+ log.Errorf(err, "query instance of service %s with revision %d from etcd failed.",
serviceId, rev)
return nil, err
}
diff --git a/server/service/util/microservice_util.go b/server/service/util/microservice_util.go
index e5a89a9..e9aab49 100644
--- a/server/service/util/microservice_util.go
+++ b/server/service/util/microservice_util.go
@@ -18,6 +18,7 @@ package util
import (
"encoding/json"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
apt "github.com/apache/incubator-servicecomb-service-center/server/core"
"github.com/apache/incubator-servicecomb-service-center/server/core/backend"
@@ -89,7 +90,7 @@ func GetServiceId(ctx context.Context, key *pb.MicroServiceKey) (serviceId strin
}
if len(serviceId) == 0 {
// 别名查询
- util.Logger().Debugf("could not search microservice %s/%s/%s id by field 'serviceName', now try field 'alias'.",
+ log.Debugf("could not search microservice %s/%s/%s id by field 'serviceName', now try field 'alias'.",
key.AppId, key.ServiceName, key.Version)
return searchServiceIdFromAlias(ctx, key)
}
@@ -210,7 +211,7 @@ func UpdateService(domainProject string, serviceId string, service *pb.MicroServ
key := apt.GenerateServiceKey(domainProject, serviceId)
data, err := json.Marshal(service)
if err != nil {
- util.Logger().Errorf(err, "marshal service failed.")
+ log.Errorf(err, "marshal service failed.")
return
}
opt = registry.OpPut(registry.WithStrKey(key), registry.WithValue(data))
diff --git a/server/service/util/rule_util.go b/server/service/util/rule_util.go
index 3d76855..82bbd54 100644
--- a/server/service/util/rule_util.go
+++ b/server/service/util/rule_util.go
@@ -18,6 +18,7 @@ package util
import (
"fmt"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
apt "github.com/apache/incubator-servicecomb-service-center/server/core"
"github.com/apache/incubator-servicecomb-service-center/server/core/backend"
@@ -122,7 +123,7 @@ func GetServiceRuleType(ctx context.Context, domainProject string, serviceId str
registry.WithPrefix())
resp, err := backend.Store().Rule().Search(ctx, opts...)
if err != nil {
- util.Logger().Errorf(err, "Get rule failed.%s", err.Error())
+ log.Errorf(err, "Get rule failed.%s", err.Error())
return "", 0, err
}
if len(resp.Kvs) == 0 {
@@ -136,11 +137,11 @@ func GetOneRule(ctx context.Context, domainProject, serviceId, ruleId string) (*
registry.WithStrKey(apt.GenerateServiceRuleKey(domainProject, serviceId, ruleId)))
resp, err := backend.Store().Rule().Search(ctx, opts...)
if err != nil {
- util.Logger().Errorf(nil, "Get rule for service failed for %s.", err.Error())
+ log.Errorf(nil, "Get rule for service failed for %s.", err.Error())
return nil, err
}
if len(resp.Kvs) == 0 {
- util.Logger().Errorf(nil, "Get rule failed, ruleId is %s.", ruleId)
+ log.Errorf(nil, "Get rule failed, ruleId is %s.", ruleId)
return nil, nil
}
return resp.Kvs[0].Value.(*pb.ServiceRule), nil
@@ -193,7 +194,7 @@ func patternWhiteList(rulesOfProvider []*pb.ServiceRule, tagsOfConsumer map[stri
match, _ := regexp.MatchString(rule.Pattern, value)
if match {
- util.Logger().Infof("consumer %s match white list, rule.Pattern is %s, value is %s",
+ log.Infof("consumer %s match white list, rule.Pattern is %s, value is %s",
consumerId, rule.Pattern, value)
return nil
}
@@ -206,13 +207,13 @@ func parsePattern(v reflect.Value, rule *pb.ServiceRule, tagsOfConsumer map[stri
key := rule.Attribute[4:]
value := tagsOfConsumer[key]
if len(value) == 0 {
- util.Logger().Infof("can not find service %s tag '%s'", consumerId, key)
+ log.Infof("can not find service %s tag '%s'", consumerId, key)
}
return value, nil
}
key := v.FieldByName(rule.Attribute)
if !key.IsValid() {
- util.Logger().Errorf(nil, "can not find service %s field '%s', rule %s",
+ log.Errorf(nil, "can not find service %s field '%s', rule %s",
consumerId, rule.Attribute, rule.RuleId)
return "", scerr.NewErrorf(scerr.ErrInternal, "Can not find field '%s'", rule.Attribute)
}
@@ -235,7 +236,7 @@ func patternBlackList(rulesOfProvider []*pb.ServiceRule, tagsOfConsumer map[stri
match, _ := regexp.MatchString(rule.Pattern, value)
if match {
- util.Logger().Warnf("no permission to access, consumer %s match black list, rule.Pattern is %s, value is %s",
+ log.Warnf("no permission to access, consumer %s match black list, rule.Pattern is %s, value is %s",
consumerId, rule.Pattern, value)
return scerr.NewError(scerr.ErrPermissionDeny, "Found in black list")
}
diff --git a/server/service/util/tag_util.go b/server/service/util/tag_util.go
index 440dda2..859c019 100644
--- a/server/service/util/tag_util.go
+++ b/server/service/util/tag_util.go
@@ -18,6 +18,7 @@ package util
import (
"encoding/json"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
apt "github.com/apache/incubator-servicecomb-service-center/server/core"
"github.com/apache/incubator-servicecomb-service-center/server/core/backend"
@@ -53,7 +54,7 @@ func GetTagsUtils(ctx context.Context, domainProject, serviceId string) (tags ma
opts := append(FromContext(ctx), registry.WithStrKey(key))
resp, err := backend.Store().ServiceTag().Search(ctx, opts...)
if err != nil {
- util.Logger().Errorf(err, "get service %s tags file failed", key)
+ log.Errorf(err, "get service %s tags file failed", key)
return tags, err
}
diff --git a/server/service/validate.go b/server/service/validate.go
index f6b9c2d..4c681d6 100644
--- a/server/service/validate.go
+++ b/server/service/validate.go
@@ -18,7 +18,7 @@ package service
import (
"errors"
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
pb "github.com/apache/incubator-servicecomb-service-center/server/core/proto"
"reflect"
)
@@ -91,7 +91,7 @@ func Validate(v interface{}) error {
case *pb.GetAppsRequest:
return MicroServiceKeyValidator().Validate(v)
default:
- util.Logger().Warnf("No validator for %T.", t)
+ log.Warnf("No validator for %T.", t)
return nil
}
}
diff --git a/server/service/watch.go b/server/service/watch.go
index 97fd9c3..0ceccaf 100644
--- a/server/service/watch.go
+++ b/server/service/watch.go
@@ -18,6 +18,7 @@ package service
import (
"errors"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/pkg/util"
apt "github.com/apache/incubator-servicecomb-service-center/server/core"
pb "github.com/apache/incubator-servicecomb-service-center/server/core/proto"
@@ -41,18 +42,18 @@ func (s *InstanceService) WatchPreOpera(ctx context.Context, in *pb.WatchInstanc
func (s *InstanceService) Watch(in *pb.WatchInstanceRequest, stream pb.ServiceInstanceCtrl_WatchServer) error {
var err error
if err = s.WatchPreOpera(stream.Context(), in); err != nil {
- util.Logger().Errorf(err, "establish watch failed: invalid params.")
+ log.Errorf(err, "establish watch failed: invalid params.")
return err
}
domainProject := util.ParseDomainProject(stream.Context())
watcher := nf.NewListWatcher(in.SelfServiceId, apt.GetInstanceRootKey(domainProject)+"/", nil)
err = nf.GetNotifyService().AddSubscriber(watcher)
- util.Logger().Infof("start watch instance status, watcher %s %s", watcher.Subject(), watcher.Group())
+ log.Infof("start watch instance status, watcher %s %s", watcher.Subject(), watcher.Group())
return nf.HandleWatchJob(watcher, stream)
}
func (s *InstanceService) WebSocketWatch(ctx context.Context, in *pb.WatchInstanceRequest, conn *websocket.Conn) {
- util.Logger().Infof("new a web socket watch with %s", in.SelfServiceId)
+ log.Infof("new a web socket watch with %s", in.SelfServiceId)
if err := s.WatchPreOpera(ctx, in); err != nil {
nf.EstablishWebSocketError(conn, err)
return
@@ -61,7 +62,7 @@ func (s *InstanceService) WebSocketWatch(ctx context.Context, in *pb.WatchInstan
}
func (s *InstanceService) WebSocketListAndWatch(ctx context.Context, in *pb.WatchInstanceRequest, conn *websocket.Conn) {
- util.Logger().Infof("new a web socket list and watch with %s", in.SelfServiceId)
+ log.Infof("new a web socket list and watch with %s", in.SelfServiceId)
if err := s.WatchPreOpera(ctx, in); err != nil {
nf.EstablishWebSocketError(conn, err)
return
diff --git a/server/version.go b/server/version.go
index 507bef6..090d090 100644
--- a/server/version.go
+++ b/server/version.go
@@ -18,7 +18,7 @@ package server
import (
"encoding/json"
- "github.com/apache/incubator-servicecomb-service-center/pkg/util"
+ "github.com/apache/incubator-servicecomb-service-center/pkg/log"
"github.com/apache/incubator-servicecomb-service-center/server/core"
"github.com/apache/incubator-servicecomb-service-center/server/core/backend"
"github.com/apache/incubator-servicecomb-service-center/server/infra/registry"
@@ -37,7 +37,7 @@ func LoadServerVersion() error {
err = json.Unmarshal(resp.Kvs[0].Value, &core.ServerInfo)
if err != nil {
- util.Logger().Errorf(err, "load server version failed, maybe incompatible")
+ log.Errorf(err, "load server version failed, maybe incompatible")
return nil
}
return nil