pkg/core/alias.go (45 lines of code) (raw):

/* * 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 core import ( "context" "os" "os/signal" "syscall" "time" ) import ( "github.com/google/uuid" kube_log "sigs.k8s.io/controller-runtime/pkg/log" ) import ( dubbo_log "github.com/apache/dubbo-kubernetes/pkg/log" ) var ( // TODO remove dependency on kubernetes see: https://github.com/apache/dubbo-kubernetes/issues/2798 Log = kube_log.Log NewLogger = dubbo_log.NewLogger NewLoggerTo = dubbo_log.NewLoggerTo NewLoggerWithRotation = dubbo_log.NewLoggerWithRotation SetLogger = kube_log.SetLogger Now = time.Now SetupSignalHandler = func() (context.Context, context.Context) { gracefulCtx, gracefulCancel := context.WithCancel(context.Background()) ctx, cancel := context.WithCancel(context.Background()) c := make(chan os.Signal, 3) signal.Notify(c, syscall.SIGINT, syscall.SIGTERM) go func() { logger := Log.WithName("runtime") s := <-c logger.Info("received signal, stopping instance gracefully", "signal", s.String()) gracefulCancel() s = <-c logger.Info("received second signal, stopping instance", "signal", s.String()) cancel() s = <-c logger.Info("received third signal, force exit", "signal", s.String()) os.Exit(1) }() return gracefulCtx, ctx } ) func NewUUID() string { return uuid.NewString() }