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

Steve Loughran commented on HADOOP-14220:
-----------------------------------------


Just tracked down an obscure "this is impossible what have I broken here" bug 
with {{s3guard init}}, one which *only* arises on the CLI & not the unit tests
{code}
ot exist in region eu-west-1; auto-creation is turned off
~/P/h/h/t/h/bin (s3guard/HADOOP-14220-info ⚡↩) hadoop s3guard init -write 5 
-read 10 $bucket
2017-08-24 19:44:56,481 INFO Configuration.deprecation: 
fs.s3a.server-side-encryption-key is deprecated. Instead, use 
fs.s3a.server-side-encryption.key
java.io.FileNotFoundException: DynamoDB table 'hwdev-steve-ireland-new' does 
not exist in region eu-west-1; auto-creation is turned off
        at 
org.apache.hadoop.fs.s3a.s3guard.DynamoDBMetadataStore.initTable(DynamoDBMetadataStore.java:830)
        at 
org.apache.hadoop.fs.s3a.s3guard.DynamoDBMetadataStore.initialize(DynamoDBMetadataStore.java:245)
        at 
org.apache.hadoop.fs.s3a.s3guard.S3Guard.getMetadataStore(S3Guard.java:97)
        at 
org.apache.hadoop.fs.s3a.S3AFileSystem.initialize(S3AFileSystem.java:292)
        at 
org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:3258)
        at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:123)
        at 
org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:3307)
        at org.apache.hadoop.fs.FileSystem$Cache.getUnique(FileSystem.java:3281)
        at org.apache.hadoop.fs.FileSystem.newInstance(FileSystem.java:529)
        at 
org.apache.hadoop.fs.s3a.s3guard.S3GuardTool.initS3AFileSystem(S3GuardTool.java:252)
        at 
org.apache.hadoop.fs.s3a.s3guard.S3GuardTool.parseDynamoDBRegion(S3GuardTool.java:169)
        at 
org.apache.hadoop.fs.s3a.s3guard.S3GuardTool$Init.run(S3GuardTool.java:364)
        at 
org.apache.hadoop.fs.s3a.s3guard.S3GuardTool.run(S3GuardTool.java:296)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76)
        at 
org.apache.hadoop.fs.s3a.s3guard.S3GuardTool.run(S3GuardTool.java:1109)
        at 
org.apache.hadoop.fs.s3a.s3guard.S3GuardTool.main(S3GuardTool.java:1118)
Caused by: com.amazonaws.services.dynamodbv2.model.ResourceNotFoundException: 
Requested resource not found: Table: hwdev-steve-ireland-new not found 
(Service: AmazonDynamoDBv2; Status Code: 400; Error Code: 
ResourceNotFoundException; Request ID: 
75RTSBU3AEJ9R7ICPS0U3AQIURVV4KQNSO5AEMVJF66Q9ASUAAJG)
        at 
com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1588)
        at 
com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1258)
        at 
com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1030)
        at 
com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:742)
        at 
com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:716)
        at 
com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:699)
        at 
com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:667)
        at 
com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:649)
        at 
com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:513)
        at 
com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.doInvoke(AmazonDynamoDBClient.java:2089)
        at 
com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.invoke(AmazonDynamoDBClient.java:2065)
        at 
com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.executeDescribeTable(AmazonDynamoDBClient.java:1048)
        at 
com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.describeTable(AmazonDynamoDBClient.java:1024)
        at 
com.amazonaws.services.dynamodbv2.document.Table.describe(Table.java:137)
        at 
org.apache.hadoop.fs.s3a.s3guard.DynamoDBMetadataStore.initTable(DynamoDBMetadataStore.java:792)
        ... 15 more
{code}

Cause: if you have a bucket-name-specific setting for your metastore, then the 
line  {{conf.setClass(S3_METADATA_STORE_IMPL, NullMetadataStore.class,  
MetadataStore.class);}} doesn't disable any attempt to create the DDB binding, 
because fs.s3a.bucket.metastore.impl just overwrites it.

> Add S3GuardTool bucket-info command
> -----------------------------------
>
>                 Key: HADOOP-14220
>                 URL: https://issues.apache.org/jira/browse/HADOOP-14220
>             Project: Hadoop Common
>          Issue Type: Sub-task
>          Components: fs/s3
>    Affects Versions: HADOOP-13345
>            Reporter: Steve Loughran
>            Assignee: Steve Loughran
>         Attachments: HADOOP-14220-HADOOP-13345-001.patch, 
> HADOOP-14220-HADOOP-13345-002.patch
>
>
> Add a diagnostics command to s3guard which does whatever we need to diagnose 
> problems for a specific (named) s3a url. This is something which can be 
> attached to bug reports as well as used by developers.
> * Properties to log (with provenance attribute, which can track bucket 
> overrides: s3guard metastore setup, autocreate, capacity,.... 
> * table present/absent
> * # of keys in DDB table for that bucket?
> * any other stats?



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

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

Reply via email to