kopia lustrzana https://github.com/gaul/s3proxy
Support list multipart upload parts with Azure
Map the Azure subparts back into S3 parts.pull/124/head
rodzic
bc68e2cb2e
commit
1ae596e870
|
@ -1816,7 +1816,25 @@ final class S3ProxyHandler extends AbstractHandler {
|
||||||
blobName, uploadId, createFakeBlobMetadata(blobStore),
|
blobName, uploadId, createFakeBlobMetadata(blobStore),
|
||||||
new PutOptions());
|
new PutOptions());
|
||||||
|
|
||||||
List<MultipartPart> parts = blobStore.listMultipartUpload(mpu);
|
List<MultipartPart> parts;
|
||||||
|
if (getBlobStoreType(blobStore).equals("azureblob")) {
|
||||||
|
// map Azure subparts back into S3 parts
|
||||||
|
SortedMap<Integer, Long> map = new TreeMap<>();
|
||||||
|
for (MultipartPart part : blobStore.listMultipartUpload(mpu)) {
|
||||||
|
int virtualPartNumber = part.partNumber() / 10_000;
|
||||||
|
Long size = map.get(virtualPartNumber);
|
||||||
|
map.put(virtualPartNumber,
|
||||||
|
(size == null ? 0L : (long) size) + part.partSize());
|
||||||
|
}
|
||||||
|
parts = new ArrayList<>();
|
||||||
|
for (Map.Entry<Integer, Long> entry : map.entrySet()) {
|
||||||
|
String eTag = ""; // TODO: bogus value
|
||||||
|
parts.add(MultipartPart.create(entry.getKey(),
|
||||||
|
entry.getValue(), eTag));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
parts = blobStore.listMultipartUpload(mpu);
|
||||||
|
}
|
||||||
|
|
||||||
String encodingType = request.getParameter("encoding-type");
|
String encodingType = request.getParameter("encoding-type");
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue