[ 
https://issues.apache.org/jira/browse/HADOOP-13449?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15707232#comment-15707232
 ] 

Aaron Fabbri commented on HADOOP-13449:
---------------------------------------

Congrats on the clean jenkins run [~liuml07].

I'm running some tests with this configured as the MetadataStore today.  First 
thing I'm noticing is a failure in {{TestS3AGetFileStatus}}.  This led me to 
this part of the v10 patch:

{code}
+public class MockS3ClientFactory extends Configured implements S3ClientFactory 
{
+
+  @Override
+  public AmazonDynamoDBClient createDynamoDBClient(
+      URI uri, com.amazonaws.regions.Region region) throws IOException {
+    final DefaultS3ClientFactory factory = new DefaultS3ClientFactory();
+    factory.setConf(getConf());
+    return factory.createDynamoDBClient(uri, region);
+  }
{code}

I believe the goal of the mock s3 client is to be able to run non-integration 
(unit) tests without S3 configured.  It looks like you are creating an actual 
S3 client from the mock client.  Doesn't this break the ability of unit tests 
to run without S3?

It seems like all the unit tests should only use MetadataStores which can run 
locally (Null or LocalMetadataStore).  So, maybe we do not need this code at 
all.  Maybe MockS3ClientFactory#createDynamoDBClient() just throws a runtime 
exception "Failing to create DynamoDB for unit test", and then we fall back to 
the NullMetadataStore automatically in S3Guard#getMetadataStore()?

I'm also wondering if, instead of having S3ClientFactory expose a 
createDynamoDBClient() method, we should just add getters to S3ClientFactory 
(getAwsConfig() and maybe getCredentials()), and then move 
createDynamoDBClient() to inside the DynamoDBMetadataStore? The 
DynamoDBMetadataStore can then call the getters on the client to get what it 
needs to construct a DynamoDB client.  The goal here would be to keep dynamodb 
specifics encapsulated in DynamoDBMetadataStore.  This would allow, for 
example, removing the Dynamo dependency from s3a if we ever want to create a 
separate submodule for the DynamoDBMetadataStore.




> S3Guard: Implement DynamoDBMetadataStore.
> -----------------------------------------
>
>                 Key: HADOOP-13449
>                 URL: https://issues.apache.org/jira/browse/HADOOP-13449
>             Project: Hadoop Common
>          Issue Type: Sub-task
>          Components: fs/s3
>            Reporter: Chris Nauroth
>            Assignee: Mingliang Liu
>         Attachments: HADOOP-13449-HADOOP-13345.000.patch, 
> HADOOP-13449-HADOOP-13345.001.patch, HADOOP-13449-HADOOP-13345.002.patch, 
> HADOOP-13449-HADOOP-13345.003.patch, HADOOP-13449-HADOOP-13345.004.patch, 
> HADOOP-13449-HADOOP-13345.005.patch, HADOOP-13449-HADOOP-13345.006.patch, 
> HADOOP-13449-HADOOP-13345.007.patch, HADOOP-13449-HADOOP-13345.008.patch, 
> HADOOP-13449-HADOOP-13345.009.patch, HADOOP-13449-HADOOP-13345.010.patch
>
>
> Provide an implementation of the metadata store backed by DynamoDB.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to