You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by ad...@apache.org on 2020/05/14 11:12:03 UTC

svn commit: r1877737 - in /jackrabbit/oak/trunk: oak-segment-aws/ oak-segment-aws/src/main/java/org/apache/jackrabbit/oak/segment/aws/ oak-segment-aws/src/main/java/org/apache/jackrabbit/oak/segment/aws/tool/ oak-segment-remote/src/main/java/org/apache...

Author: adulceanu
Date: Thu May 14 11:12:03 2020
New Revision: 1877737

URL: http://svn.apache.org/viewvc?rev=1877737&view=rev
Log:
OAK-8827 - AWS support for segment-tar
Nitpicking and javadoc adjustments

Modified:
    jackrabbit/oak/trunk/oak-segment-aws/pom.xml
    jackrabbit/oak/trunk/oak-segment-aws/src/main/java/org/apache/jackrabbit/oak/segment/aws/AwsContext.java
    jackrabbit/oak/trunk/oak-segment-aws/src/main/java/org/apache/jackrabbit/oak/segment/aws/AwsPersistence.java
    jackrabbit/oak/trunk/oak-segment-aws/src/main/java/org/apache/jackrabbit/oak/segment/aws/AwsRepositoryLock.java
    jackrabbit/oak/trunk/oak-segment-aws/src/main/java/org/apache/jackrabbit/oak/segment/aws/AwsSegmentArchiveWriter.java
    jackrabbit/oak/trunk/oak-segment-aws/src/main/java/org/apache/jackrabbit/oak/segment/aws/DynamoDBClient.java
    jackrabbit/oak/trunk/oak-segment-aws/src/main/java/org/apache/jackrabbit/oak/segment/aws/tool/AwsSegmentCopy.java
    jackrabbit/oak/trunk/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/AbstractRemoteSegmentArchiveReader.java
    jackrabbit/oak/trunk/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/AbstractRemoteSegmentArchiveWriter.java
    jackrabbit/oak/trunk/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/RemoteUtilities.java

Modified: jackrabbit/oak/trunk/oak-segment-aws/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-aws/pom.xml?rev=1877737&r1=1877736&r2=1877737&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-aws/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-segment-aws/pom.xml Thu May 14 11:12:03 2020
@@ -47,8 +47,8 @@
                         <Import-Package>
                           <!-- OAK-7182 -->${guava.osgi.import},
                             org.apache.jackrabbit.oak.segment.spi*,
-                            !org.apache.jackrabbit.oak.segment*,
                             org.apache.jackrabbit.oak.segment.remote*,
+                            !org.apache.jackrabbit.oak.segment*,
                             *
                         </Import-Package>
                         <Export-Package>

