Merge branch '3663-collection-reader-performance'
[arvados.git] / sdk / python / arvados / stream.py
index cbd1ba91dbf996bb6d99399606ca6d94ddbb98dc..e13e1a6effec73125e170322d0ab0dcdcce91267 100644 (file)
@@ -1,7 +1,6 @@
 import gflags
 import httplib
 import httplib2
-import logging
 import os
 import pprint
 import sys
@@ -135,9 +134,12 @@ 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)
-            self._filepos += len(data)
+        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
 
     def readfrom(self, start, size):
@@ -205,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