kopia lustrzana https://github.com/gaul/s3proxy
Issue BlobStore calls before opening Writer
This allows Jetty to propagate errors from the calls correctly.
Follow on to dba252bb99
.
pull/78/head
rodzic
96a6d188a3
commit
cc5f1e259f
|
@ -715,6 +715,8 @@ final class S3ProxyHandler extends AbstractHandler {
|
||||||
|
|
||||||
private void handleContainerList(HttpServletResponse response,
|
private void handleContainerList(HttpServletResponse response,
|
||||||
BlobStore blobStore) throws IOException {
|
BlobStore blobStore) throws IOException {
|
||||||
|
PageSet<? extends StorageMetadata> buckets = blobStore.list();
|
||||||
|
|
||||||
try (Writer writer = response.getWriter()) {
|
try (Writer writer = response.getWriter()) {
|
||||||
XMLStreamWriter xml = xmlOutputFactory.createXMLStreamWriter(
|
XMLStreamWriter xml = xmlOutputFactory.createXMLStreamWriter(
|
||||||
writer);
|
writer);
|
||||||
|
@ -725,7 +727,7 @@ final class S3ProxyHandler extends AbstractHandler {
|
||||||
writeOwnerStanza(xml);
|
writeOwnerStanza(xml);
|
||||||
|
|
||||||
xml.writeStartElement("Buckets");
|
xml.writeStartElement("Buckets");
|
||||||
for (StorageMetadata metadata : blobStore.list()) {
|
for (StorageMetadata metadata : buckets) {
|
||||||
xml.writeStartElement("Bucket");
|
xml.writeStartElement("Bucket");
|
||||||
|
|
||||||
writeSimpleElement(xml, "Name", metadata.getName());
|
writeSimpleElement(xml, "Name", metadata.getName());
|
||||||
|
@ -1011,12 +1013,15 @@ final class S3ProxyHandler extends AbstractHandler {
|
||||||
private void handleMultiBlobRemove(HttpServletRequest request,
|
private void handleMultiBlobRemove(HttpServletRequest request,
|
||||||
HttpServletResponse response, BlobStore blobStore,
|
HttpServletResponse response, BlobStore blobStore,
|
||||||
String containerName) throws IOException {
|
String containerName) throws IOException {
|
||||||
try (InputStream is = request.getInputStream();
|
Collection<String> blobNames;
|
||||||
Writer writer = new OutputStreamWriter(response.getOutputStream(),
|
try (InputStream is = request.getInputStream()) {
|
||||||
StandardCharsets.UTF_8)) {
|
blobNames = parseSimpleXmlElements(is, "Key");
|
||||||
Collection<String> blobNames = parseSimpleXmlElements(is, "Key");
|
}
|
||||||
blobStore.removeBlobs(containerName, blobNames);
|
|
||||||
|
|
||||||
|
blobStore.removeBlobs(containerName, blobNames);
|
||||||
|
|
||||||
|
try (Writer writer = new OutputStreamWriter(response.getOutputStream(),
|
||||||
|
StandardCharsets.UTF_8)) {
|
||||||
XMLStreamWriter xml = xmlOutputFactory.createXMLStreamWriter(
|
XMLStreamWriter xml = xmlOutputFactory.createXMLStreamWriter(
|
||||||
writer);
|
writer);
|
||||||
xml.writeStartDocument();
|
xml.writeStartDocument();
|
||||||
|
@ -1434,6 +1439,12 @@ final class S3ProxyHandler extends AbstractHandler {
|
||||||
HttpServletResponse response, BlobStore blobStore,
|
HttpServletResponse response, BlobStore blobStore,
|
||||||
String containerName, String blobName, String uploadId)
|
String containerName, String blobName, String uploadId)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
|
// TODO: how to reconstruct original mpu?
|
||||||
|
MultipartUpload mpu = MultipartUpload.create(containerName,
|
||||||
|
blobName, uploadId, createFakeBlobMetadata(blobStore));
|
||||||
|
|
||||||
|
List<MultipartPart> parts = blobStore.listMultipartUpload(mpu);
|
||||||
|
|
||||||
try (Writer writer = response.getWriter()) {
|
try (Writer writer = response.getWriter()) {
|
||||||
XMLStreamWriter xml = xmlOutputFactory.createXMLStreamWriter(
|
XMLStreamWriter xml = xmlOutputFactory.createXMLStreamWriter(
|
||||||
writer);
|
writer);
|
||||||
|
@ -1466,11 +1477,6 @@ final class S3ProxyHandler extends AbstractHandler {
|
||||||
writeSimpleElement(xml, "IsTruncated", "true");
|
writeSimpleElement(xml, "IsTruncated", "true");
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// TODO: how to reconstruct original mpu?
|
|
||||||
MultipartUpload mpu = MultipartUpload.create(containerName,
|
|
||||||
blobName, uploadId, createFakeBlobMetadata(blobStore));
|
|
||||||
|
|
||||||
List<MultipartPart> parts = blobStore.listMultipartUpload(mpu);
|
|
||||||
for (MultipartPart part : parts) {
|
for (MultipartPart part : parts) {
|
||||||
xml.writeStartElement("Part");
|
xml.writeStartElement("Part");
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue