Skip to content

Commit

Permalink
added error support in worker - app exists on error;
Browse files Browse the repository at this point in the history
  • Loading branch information
jacekk committed Aug 17, 2019
1 parent 0f1161f commit 2af4597
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 16 deletions.
6 changes: 3 additions & 3 deletions cmd/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,25 +40,25 @@ func runApp() {
Aliases: []string{"w", "work"},
Usage: "Runs worker",
Action: func(ctx *cli.Context) error {
return worker.Init()
return worker.InitWorker()
},
},
{
Name: "all",
Usage: "Runs worker and server",
Action: func(ctx *cli.Context) error {
var wg sync.WaitGroup
wg.Add(2)

go func() {
defer wg.Done()
log.Fatal(routing.InitRouter())
}()
go func() {
defer wg.Done()
log.Fatal(worker.Init())
log.Fatal(worker.InitWorker())
}()

wg.Add(2)
wg.Wait()

return nil
Expand Down
37 changes: 24 additions & 13 deletions pkg/worker/main.go
Original file line number Diff line number Diff line change
@@ -1,32 +1,43 @@
package worker

import (
"bufio"
"fmt"
"math/rand"
"os"
"time"
)

const prefix = "[WORKER]"
const loggerPrefix = "[WORKER]"

func info(format string, args ...interface{}) {
prefixedFormat := fmt.Sprintf("%s %s \n", prefix, format)
fmt.Fprintf(os.Stdout, prefixedFormat, args...)
var random *rand.Rand

func init() {
s1 := rand.NewSource(time.Now().UnixNano())
random = rand.New(s1)
}

func info(baseFormat string, args ...interface{}) {
format := fmt.Sprintf("%s %s \n", loggerPrefix, baseFormat)
fmt.Fprintf(os.Stdout, format, args...)
}

// Init -
func Init() error {
// InitWorker -
func InitWorker() error {
info("Starting ...")
workerErr := make(chan error)
defer close(workerErr)

go func() {
for {
time.Sleep(time.Second * 10)
info("tick")
time.Sleep(time.Second * 5)
randomNumber := random.Intn(100)
if randomNumber > 90 {
workerErr <- fmt.Errorf("random number is '%d' so above 90", randomNumber)
continue
}
info("tick %d", randomNumber)
}
}()

info("Press 'Enter' to exit ...")
bufio.NewReader(os.Stdin).ReadBytes('\n')

return nil
return <-workerErr
}

0 comments on commit 2af4597

Please sign in to comment.