@@ -431,30 +431,35 @@ 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 = []
436
437
# finalize rcopy: extract tar data
437
438
if self .source and self .reverse :
438
439
for bnode , buf in self ._rcopy_bufs .items ():
439
- tarfileobj = self ._rcopy_tars [bnode ]
440
- if len (buf ) > 0 :
441
- self .logger .debug ("flushing node %s buf %d bytes" , bnode ,
442
- len (buf ))
443
- tarfileobj .write (buf )
444
- tarfileobj .flush ()
445
- tarfileobj .seek (0 )
446
- tmptar = tarfile .open (fileobj = tarfileobj )
447
- try :
448
- self .logger .debug ("%s extracting %d members in dest %s" ,
449
- bnode , len (tmptar .getmembers ()),
450
- self .dest )
451
- tmptar .extractall (path = self .dest )
452
- except IOError as ex :
453
- self ._on_remote_node_msgline (bnode , ex , 'stderr' , gateway )
454
- finally :
455
- tmptar .close ()
456
- self ._rcopy_bufs = {}
457
- self ._rcopy_tars = {}
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 ]
458
463
459
464
self .gwtargets [str (gateway )].remove (node )
460
465
self ._close_count += 1
0 commit comments