Modified: jackrabbit/oak/trunk/oak-segment-aws/src/main/java/org/apache/jackrabbit/oak/segment/aws/AwsContext.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-aws/src/main/java/org/apache/jackrabbit/oak/segment/aws/AwsContext.java?rev=1877737&r1=1877736&r2=1877737&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-aws/src/main/java/org/apache/jackrabbit/oak/segment/aws/AwsContext.java (original)
+++ jackrabbit/oak/trunk/oak-segment-aws/src/main/java/org/apache/jackrabbit/oak/segment/aws/AwsContext.java Thu May 14 11:12:03 2020
@@ -114,7 +114,7 @@ public final class AwsContext {
 
     /**
      * Creates the context used to interact with AWS services.
-     * 
+     *
      * @param configuration The configuration used to initialize the context.
      * @return The context.
      * @throws IOException
@@ -128,7 +128,7 @@ public final class AwsContext {
 
     /**
      * Creates the context used to interact with AWS services.
-     * 
+     *
      * @param s3               Client for accessing Amazon S3.
      * @param bucketName       Name for the bucket that will store segments.
      * @param rootDirectory    The root directory under which the segment store is
@@ -137,12 +137,12 @@ public final class AwsContext {
      * @param journalTableName Name of table used for storing log entries for
      *                         journal and gc. The table will be created if it
      *                         doesn't already exist. It should have a partition key
-     *                         on "{@link #TABLE_ATTR_FILENAME}" and sort key on
-     *                         "{@link #TABLE_ATTR_TIMESTAMP}".
+     *                         on "{@link DynamoDBClient#TABLE_ATTR_FILENAME}" and sort key on
+     *                         "{@link DynamoDBClient#TABLE_ATTR_TIMESTAMP}".
      * @param lockTableName    Name of table used for managing the distributed lock.
      *                         The table will be created if it doesn't already
      *                         exist. It should have a partition key on
-     *                         "{@link #LOCKTABLE_KEY}".
+     *                         "{@link DynamoDBClient#LOCKTABLE_KEY}".
      * @return The context.
      * @throws IOException
      */
@@ -165,12 +165,12 @@ public final class AwsContext {
      * @param journalTableName Name of table used for storing log entries for
      *                         journal and gc. The table will be created if it
      *                         doesn't already exist. It should have a partition key
-     *                         on "{@link #TABLE_ATTR_FILENAME}" and sort key on
-     *                         "{@link #TABLE_ATTR_TIMESTAMP}".
+     *                         on "{@link DynamoDBClient#TABLE_ATTR_FILENAME}" and sort key on
+     *                         "{@link DynamoDBClient#TABLE_ATTR_TIMESTAMP}".
      * @param lockTableName    Name of table used for managing the distributed lock.
      *                         The table will be created if it doesn't already
      *                         exist. It should have a partition key on
-     *                         "{@link #LOCKTABLE_KEY}".
+     *                         "{@link DynamoDBClient#LOCKTABLE_KEY}".
      * @param provisioningData DynamoDB provisioning data
      * @return The context.
      * @throws IOException
@@ -192,10 +192,7 @@ public final class AwsContext {
     }
 
     public String getConfig() {
-        StringBuilder uri = new StringBuilder("aws:");
-        uri.append(directory.getConfig()).append(';');
-        uri.append(dynamoDBClient.getConfig());
-        return uri.toString();
+        return "aws:" + directory.getConfig() + ';' + dynamoDBClient.getConfig();
     }
 
     private static boolean isEmpty(String input) {

Modified: jackrabbit/oak/trunk/oak-segment-aws/src/main/java/org/apache/jackrabbit/oak/segment/aws/AwsPersistence.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-aws/src/main/java/org/apache/jackrabbit/oak/segment/aws/AwsPersistence.java?rev=1877737&r1=1877736&r2=1877737&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-aws/src/main/java/org/apache/jackrabbit/oak/segment/aws/AwsPersistence.java (original)
+++ jackrabbit/oak/trunk/oak-segment-aws/src/main/java/org/apache/jackrabbit/oak/segment/aws/AwsPersistence.java Thu May 14 11:12:03 2020
@@ -51,7 +51,7 @@ public class AwsPersistence implements S
     public boolean segmentFilesExist() {
         try {
             for (String prefix : awsContext.directory.listPrefixes()) {
-                if (prefix.indexOf(".tar/") >= 0) {
+                if (prefix.contains(".tar/")) {
                     return true;
                 }
             }

Modified: jackrabbit/oak/trunk/oak-segment-aws/src/main/java/org/apache/jackrabbit/oak/segment/aws/AwsRepositoryLock.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-aws/src/main/java/org/apache/jackrabbit/oak/segment/aws/AwsRepositoryLock.java?rev=1877737&r1=1877736&r2=1877737&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-aws/src/main/java/org/apache/jackrabbit/oak/segment/aws/AwsRepositoryLock.java (original)
+++ jackrabbit/oak/trunk/oak-segment-aws/src/main/java/org/apache/jackrabbit/oak/segment/aws/AwsRepositoryLock.java Thu May 14 11:12:03 2020
@@ -34,7 +34,7 @@ public class AwsRepositoryLock implement
 
     private static final int TIMEOUT_SEC = Integer.getInteger("oak.segment.aws.lock.timeout", 0);
 
-    private static long INTERVAL = 60;
+    private static final long INTERVAL = 60;
 
     private final AmazonDynamoDBLockClient lockClient;
     private final String lockName;

Modified: jackrabbit/oak/trunk/oak-segment-aws/src/main/java/org/apache/jackrabbit/oak/segment/aws/AwsSegmentArchiveWriter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-aws/src/main/java/org/apache/jackrabbit/oak/segment/aws/AwsSegmentArchiveWriter.java?rev=1877737&r1=1877736&r2=1877737&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-aws/src/main/java/org/apache/jackrabbit/oak/segment/aws/AwsSegmentArchiveWriter.java (original)
+++ jackrabbit/oak/trunk/oak-segment-aws/src/main/java/org/apache/jackrabbit/oak/segment/aws/AwsSegmentArchiveWriter.java Thu May 14 11:12:03 2020
@@ -79,6 +79,7 @@ public class AwsSegmentArchiveWriter ext
     }
 
     private void writeIndex() throws IOException {
+        // 33 bytes = 2 x 8 bytes (long) +  4 x 4 bytes (int) + 1 x 1 byte (boolean)
         Buffer buffer = Buffer.allocate(index.size() * 33);
         for (RemoteSegmentArchiveEntry entry : index.values()) {
             buffer.putLong(entry.getMsb());

Modified: jackrabbit/oak/trunk/oak-segment-aws/src/main/java/org/apache/jackrabbit/oak/segment/aws/DynamoDBClient.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-aws/src/main/java/org/apache/jackrabbit/oak/segment/aws/DynamoDBClient.java?rev=1877737&r1=1877736&r2=1877737&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-aws/src/main/java/org/apache/jackrabbit/oak/segment/aws/DynamoDBClient.java (original)
+++ jackrabbit/oak/trunk/oak-segment-aws/src/main/java/org/apache/jackrabbit/oak/segment/aws/DynamoDBClient.java Thu May 14 11:12:03 2020
@@ -128,7 +128,7 @@ public final class DynamoDBClient {
         //update the table if billing mode is different or provisioned capacity has changed
         if (currentBillingMode != provisioningData.getBillingMode() ||
                 (provisioningData.getBillingMode() == BillingMode.PROVISIONED &&
-                        (throughputDescription.getReadCapacityUnits() != tableRcu || throughputDescription.getReadCapacityUnits() != tableWcu))) {
+                        (!throughputDescription.getReadCapacityUnits().equals(tableRcu) || !throughputDescription.getReadCapacityUnits().equals(tableWcu)))) {
 
             UpdateTableRequest tableUpdateRequest = new UpdateTableRequest()
                     .withTableName(table.getTableName())
@@ -194,6 +194,7 @@ public final class DynamoDBClient {
                 .with(TABLE_ATTR_CONTENT, line);
         try {
             try {
+                // TO DO: why is this needed here
                 Thread.sleep(1L);
             } catch (InterruptedException e) {
             }

Modified: jackrabbit/oak/trunk/oak-segment-aws/src/main/java/org/apache/jackrabbit/oak/segment/aws/tool/AwsSegmentCopy.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-aws/src/main/java/org/apache/jackrabbit/oak/segment/aws/tool/AwsSegmentCopy.java?rev=1877737&r1=1877736&r2=1877737&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-aws/src/main/java/org/apache/jackrabbit/oak/segment/aws/tool/AwsSegmentCopy.java (original)
+++ jackrabbit/oak/trunk/oak-segment-aws/src/main/java/org/apache/jackrabbit/oak/segment/aws/tool/AwsSegmentCopy.java Thu May 14 11:12:03 2020
@@ -38,7 +38,7 @@ import org.apache.jackrabbit.oak.segment
  */
 public class AwsSegmentCopy {
     /**
-     * Create a builder for the {@link SegmentCopy} command.
+     * Create a builder for the {@link AwsSegmentCopy} command.
      *
      * @return an instance of {@link Builder}.
      */
@@ -51,7 +51,7 @@ public class AwsSegmentCopy {
     }
 
     /**
-     * Collect options for the {@link SegmentCopy} command.
+     * Collect options for the {@link AwsSegmentCopy} command.
      */
     public static class Builder {
 

Modified: jackrabbit/oak/trunk/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/AbstractRemoteSegmentArchiveReader.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/AbstractRemoteSegmentArchiveReader.java?rev=1877737&r1=1877736&r2=1877737&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/AbstractRemoteSegmentArchiveReader.java (original)
+++ jackrabbit/oak/trunk/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/AbstractRemoteSegmentArchiveReader.java Thu May 14 11:12:03 2020
@@ -92,7 +92,7 @@ public abstract class AbstractRemoteSegm
                 getGraph();
             } catch (IOException ignore) { }
         }
-        return hasGraph;
+        return hasGraph != null ? hasGraph : false;
     }
 
     @Override
@@ -113,7 +113,6 @@ public abstract class AbstractRemoteSegm
     /**
      * Populates the archive index, summing up each entry's length.
      * @return length, the total length of the archive
-     * @throws IOException, if the archive entries are not accessible.
      */
     protected abstract long computeArchiveIndexAndLength() throws IOException;
 
@@ -121,7 +120,6 @@ public abstract class AbstractRemoteSegm
      * Reads the segment from the remote storage.
      * @param segmentFileName, the name of the segment (msb + lsb) prefixed by its position in the archive
      * @param buffer, the buffer to which to read
-     * @throws IOException, if the segment could not be read
      */
     protected abstract void doReadSegmentToBuffer(String segmentFileName, Buffer buffer) throws IOException;
 
@@ -129,7 +127,6 @@ public abstract class AbstractRemoteSegm
      * Reads a data file inside the archive. This entry is not a segment. Its full name is given by archive name + extension.
      * @param extension, extension of the file
      * @return the buffer containing the data file bytes
-     * @throws IOException if the data file could not be read
      */
     protected abstract Buffer doReadDataFile(String extension) throws IOException;
 

Modified: jackrabbit/oak/trunk/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/AbstractRemoteSegmentArchiveWriter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/AbstractRemoteSegmentArchiveWriter.java?rev=1877737&r1=1877736&r2=1877737&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/AbstractRemoteSegmentArchiveWriter.java (original)
+++ jackrabbit/oak/trunk/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/AbstractRemoteSegmentArchiveWriter.java Thu May 14 11:12:03 2020
@@ -156,7 +156,6 @@ public abstract class AbstractRemoteSegm
      * @param data, the actual bytes in the entry
      * @param offset,  the start offset in the data.
      * @param size, the number of bytes to write.
-     * @throws IOException, if the segment could not be written
      */
     protected abstract void doWriteArchiveEntry(RemoteSegmentArchiveEntry indexEntry, byte[] data, int offset, int size) throws IOException;
 
@@ -164,7 +163,6 @@ public abstract class AbstractRemoteSegm
      * Reads a segment from remote storage into a buffer.
      * @param indexEntry, the archive index entry to read
      * @return th buffer containing the segment bytes
-     * @throws IOException, if the segment could not be read
      */
     protected abstract Buffer doReadArchiveEntry(RemoteSegmentArchiveEntry indexEntry) throws IOException;
 
@@ -172,19 +170,16 @@ public abstract class AbstractRemoteSegm
      * Writes a data file inside the archive. This entry is not a segment. Its full name is given by archive name + extension.
      * @param data, bytes to write
      * @param extension, the extension of the data file
-     * @throws IOException, if the data file could not be written
      */
     protected abstract void doWriteDataFile(byte[] data, String extension) throws IOException;
 
     /**
      * Hook for executing additional actions after the segment write queue is closed.
-     * @throws IOException, for whatever exception occurs in the calling code.
      */
     protected abstract void afterQueueClosed() throws IOException;
 
     /**
      * Hook for executing additional actions after the segment write queue is flushed.
-     * @throws IOException, for whatever exception occurs in the calling code.
      */
     protected abstract void afterQueueFlushed() throws IOException;
 }
\ No newline at end of file

Modified: jackrabbit/oak/trunk/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/RemoteUtilities.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/RemoteUtilities.java?rev=1877737&r1=1877736&r2=1877737&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/RemoteUtilities.java (original)
+++ jackrabbit/oak/trunk/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/RemoteUtilities.java Thu May 14 11:12:03 2020
@@ -29,7 +29,7 @@ public final class RemoteUtilities {
     public static final boolean OFF_HEAP = getBoolean("access.off.heap");
     public static final String SEGMENT_FILE_NAME_PATTERN = "^([0-9a-f]{4})\\.([0-9a-f-]+)$";
 
-    private static Pattern pattern = Pattern.compile(SEGMENT_FILE_NAME_PATTERN);
+    private static final Pattern PATTERN = Pattern.compile(SEGMENT_FILE_NAME_PATTERN);
 
 
     private RemoteUtilities() {
@@ -44,7 +44,7 @@ public final class RemoteUtilities {
     }
 
     public static UUID getSegmentUUID(@NotNull String segmentFileName) {
-        Matcher m = pattern.matcher(segmentFileName);
+        Matcher m = PATTERN.matcher(segmentFileName);
         if (!m.matches()) {
             return null;
         }