Jets3tNativeFileSystemStore wrongly calls S3Service.createBucket during initialisation --------------------------------------------------------------------------------------
Key: HADOOP-6734 URL: https://issues.apache.org/jira/browse/HADOOP-6734 Project: Hadoop Common Issue Type: Bug Components: fs/s3 Affects Versions: 0.18.3 Environment: S3 Europe Reporter: Joni Niemi Reason: If a bucket is created with CreateBucketConfiguration specified, s3service.createBucket will fail. Symptoms: If a bucket has CreateBucketConfiguration, Jets3tNativeFileSystemStore will fail with BucketAlreadyOwnedByYou Error. A detailed descrioption from a blog (http://john.keyes.ie/boto-create_bucket-bucketalreadyownedbyyou-error/) {quote}This evening I encountered a problem with it though. When the bucket did not exist, the method behaved as expected. When the bucket did exist though I received the following error response: {code}<?xml version="1.0" encoding="UTF-8"?> <Error> <Code>BucketAlreadyOwnedByYou</Code> <Message> Your previous request to create the named bucket succeeded and you already own it. </Message> ... </Error>{code} This problem only manifests itself with buckets that are hosted in the EU. If the bucket is created in the US then the create_bucket method behaves as described. For buckets created with a <CreateBucketConfiguration>, you will receive an error if you attempt to recreate the same bucket. To create a bucket in the EU, the bucket is created with a CreateBucketConfiguration specified. I now use the following code to avoid the problem and it works for both US and EU buckets. {code} def get_bucket(): try: bucket = conn.get_bucket('xxx', validate=True) except S3ResponseError, e: if e.code == "NoSuchBucket": bucket = conn.create_bucket('xxx', location='EU') else: raise e return bucket {code} {quote} -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.