in cmd/pinpi/main.go [130:169]
func main() {
l, _ := zap.NewDevelopment()
defer l.Sync()
zap.ReplaceGlobals(l)
logger = l.Sugar()
start := flag.Int64("s", 0, "Start offset")
flag.Parse()
ctx, cancel := context.WithCancel(context.Background())
client, err := gcs.NewClient(ctx)
if err != nil {
logger.Errorf("couldn't create a GCS client: %v", err)
os.Exit(1)
}
defer client.Close()
taskChan := make(chan task, 256)
for i := 0; i < WORKERS; i++ {
wg.Add(1)
ctx = context.WithValue(ctx, workerContextKey("workerId"), i)
go worker(ctx, taskChan, client)
}
for i := *start; i < index.Decimal.TotalDigits(); i += CHUNK_SIZE {
task := task{
start: i,
n: CHUNK_SIZE,
cancel: cancel,
}
taskChan <- task
if ctx.Err() != nil {
logger.Errorf("context error: %v", ctx.Err())
break
}
}
close(taskChan)
wg.Wait()
}