mirror of
https://github.com/elyby/chrly.git
synced 2024-12-22 21:19:55 +05:30
Added --cpuprofile flag for the dev Docker images
This commit is contained in:
parent
4c21fc5c90
commit
5dbe6af1d0
@ -48,9 +48,12 @@ jobs:
|
|||||||
- docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"
|
- docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"
|
||||||
- export DOCKER_TAG="${TRAVIS_TAG:-dev}"
|
- export DOCKER_TAG="${TRAVIS_TAG:-dev}"
|
||||||
- export APP_VERSION="${TRAVIS_TAG:-dev-${TRAVIS_COMMIT:0:7}}"
|
- export APP_VERSION="${TRAVIS_TAG:-dev-${TRAVIS_COMMIT:0:7}}"
|
||||||
|
- export BUILD_TAGS=""
|
||||||
|
- if [ "$DOCKER_TAG" == "dev" ]; then export BUILD_TAGS="$BUILD_TAGS --tags profiling"; fi
|
||||||
- >
|
- >
|
||||||
env CGO_ENABLED=0 GOOS=linux GOARCH=amd64
|
env CGO_ENABLED=0 GOOS=linux GOARCH=amd64
|
||||||
go build
|
go build
|
||||||
|
$BUILD_TAGS
|
||||||
-o release/chrly
|
-o release/chrly
|
||||||
-ldflags "-extldflags '-static' -X github.com/elyby/chrly/version.version=$APP_VERSION -X github.com/elyby/chrly/version.commit=$TRAVIS_COMMIT"
|
-ldflags "-extldflags '-static' -X github.com/elyby/chrly/version.version=$APP_VERSION -X github.com/elyby/chrly/version.commit=$TRAVIS_COMMIT"
|
||||||
main.go
|
main.go
|
||||||
|
@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
- New configuration params: `MOJANG_API_BASE_URL` and `MOJANG_SESSION_SERVER_BASE_URL`, that allow you to spoof
|
- New configuration params: `MOJANG_API_BASE_URL` and `MOJANG_SESSION_SERVER_BASE_URL`, that allow you to spoof
|
||||||
Mojang API base addresses.
|
Mojang API base addresses.
|
||||||
- New health checker, that ensures that response for textures provider from Mojang's API is valid.
|
- New health checker, that ensures that response for textures provider from Mojang's API is valid.
|
||||||
|
- `dev` Docker images now have the `--cpuprofile` flag, which allows you to run the program with CPU profiling.
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
- Handle the case when there is no textures property in Mojang's response.
|
- Handle the case when there is no textures property in Mojang's response.
|
||||||
|
55
cmd/root_profiling.go
Normal file
55
cmd/root_profiling.go
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
// +build profiling
|
||||||
|
|
||||||
|
package cmd
|
||||||
|
|
||||||
|
import (
|
||||||
|
"log"
|
||||||
|
"os"
|
||||||
|
"runtime/pprof"
|
||||||
|
|
||||||
|
"github.com/spf13/cobra"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
var profilePath string
|
||||||
|
RootCmd.PersistentFlags().StringVar(&profilePath, "cpuprofile", "", "enables pprof profiling and sets its output path")
|
||||||
|
|
||||||
|
pprofEnabled := false
|
||||||
|
originalPersistentPreRunE := RootCmd.PersistentPreRunE
|
||||||
|
RootCmd.PersistentPreRunE = func(cmd *cobra.Command, args []string) error {
|
||||||
|
if profilePath == "" {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
f, err := os.Create(profilePath)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Println("enabling profiling")
|
||||||
|
err = pprof.StartCPUProfile(f)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
pprofEnabled = true
|
||||||
|
|
||||||
|
if originalPersistentPreRunE != nil {
|
||||||
|
return originalPersistentPreRunE(cmd, args)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
originalPersistentPostRun := RootCmd.PersistentPreRun
|
||||||
|
RootCmd.PersistentPostRun = func(cmd *cobra.Command, args []string) {
|
||||||
|
if pprofEnabled {
|
||||||
|
log.Println("shutting down profiling")
|
||||||
|
pprof.StopCPUProfile()
|
||||||
|
}
|
||||||
|
|
||||||
|
if originalPersistentPostRun != nil {
|
||||||
|
originalPersistentPostRun(cmd, args)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -28,9 +28,8 @@ func StartServer(server *http.Server, logger slf.Logger) {
|
|||||||
logger.Info("Starting the server, HTTP on: :addr", wd.StringParam("addr", server.Addr))
|
logger.Info("Starting the server, HTTP on: :addr", wd.StringParam("addr", server.Addr))
|
||||||
if err := server.ListenAndServe(); err != nil && err != http.ErrServerClosed {
|
if err := server.ListenAndServe(); err != nil && err != http.ErrServerClosed {
|
||||||
logger.Emergency("Error in main(): :err", wd.ErrParam(err))
|
logger.Emergency("Error in main(): :err", wd.ErrParam(err))
|
||||||
}
|
|
||||||
|
|
||||||
close(done)
|
close(done)
|
||||||
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
|
Loading…
Reference in New Issue
Block a user