@@ -431,35 +431,32 @@ def _on_remote_node_close(self, node, rc, gateway):
431
431
"""remote node closing with return code"""
432
432
DistantWorker ._on_node_close (self , node , rc )
433
433
self .logger .debug ("_on_remote_node_close %s %s via gw %s" , node ,
434
- self ._close_count , gateway )
434
+ self ._close_count , gateway )
435
435
436
- node_arr = []
437
436
# finalize rcopy: extract tar data
438
437
if self .source and self .reverse :
439
- for bnode , buf in self ._rcopy_bufs .items ():
440
- if bnode == node :
441
- node_arr .append (bnode )
442
- tarfileobj = self ._rcopy_tars [bnode ]
443
- if len (buf ) > 0 :
444
- self .logger .debug ("flushing node %s buf %d bytes" , bnode ,
445
- len (buf ))
446
- tarfileobj .write (buf )
447
- tarfileobj .flush ()
448
- tarfileobj .seek (0 )
449
- tmptar = tarfile .open (fileobj = tarfileobj )
450
- try :
451
- self .logger .debug ("%s extracting %d members in dest %s" ,
452
- bnode , len (tmptar .getmembers ()),
453
- self .dest )
454
- tmptar .extractall (path = self .dest )
455
- except IOError as ex :
456
- self ._on_remote_node_msgline (bnode , ex , 'stderr' , gateway )
457
- finally :
458
- tmptar .close ()
459
-
460
- for item_node in node_arr :
461
- del self ._rcopy_bufs [item_node ]
462
- del self ._rcopy_tars [item_node ]
438
+ if node in self ._rcopy_bufs :
439
+ buf = self ._rcopy_bufs [node ]
440
+ tarfileobj = self ._rcopy_tars [node ]
441
+ if len (buf ) > 0 :
442
+ self .logger .debug ("flushing node %s buf %d bytes" , node ,
443
+ len (buf ))
444
+ tarfileobj .write (buf )
445
+ tarfileobj .flush ()
446
+ tarfileobj .seek (0 )
447
+ tmptar = tarfile .open (fileobj = tarfileobj )
448
+ try :
449
+ self .logger .debug ("%s extracting %d members in dest %s" ,
450
+ node , len (tmptar .getmembers ()), self .dest )
451
+ tmptar .extractall (path = self .dest )
452
+ except IOError as ex :
453
+ self ._on_remote_node_msgline (node , ex , 'stderr' , gateway )
454
+ finally :
455
+ tmptar .close ()
456
+ del self ._rcopy_bufs [node ]
457
+ del self ._rcopy_tars [node ]
458
+ else :
459
+ self .logger .debug ("no rcopy buffer received from %s" , node )
463
460
464
461
self .gwtargets [str (gateway )].remove (node )
465
462
self ._close_count += 1
0 commit comments