@@ -105,10 +105,6 @@ def streaming_bulk(client, actions, chunk_size=500, raise_on_error=True,
105
105
106
106
for chunk in _chunk_actions (actions , chunk_size ):
107
107
108
- # raise on exception means we might need to iterate on chunk twice
109
- if not raise_on_exception :
110
- chunk = list (chunk )
111
-
112
108
bulk_actions = []
113
109
for action , data in chunk :
114
110
bulk_actions .append (action )
@@ -129,11 +125,19 @@ def streaming_bulk(client, actions, chunk_size=500, raise_on_error=True,
129
125
# if we are not propagating, mark all actions in current chunk as failed
130
126
err_message = str (e )
131
127
exc_errors = []
132
- for action , data in chunk :
133
- info = {"error" : err_message , "status" : e .status_code , "exception" : e , "data" : data }
134
- op_type , action = action .popitem ()
135
- info .update (action )
136
- exc_errors .append ({op_type : info })
128
+ bulk_data = iter (bulk_actions )
129
+ while True :
130
+ try :
131
+ # collect all the information about failed actions
132
+ action = next (bulk_data )
133
+ op_type , action = action .popitem ()
134
+ info = {"error" : err_message , "status" : e .status_code , "exception" : e }
135
+ if op_type != 'delete' :
136
+ info ['data' ] = next (bulk_data )
137
+ info .update (action )
138
+ exc_errors .append ({op_type : info })
139
+ except StopIteration :
140
+ break
137
141
138
142
# emulate standard behavior for failed actions
139
143
if raise_on_error :
0 commit comments