Merge branch '3663-collection-reader-performance'
[arvados.git] / sdk / python / arvados / stream.py
index 7a29100a398cc1e6b06b0f452845079d23c34a2c..e13e1a6effec73125e170322d0ab0dcdcce91267 100644 (file)
@@ -134,8 +134,11 @@ class StreamFileReader(object):
             return ''
 
         data = ''
-        for locator, blocksize, segmentoffset, segmentsize in locators_and_ranges(self.segments, self._filepos, size):
-            data += self._stream.readfrom(locator+segmentoffset, segmentsize)
+        available_chunks = locators_and_ranges(self.segments, self._filepos, size)
+        if available_chunks:
+            locator, blocksize, segmentoffset, segmentsize = available_chunks[0]
+            data = self._stream.readfrom(locator+segmentoffset, segmentsize)
+
         self._filepos += len(data)
         return data
 
@@ -204,10 +207,9 @@ class StreamReader(object):
         self._data_locators = []
         self._files = collections.OrderedDict()
 
-        if keep != None:
-            self._keep = keep
-        else:
-            self._keep = Keep.global_client_object()
+        if keep is None:
+            keep = KeepClient()
+        self._keep = keep
 
         streamoffset = 0L