>From Savyasach Reddy <savyasach.enuko...@couchbase.com>: Savyasach Reddy has uploaded this change for review. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18272 )
Change subject: [ASTERIXDB-3390][STO]: Update storage scheme for GCS ...................................................................... [ASTERIXDB-3390][STO]: Update storage scheme for GCS Change-Id: I2415275efa5b0fbb9bd93306b4fb140f4b2e59cd --- M asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/google/gcs/GCSCloudClient.java M asterixdb/asterix-app/src/test/resources/cc-cloud-storage-gcs.conf M asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/google/gcs/GCSWriter.java M asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/CloudClientProvider.java 4 files changed, 23 insertions(+), 19 deletions(-) git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/72/18272/1 diff --git a/asterixdb/asterix-app/src/test/resources/cc-cloud-storage-gcs.conf b/asterixdb/asterix-app/src/test/resources/cc-cloud-storage-gcs.conf index d0ebd24..ccb7f9d 100644 --- a/asterixdb/asterix-app/src/test/resources/cc-cloud-storage-gcs.conf +++ b/asterixdb/asterix-app/src/test/resources/cc-cloud-storage-gcs.conf @@ -64,7 +64,7 @@ cloud.deployment=true storage.buffercache.pagesize=32KB storage.partitioning=static -cloud.storage.scheme=gcs +cloud.storage.scheme=gs cloud.storage.bucket=cloud-storage-container cloud.storage.region=us-west2 cloud.storage.endpoint=http://127.0.0.1:4443 diff --git a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/CloudClientProvider.java b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/CloudClientProvider.java index 35ab467..d5f508d 100644 --- a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/CloudClientProvider.java +++ b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/CloudClientProvider.java @@ -27,7 +27,7 @@ public class CloudClientProvider { private static final String S3 = "s3"; - private static final String GCS = "gcs"; + private static final String GCS = "gs"; private CloudClientProvider() { throw new AssertionError("do not instantiate"); diff --git a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/google/gcs/GCSCloudClient.java b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/google/gcs/GCSCloudClient.java index c725ca5..0bee4e9 100644 --- a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/google/gcs/GCSCloudClient.java +++ b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/google/gcs/GCSCloudClient.java @@ -32,7 +32,9 @@ import java.util.List; import java.util.Set; +import org.apache.asterix.cloud.CloudResettableInputStream; import org.apache.asterix.cloud.IWriteBufferProvider; +import org.apache.asterix.cloud.clients.ICloudBufferedWriter; import org.apache.asterix.cloud.clients.ICloudClient; import org.apache.asterix.cloud.clients.ICloudWriter; import org.apache.asterix.cloud.clients.IParallelDownloader; @@ -87,7 +89,8 @@ @Override public ICloudWriter createdWriter(String bucket, String path, IWriteBufferProvider bufferProvider) { - return new GCSWriter(bucket, path, gcsClient, profiler); + ICloudBufferedWriter bufferedWriter = new GCSWriter(bucket, path, gcsClient, profiler); + return new CloudResettableInputStream(bufferedWriter, bufferProvider); } @Override @@ -202,7 +205,7 @@ public boolean exists(String bucket, String path) { profiler.objectGet(); Blob blob = gcsClient.get(bucket, path, Storage.BlobGetOption.fields(Storage.BlobField.values())); - return blob != null; + return blob != null && blob.exists(); } @Override diff --git a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/google/gcs/GCSWriter.java b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/google/gcs/GCSWriter.java index cccd9ec..5c5641e 100644 --- a/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/google/gcs/GCSWriter.java +++ b/asterixdb/asterix-cloud/src/main/java/org/apache/asterix/cloud/clients/google/gcs/GCSWriter.java @@ -21,9 +21,10 @@ import static org.apache.asterix.cloud.clients.google.gcs.GCSClientConfig.WRITE_BUFFER_SIZE; import java.io.IOException; +import java.io.InputStream; import java.nio.ByteBuffer; -import org.apache.asterix.cloud.clients.ICloudWriter; +import org.apache.asterix.cloud.clients.ICloudBufferedWriter; import org.apache.asterix.cloud.clients.profiler.IRequestProfiler; import org.apache.hyracks.api.exceptions.HyracksDataException; import org.apache.logging.log4j.LogManager; @@ -34,7 +35,7 @@ import com.google.cloud.storage.BlobInfo; import com.google.cloud.storage.Storage; -public class GCSWriter implements ICloudWriter { +public class GCSWriter implements ICloudBufferedWriter { private static final Logger LOGGER = LogManager.getLogger(); private final String bucket; private final String path; @@ -51,16 +52,12 @@ } @Override - public int write(ByteBuffer header, ByteBuffer page) throws HyracksDataException { - return write(header) + write(page); - } - - @Override - public int write(ByteBuffer page) throws HyracksDataException { + public int upload(InputStream stream, int length) throws HyracksDataException { profiler.objectMultipartUpload(); setUploadId(); int written = 0; try { + ByteBuffer page = ByteBuffer.wrap(stream.readNBytes(length)); while (page.hasRemaining()) { written += writer.write(page); } @@ -72,13 +69,8 @@ } @Override - public int write(byte[] b, int off, int len) throws HyracksDataException { - return write(ByteBuffer.wrap(b, off, len)); - } - - @Override - public void write(int b) throws HyracksDataException { - write(ByteBuffer.wrap(new byte[] { (byte) b })); + public boolean isEmpty() { + return !uploadStarted; } @Override -- To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18272 To unsubscribe, or for help writing mail filters, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Change-Id: I2415275efa5b0fbb9bd93306b4fb140f4b2e59cd Gerrit-Change-Number: 18272 Gerrit-PatchSet: 1 Gerrit-Owner: Savyasach Reddy <savyasach.enuko...@couchbase.com> Gerrit-MessageType: newchange