Author: brandonwilliams
Date: Mon Sep 20 18:38:07 2010
New Revision: 999044

URL: http://svn.apache.org/viewvc?rev=999044&view=rev
Log:
Configurable keys per call for multiget.  Patch by brandonwilliams, reviewed by 
Nate McCall for CASSANDRA-1520

Modified:
    cassandra/trunk/contrib/py_stress/stress.py

Modified: cassandra/trunk/contrib/py_stress/stress.py
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/contrib/py_stress/stress.py?rev=999044&r1=999043&r2=999044&view=diff
==============================================================================
--- cassandra/trunk/contrib/py_stress/stress.py (original)
+++ cassandra/trunk/contrib/py_stress/stress.py Mon Sep 20 18:38:07 2010
@@ -90,9 +90,9 @@ parser.add_option('-k', '--keep-going', 
                   help="ignore errors inserting or reading")
 parser.add_option('-i', '--progress-interval', type="int", default=10,
                   dest="interval", help="progress report interval (seconds)")
-parser.add_option('-g', '--get-range-slice-count', type="int", default=1000,
+parser.add_option('-g', '--keys-per-call', type="int", default=1000,
                   dest="rangecount",
-                  help="amount of keys to get_range_slices per call")
+                  help="amount of keys to get_range_slices or multiget per 
call")
 parser.add_option('-l', '--replication-factor', type="int", default=1,
                   dest="replication",
                   help="replication factor to use when creating needed column 
families")
@@ -312,31 +312,32 @@ class RangeSlicer(Operation):
 class MultiGetter(Operation):
     def run(self):
         p = SlicePredicate(slice_range=SliceRange('', '', False, 
columns_per_key))
+        offset = self.idx * keys_per_thread
+        count = (((self.idx+1) * keys_per_thread) - offset) / 
options.rangecount
         if 'super' == options.cftype:
-            keys = [key_generator() for i in xrange(keys_per_thread)]
-            for j in xrange(supers_per_key):
-                parent = ColumnParent('Super1', 'S' + str(j))
-                start = time.time()
-                try:
-                    r = self.cclient.multiget_slice(keys, parent, p, 
consistency)
-                    if not r: raise RuntimeError("Keys %s not found" % keys)
-                except KeyboardInterrupt:
-                    raise
-                except Exception, e:
-                    if options.ignore:
-                        print e
-                    else:
+            for x in xrange(count):
+                keys = [key_generator() for i in xrange(offset, offset + 
options.rangecount)]
+                for j in xrange(supers_per_key):
+                    parent = ColumnParent('Super1', 'S' + str(j))
+                    start = time.time()
+                    try:
+                        r = self.cclient.multiget_slice(keys, parent, p, 
consistency)
+                        if not r: raise RuntimeError("Keys %s not found" % 
keys)
+                    except KeyboardInterrupt:
                         raise
-                self.latencies[self.idx] += time.time() - start
-                self.opcounts[self.idx] += 1
-                self.keycounts[self.idx] += len(keys)
+                    except Exception, e:
+                        if options.ignore:
+                            print e
+                        else:
+                            raise
+                    self.latencies[self.idx] += time.time() - start
+                    self.opcounts[self.idx] += 1
+                    self.keycounts[self.idx] += len(keys)
+                    offset += options.rangecount
         else:
-            parent = ColumnParent('Standard1')            
-            for zslab in xrange(n_threads):
-                kpt = (keys_per_thread/n_threads)
-                keys = [key_generator() for i in 
xrange(kpt*zslab,kpt*(zslab+1))]
-
-
+            parent = ColumnParent('Standard1')
+            for x in xrange(count):
+                keys = [key_generator() for i in xrange(offset, offset + 
options.rangecount)]
                 start = time.time()
                 try:
                     r = self.cclient.multiget_slice(keys, parent, p, 
consistency)
@@ -348,10 +349,10 @@ class MultiGetter(Operation):
                         print e
                     else:
                         raise
-                    
                 self.latencies[self.idx] += time.time() - start
                 self.opcounts[self.idx] += 1
                 self.keycounts[self.idx] += len(keys)
+                offset += options.rangecount
 
 
 class OperationFactory:


Reply via email to