Ticket #7682: upload_cleanup.patch
File upload_cleanup.patch, 4.7 KB (added by joel-wright, on Dec 15, 2013 at 11:55:31 PM) |
---|
Upload Cleanup Patch |
-
source/ch/cyberduck/core/Preferences.java
615 615 defaults.put("openstack.container.size.preload", String.valueOf(true)); 616 616 617 617 defaults.put("openstack.upload.md5", String.valueOf(true)); 618 defaults.put("openstack.upload.cleanup", String.valueOf(true)); 618 619 619 620 defaults.put("openstack.upload.largeobject", String.valueOf(true)); 620 621 defaults.put("openstack.upload.largeobject.concurrency", String.valueOf(5)); -
source/ch/cyberduck/core/openstack/SwiftLargeObjectUploadFeature.java
20 20 21 21 import ch.cyberduck.core.DefaultIOExceptionMappingService; 22 22 import ch.cyberduck.core.DisabledListProgressListener; 23 import ch.cyberduck.core.DisabledLoginController; 23 24 import ch.cyberduck.core.Local; 24 25 import ch.cyberduck.core.Path; 25 26 import ch.cyberduck.core.PathContainerService; … … 162 163 // Create and upload the large object manifest. It is best to upload all the segments first and 163 164 // then create or update the manifest. 164 165 try { 166 // Cleanup if necessary 167 final List<Path> segmentsToDelete = new ArrayList<Path>(); 168 boolean deleteOrphanedSegments = Preferences.instance().getBoolean("openstack.upload.cleanup"); 169 if (deleteOrphanedSegments) { 170 segmentsToDelete.addAll(segmentService.list(file)); 171 } 165 172 // Static Large Object. 166 173 final String manifest = segmentService.manifest(containerService.getContainer(file).getName(), completed); 167 174 if(log.isDebugEnabled()) { … … 174 181 status.getMime(), 175 182 containerService.getKey(file), manifest, Collections.<String, String>emptyMap()); 176 183 stored.setMd5sum(checksum); 184 185 if (deleteOrphanedSegments) { 186 segmentsToDelete.removeAll(segmentService.list(file)); 187 if (!segmentsToDelete.isEmpty()) { 188 // Clean up any old segments 189 new SwiftMultipleDeleteFeature(session).delete(segmentsToDelete, new DisabledLoginController()); 190 } 191 } 192 177 193 return stored; 178 194 } 179 195 catch(GenericException e) { -
source/ch/cyberduck/core/openstack/SwiftWriteFeature.java
21 21 import ch.cyberduck.core.Cache; 22 22 import ch.cyberduck.core.DefaultIOExceptionMappingService; 23 23 import ch.cyberduck.core.DisabledListProgressListener; 24 import ch.cyberduck.core.DisabledLoginController; 24 25 import ch.cyberduck.core.Path; 25 26 import ch.cyberduck.core.PathContainerService; 26 27 import ch.cyberduck.core.Preferences; … … 39 40 import java.io.IOException; 40 41 import java.util.HashMap; 41 42 import java.util.List; 43 import java.util.ArrayList; 42 44 43 45 import ch.iterate.openstack.swift.exception.GenericException; 44 46 import ch.iterate.openstack.swift.model.StorageObject; … … 110 112 @Override 111 113 public StorageObject call(final AbstractHttpEntity entity) throws BackgroundException { 112 114 try { 115 final List<Path> segments = new ArrayList<Path>(); 116 if (Preferences.instance().getBoolean("openstack.upload.cleanup")) { 117 segments.addAll(segmentService.list(file)); 118 } 113 119 final String checksum = session.getClient().storeObject(new SwiftRegionService(session).lookup(containerService.getContainer(file)), 114 120 containerService.getContainer(file).getName(), containerService.getKey(file), 115 121 entity, metadata, null); 116 122 final StorageObject stored = new StorageObject(containerService.getKey(file)); 117 123 stored.setMd5sum(checksum); 118 124 stored.setSize(status.getLength()); 125 if (!segments.isEmpty()) { 126 // Clean up any old segments 127 new SwiftMultipleDeleteFeature(session).delete(segments, new DisabledLoginController()); 128 } 119 129 return stored; 120 130 } 121 131 catch(GenericException e) {
Download in other formats:

Powered by Trac 1.0.4
By Edgewall Software.
Visit the Trac open source project at
http://trac.edgewall.org/