From 3449440de35c32d09321d6d355f6c49b1419888a Mon Sep 17 00:00:00 2001 From: Alexander Zavorotynskiy Date: Mon, 16 May 2022 14:12:37 +0200 Subject: [PATCH] feat(backend/assets): service refactoring --- backend/build.sh | 2 +- backend/{services => cmd}/assets/main.go | 29 +++++++++---------- .../assets/cacher/cacher.go | 0 .../assets/cacher/timeoutMap.go | 0 .../assets/jsexception.go | 4 +-- backend/internal/config/assets/config.go | 23 +++++++++++++++ backend/services/assets/build_hack | 0 7 files changed, 40 insertions(+), 18 deletions(-) rename backend/{services => cmd}/assets/main.go (77%) rename backend/{services => internal}/assets/cacher/cacher.go (100%) rename backend/{services => internal}/assets/cacher/timeoutMap.go (100%) rename backend/{services => internal}/assets/jsexception.go (87%) create mode 100644 backend/internal/config/assets/config.go create mode 100644 backend/services/assets/build_hack diff --git a/backend/build.sh b/backend/build.sh index 97604dd0c..58776c93b 100755 --- a/backend/build.sh +++ b/backend/build.sh @@ -23,7 +23,7 @@ function build_service() { image="$1" echo "BUILDING $image" case "$image" in - http | db | sink | ender | heuristics | storage) + http | db | sink | ender | heuristics | storage | assets) echo build http docker build -t ${DOCKER_REPO:-'local'}/$image:${git_sha1} --platform linux/amd64 --build-arg SERVICE_NAME=$image -f ./cmd/Dockerfile . [[ $PUSH_IMAGE -eq 1 ]] && { diff --git a/backend/services/assets/main.go b/backend/cmd/assets/main.go similarity index 77% rename from backend/services/assets/main.go rename to backend/cmd/assets/main.go index 259918395..3d417d916 100644 --- a/backend/services/assets/main.go +++ b/backend/cmd/assets/main.go @@ -2,35 +2,34 @@ package main import ( "log" - "time" - "os" "os/signal" "syscall" + "time" - "openreplay/backend/pkg/env" + "openreplay/backend/internal/assets" + "openreplay/backend/internal/assets/cacher" + config "openreplay/backend/internal/config/assets" "openreplay/backend/pkg/messages" "openreplay/backend/pkg/queue" "openreplay/backend/pkg/queue/types" - "openreplay/backend/services/assets/cacher" ) func main() { log.SetFlags(log.LstdFlags | log.LUTC | log.Llongfile) - GROUP_CACHE := env.String("GROUP_CACHE") - TOPIC_CACHE := env.String("TOPIC_CACHE") + cfg := config.New() cacher := cacher.NewCacher( - env.String("AWS_REGION"), - env.String("S3_BUCKET_ASSETS"), - env.String("ASSETS_ORIGIN"), - env.Int("ASSETS_SIZE_LIMIT"), + cfg.AWSRegion, + cfg.S3BucketAssets, + cfg.AssetsOrigin, + cfg.AssetsSizeLimit, ) consumer := queue.NewMessageConsumer( - GROUP_CACHE, - []string{TOPIC_CACHE}, + cfg.GroupCache, + []string{cfg.TopicCache}, func(sessionID uint64, message messages.Message, e *types.Meta) { switch msg := message.(type) { case *messages.AssetCache: @@ -39,7 +38,7 @@ func main() { if msg.Source != "js_exception" { return } - sourceList, err := extractJSExceptionSources(&msg.Payload) + sourceList, err := assets.ExtractJSExceptionSources(&msg.Payload) if err != nil { log.Printf("Error on source extraction: %v", err) return @@ -52,12 +51,12 @@ func main() { true, ) - tick := time.Tick(20 * time.Minute) + log.Printf("Cacher service started\n") sigchan := make(chan os.Signal, 1) signal.Notify(sigchan, syscall.SIGINT, syscall.SIGTERM) - log.Printf("Cacher service started\n") + tick := time.Tick(20 * time.Minute) for { select { case sig := <-sigchan: diff --git a/backend/services/assets/cacher/cacher.go b/backend/internal/assets/cacher/cacher.go similarity index 100% rename from backend/services/assets/cacher/cacher.go rename to backend/internal/assets/cacher/cacher.go diff --git a/backend/services/assets/cacher/timeoutMap.go b/backend/internal/assets/cacher/timeoutMap.go similarity index 100% rename from backend/services/assets/cacher/timeoutMap.go rename to backend/internal/assets/cacher/timeoutMap.go diff --git a/backend/services/assets/jsexception.go b/backend/internal/assets/jsexception.go similarity index 87% rename from backend/services/assets/jsexception.go rename to backend/internal/assets/jsexception.go index c0b26e0db..180f24df1 100644 --- a/backend/services/assets/jsexception.go +++ b/backend/internal/assets/jsexception.go @@ -1,4 +1,4 @@ -package main +package assets import ( "encoding/json" @@ -9,7 +9,7 @@ type frame struct { FileName string `json:"fileName"` } -func extractJSExceptionSources(payload *string) ([]string, error) { +func ExtractJSExceptionSources(payload *string) ([]string, error) { var frameList []frame err := json.Unmarshal([]byte(*payload), &frameList) if err != nil { diff --git a/backend/internal/config/assets/config.go b/backend/internal/config/assets/config.go new file mode 100644 index 000000000..279a8283c --- /dev/null +++ b/backend/internal/config/assets/config.go @@ -0,0 +1,23 @@ +package assets + +import "openreplay/backend/pkg/env" + +type Config struct { + GroupCache string + TopicCache string + AWSRegion string + S3BucketAssets string + AssetsOrigin string + AssetsSizeLimit int +} + +func New() *Config { + return &Config{ + GroupCache: env.String("GROUP_CACHE"), + TopicCache: env.String("TOPIC_CACHE"), + AWSRegion: env.String("AWS_REGION"), + S3BucketAssets: env.String("S3_BUCKET_ASSETS"), + AssetsOrigin: env.String("ASSETS_ORIGIN"), + AssetsSizeLimit: env.Int("ASSETS_SIZE_LIMIT"), + } +} diff --git a/backend/services/assets/build_hack b/backend/services/assets/build_hack new file mode 100644 index 000000000..e69de29bb