@@ -87,24 +87,21 @@ def stream_buckets(self, bucket_type=None, timeout=None):
8787
8888 """
8989 _validate_timeout (timeout )
90+
9091 if bucket_type :
9192 bucketfn = self ._bucket_type_bucket_builder
9293 else :
9394 bucketfn = self ._default_type_bucket_builder
9495
95- resource = self ._acquire ()
96- transport = resource .object
97- stream = transport .stream_buckets (bucket_type = bucket_type ,
98- timeout = timeout )
99- stream .attach (resource )
100- try :
101- for bucket_list in stream :
102- bucket_list = [bucketfn (bytes_to_str (name ), bucket_type )
103- for name in bucket_list ]
104- if len (bucket_list ) > 0 :
105- yield bucket_list
106- finally :
107- stream .close ()
96+ def make_op (transport ):
97+ return transport .stream_buckets (
98+ bucket_type = bucket_type , timeout = timeout )
99+
100+ for bucket_list in self ._stream_with_retry (make_op ):
101+ bucket_list = [bucketfn (bytes_to_str (name ), bucket_type )
102+ for name in bucket_list ]
103+ if len (bucket_list ) > 0 :
104+ yield bucket_list
108105
109106 @retryable
110107 def ping (self , transport ):
@@ -266,6 +263,8 @@ def stream_index(self, bucket, index, startkey, endkey=None,
266263 :rtype: :class:`~riak.client.index_page.IndexPage`
267264
268265 """
266+ # TODO FUTURE: implement "retry on connection closed"
267+ # as in stream_mapred
269268 _validate_timeout (timeout , infinity_ok = True )
270269
271270 page = IndexPage (self , bucket , index , startkey , endkey ,
@@ -338,6 +337,8 @@ def paginate_stream_index(self, bucket, index, startkey, endkey=None,
338337 :class:`~riak.client.index_page.IndexPage`
339338
340339 """
340+ # TODO FUTURE: implement "retry on connection closed"
341+ # as in stream_mapred
341342 page = self .stream_index (bucket , index , startkey ,
342343 endkey = endkey ,
343344 max_results = max_results ,
@@ -489,19 +490,16 @@ def stream_keys(self, bucket, timeout=None):
489490 :rtype: iterator
490491 """
491492 _validate_timeout (timeout )
492- resource = self ._acquire ()
493- transport = resource .object
494- stream = transport .stream_keys (bucket , timeout = timeout )
495- stream .attach (resource )
496- try :
497- for keylist in stream :
498- if len (keylist ) > 0 :
499- if six .PY2 :
500- yield keylist
501- else :
502- yield [bytes_to_str (item ) for item in keylist ]
503- finally :
504- stream .close ()
493+
494+ def make_op (transport ):
495+ return transport .stream_keys (bucket , timeout = timeout )
496+
497+ for keylist in self ._stream_with_retry (make_op ):
498+ if len (keylist ) > 0 :
499+ if six .PY2 :
500+ yield keylist
501+ else :
502+ yield [bytes_to_str (item ) for item in keylist ]
505503
506504 @retryable
507505 def put (self , transport , robj , w = None , dw = None , pw = None , return_body = None ,
@@ -799,15 +797,12 @@ def stream_mapred(self, inputs, query, timeout):
799797 :rtype: iterator
800798 """
801799 _validate_timeout (timeout )
802- resource = self ._acquire ()
803- transport = resource .object
804- stream = transport .stream_mapred (inputs , query , timeout )
805- stream .attach (resource )
806- try :
807- for phase , data in stream :
808- yield phase , data
809- finally :
810- stream .close ()
800+
801+ def make_op (transport ):
802+ return transport .stream_mapred (inputs , query , timeout )
803+
804+ for phase , data in self ._stream_with_retry (make_op ):
805+ yield phase , data
811806
812807 @retryable
813808 def create_search_index (self , transport , index , schema = None , n_val = None ,
0 commit comments