diff --git a/backend/build.sh b/backend/build.sh index b4de3c2de..b78d71fd8 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) + http | db | ender) echo build http docker build -t ${DOCKER_REPO:-'local'}/$image:${git_sha1} --build-arg SERVICE_NAME=$image -f ./cmd/Dockerfile . [[ $PUSH_IMAGE -eq 1 ]] && { diff --git a/backend/services/ender/main.go b/backend/cmd/ender/main.go similarity index 69% rename from backend/services/ender/main.go rename to backend/cmd/ender/main.go index 4170a178e..b54a8dc15 100644 --- a/backend/services/ender/main.go +++ b/backend/cmd/ender/main.go @@ -2,37 +2,34 @@ package main import ( "log" + "openreplay/backend/internal/builder" + "openreplay/backend/internal/config/ender" "time" "os" "os/signal" "syscall" - "openreplay/backend/pkg/env" "openreplay/backend/pkg/intervals" logger "openreplay/backend/pkg/log" "openreplay/backend/pkg/messages" "openreplay/backend/pkg/queue" "openreplay/backend/pkg/queue/types" - "openreplay/backend/services/ender/builder" ) func main() { log.SetFlags(log.LstdFlags | log.LUTC | log.Llongfile) - GROUP_EVENTS := env.String("GROUP_ENDER") - TOPIC_TRIGGER := env.String("TOPIC_TRIGGER") + cfg := ender.New() builderMap := builder.NewBuilderMap() - - statsLogger := logger.NewQueueStats(env.Int("LOG_QUEUE_STATS_INTERVAL_SEC")) - + statsLogger := logger.NewQueueStats(cfg.LoggerTimeout) producer := queue.NewProducer() consumer := queue.NewMessageConsumer( - GROUP_EVENTS, + cfg.GroupEvents, []string{ - env.String("TOPIC_RAW_WEB"), - env.String("TOPIC_RAW_IOS"), + cfg.TopicRawWeb, + cfg.TopicRawIOS, }, func(sessionID uint64, msg messages.Message, meta *types.Meta) { statsLogger.Collect(sessionID, meta) @@ -51,17 +48,17 @@ func main() { select { case sig := <-sigchan: log.Printf("Caught signal %v: terminating\n", sig) - producer.Close(2000) - consumer.CommitBack(intervals.EVENTS_BACK_COMMIT_GAP) + producer.Close(cfg.ProducerTimeout) + consumer.Commit() consumer.Close() os.Exit(0) case <-tick: builderMap.IterateReadyMessages(time.Now().UnixMilli(), func(sessionID uint64, readyMsg messages.Message) { - producer.Produce(TOPIC_TRIGGER, sessionID, messages.Encode(readyMsg)) + producer.Produce(cfg.TopicTrigger, sessionID, messages.Encode(readyMsg)) }) // TODO: why exactly do we need Flush here and not in any other place? - producer.Flush(2000) - consumer.CommitBack(intervals.EVENTS_BACK_COMMIT_GAP) + producer.Flush(cfg.ProducerTimeout) + consumer.Commit() default: if err := consumer.ConsumeNext(); err != nil { log.Fatalf("Error on consuming: %v", err) diff --git a/backend/services/ender/builder/builder.go b/backend/internal/builder/builder.go similarity index 100% rename from backend/services/ender/builder/builder.go rename to backend/internal/builder/builder.go diff --git a/backend/services/ender/builder/builderMap.go b/backend/internal/builder/builderMap.go similarity index 100% rename from backend/services/ender/builder/builderMap.go rename to backend/internal/builder/builderMap.go diff --git a/backend/services/ender/builder/clikRageDetector.go b/backend/internal/builder/clikRageDetector.go similarity index 100% rename from backend/services/ender/builder/clikRageDetector.go rename to backend/internal/builder/clikRageDetector.go diff --git a/backend/services/ender/builder/cpuIssueFinder.go b/backend/internal/builder/cpuIssueFinder.go similarity index 100% rename from backend/services/ender/builder/cpuIssueFinder.go rename to backend/internal/builder/cpuIssueFinder.go diff --git a/backend/services/ender/builder/deadClickDetector.go b/backend/internal/builder/deadClickDetector.go similarity index 100% rename from backend/services/ender/builder/deadClickDetector.go rename to backend/internal/builder/deadClickDetector.go diff --git a/backend/services/ender/builder/domDropDetector.go b/backend/internal/builder/domDropDetector.go similarity index 100% rename from backend/services/ender/builder/domDropDetector.go rename to backend/internal/builder/domDropDetector.go diff --git a/backend/services/ender/builder/inputEventBuilder.go b/backend/internal/builder/inputEventBuilder.go similarity index 100% rename from backend/services/ender/builder/inputEventBuilder.go rename to backend/internal/builder/inputEventBuilder.go diff --git a/backend/services/ender/builder/memoryIssueFinder.go b/backend/internal/builder/memoryIssueFinder.go similarity index 100% rename from backend/services/ender/builder/memoryIssueFinder.go rename to backend/internal/builder/memoryIssueFinder.go diff --git a/backend/services/ender/builder/pageEventBuilder.go b/backend/internal/builder/pageEventBuilder.go similarity index 100% rename from backend/services/ender/builder/pageEventBuilder.go rename to backend/internal/builder/pageEventBuilder.go diff --git a/backend/services/ender/builder/performanceTrackAggrBuilder.go b/backend/internal/builder/performanceTrackAggrBuilder.go similarity index 100% rename from backend/services/ender/builder/performanceTrackAggrBuilder.go rename to backend/internal/builder/performanceTrackAggrBuilder.go diff --git a/backend/internal/config/ender/config.go b/backend/internal/config/ender/config.go new file mode 100644 index 000000000..e39fbc240 --- /dev/null +++ b/backend/internal/config/ender/config.go @@ -0,0 +1,25 @@ +package ender + +import ( + "openreplay/backend/pkg/env" +) + +type Config struct { + GroupEvents string + TopicTrigger string + LoggerTimeout int + TopicRawWeb string + TopicRawIOS string + ProducerTimeout int +} + +func New() *Config { + return &Config{ + GroupEvents: env.String("GROUP_ENDER"), + TopicTrigger: env.String("TOPIC_TRIGGER"), + LoggerTimeout: env.Int("LOG_QUEUE_STATS_INTERVAL_SEC"), + TopicRawWeb: env.String("TOPIC_RAW_WEB"), + TopicRawIOS: env.String("TOPIC_RAW_IOS"), + ProducerTimeout: 2000, + } +} diff --git a/backend/services/ender/build_hack b/backend/services/ender/build_hack new file mode 100644 index 000000000..e69de29bb