func runExample(client *as.Client) { log.Println("Scan series: namespace=", *shared.Namespace, " set=", *shared.Set) // Use low scan priority. This will take more time, but it will reduce // the load on the server. policy := as.NewScanPolicy() policy.MaxRetries = 1 policy.Priority = as.LOW nodeList := client.GetNodes() begin := time.Now() for _, node := range nodeList { log.Println("Scan node ", node.GetName()) recordset, err := client.ScanNode(policy, node, *shared.Namespace, *shared.Set) shared.PanicOnError(err) L: for { select { case rec := <-recordset.Records: if rec == nil { break L } metrics, exists := setMap[rec.Key.SetName()] if !exists { metrics = Metrics{} } metrics.count++ metrics.total++ setMap[rec.Key.SetName()] = metrics case err := <-recordset.Errors: // if there was an error, stop shared.PanicOnError(err) } } for k, v := range setMap { log.Println("Node ", node, " set ", k, " count: ", v.count) v.count = 0 } } end := time.Now() seconds := float64(end.Sub(begin)) / float64(time.Second) log.Println("Elapsed time: ", seconds, " seconds") total := 0 for k, v := range setMap { log.Println("Total set ", k, " count: ", v.total) total += v.total } log.Println("Grand total: ", total) performance := shared.Round(float64(total)/seconds, 0.5, 0) log.Println("Records/second: ", performance) }