@@ -33,19 +33,33 @@ func (w *Workers) Write(ctx context.Context, wg *sync.WaitGroup, rl *rate.Limite
3333 }
3434}
3535
36- func (w * Workers ) write (ctx context.Context , gen * generator.Generator ) error {
37- row , err := gen .Generate ()
38- if err != nil {
39- log .Printf ("generate error: %v" , err )
36+ func (w * Workers ) write (ctx context.Context , gen * generator.Generator ) (finalErr error ) {
37+ m := w .m .Start (metrics .OperationTypeWrite )
38+ var attempts int
39+ if w .s != nil {
40+ row , err := gen .Generate ()
41+ if err != nil {
42+ log .Printf ("generate error: %v" , err )
4043
41- return err
42- }
44+ return err
45+ }
4346
44- m := w .m .Start (metrics .OperationTypeWrite )
47+ attempts , finalErr = w .s .Write (ctx , row )
48+ } else {
49+ rows := make ([]generator.Row , 0 , w .cfg .BatchSize )
50+ for range w .cfg .BatchSize {
51+ row , err := gen .Generate ()
52+ if err != nil {
53+ log .Printf ("generate error: %v" , err )
4554
46- attempts , err := w .s .Write (ctx , row )
55+ return err
56+ }
57+ rows = append (rows , row )
58+ }
4759
48- m .Finish (err , attempts )
60+ attempts , finalErr = w .sb .WriteBatch (ctx , rows )
61+ }
62+ m .Finish (finalErr , attempts )
4963
50- return err
64+ return finalErr
5165}
0 commit comments