Browse Source

Fix: pick different rows for concurrent reqs

Rob Figueiredo 12 years ago
parent
commit
92987d3cec
1 changed files with 2 additions and 31 deletions
  1. 2 31
      revel/src/benchmark/app/controllers/app.go

+ 2 - 31
revel/src/benchmark/app/controllers/app.go

@@ -90,38 +90,8 @@ func (c App) Db(queries int) revel.Result {
 }
 
 func (c App) Update(queries int) revel.Result {
-	rowNum := rand.Intn(WorldRowCount) + 1
-	if queries <= 1 {
-		var w World
-		worldStatement.QueryRow(rowNum).Scan(&w.Id, &w.RandomNumber)
-		w.RandomNumber = uint16(rand.Intn(WorldRowCount) + 1)
-		updateStatement.Exec(w.RandomNumber, w.Id)
-		return c.RenderJson(&w)
-	}
-
-	var (
-		ww = make([]World, queries)
-		wg sync.WaitGroup
-	)
-	wg.Add(queries)
-	for i := 0; i < queries; i++ {
-		go func(i int) {
-			err := worldStatement.QueryRow(rowNum).Scan(&ww[i].Id, &ww[i].RandomNumber)
-			if err != nil {
-				revel.ERROR.Fatalf("Error scanning world row: %v", err)
-			}
-			ww[i].RandomNumber = uint16(rand.Intn(WorldRowCount) + 1)
-			updateStatement.Exec(ww[i].RandomNumber, ww[i].Id)
-			wg.Done()
-		}(i)
-	}
-	wg.Wait()
-	return c.RenderJson(ww)
-}
-
-func (c App) Update(queries int) revel.Result {
-	rowNum := rand.Intn(WorldRowCount) + 1
 	if queries <= 1 {
+		rowNum := rand.Intn(WorldRowCount) + 1
 		var w World
 		worldStatement.QueryRow(rowNum).Scan(&w.Id, &w.RandomNumber)
 		w.RandomNumber = uint16(rand.Intn(WorldRowCount) + 1)
@@ -136,6 +106,7 @@ func (c App) Update(queries int) revel.Result {
 	wg.Add(queries)
 	for i := 0; i < queries; i++ {
 		go func(i int) {
+			rowNum := rand.Intn(WorldRowCount) + 1
 			err := worldStatement.QueryRow(rowNum).Scan(&ww[i].Id, &ww[i].RandomNumber)
 			if err != nil {
 				revel.ERROR.Fatalf("Error scanning world row: %v", err)