2012-12-16 15 views
98

मुझे यह त्रुटि अंतःस्थापित हो रही है।एडब्लूएस त्रुटि संदेश: इस संसाधन के खिलाफ वर्तमान में एक विवादित सशर्त ऑपरेशन प्रगति पर है

मेरे पास एक प्रोग्राम है जो जावा aws sdk का उपयोग करता है और हजारों छोटी फ़ाइलों को s3 में लोड करता है। मैं इस त्रुटि को अंतःस्थापित करता हूं।

इंटरनेट पर त्वरित खोज करने के बाद कोई उपयोगी उत्तर नहीं मिला।

नोट करें कि कॉलिंग प्रोग्राम एकल थ्रेडेड है। अंतर्निहित जावा एसडीके वर्कर धागे का उपयोग करने लगता है।

Status Code: 409, AWS Service: Amazon S3, AWS Request ID: 75E16E8DE2193CA6, AWS Error Code: OperationAborted, AWS Error Message: A conflicting conditional operation is currently in progress against this resource. Please try again., S3 Extended Request ID: 0uquw2YEoFamLldm+c/p412Lzd8jHJGFBDz3h7wN+/4I0f6hnGLkPMe+5LZazKnZ 
    at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:552) 
    at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:289) 
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:170) 
    at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:2648) 
    at com.amazonaws.services.s3.AmazonS3Client.createBucket(AmazonS3Client.java:578) 
    at com.amazonaws.services.s3.AmazonS3Client.createBucket(AmazonS3Client.java:503) 
+1

क्या आप ऑब्जेक्ट्स को S3 में डालने की कोशिश कर रहे हैं और फिर तुरंत उन्हें पढ़ रहे हैं? – jamieb

+0

@jamieb, वास्तव में नहीं, इस समय नहीं। – user1172468

+1

मेरी इच्छा है कि मेरे पास आपका जवाब हो। क्या आप तेजी से उत्तराधिकार में एक ही कुंजी को फिर से लिखने की कोशिश कर रहे हैं? एस 3 "अंततः संगत" मॉडल पर बनाया गया है जहां PUT को व्यवस्थित करने के लिए समय चाहिए। – jamieb

उत्तर

303

मैं, एक ही त्रुटि संदेश मिला जब मैं निम्नलिखित किया:

  1. एक बाल्टी बनाया - यह डिफ़ॉल्ट रूप से अमेरिका क्षेत्र (AWSCLI प्रयुक्त)

  2. एहसास हुआ, बाल्टी के लिए जाना जाएगा के लिए चला गया ईयू क्षेत्र और इसे नष्ट कर दिया (प्रयुक्त एडब्ल्यूएस कंसोल)

  3. (कुछ ही मिनट बाद) बाल्टी बनाने के लिए, यह निर्दिष्ट ईयू क्षेत्र

की कोशिश की

चरण 3 पर, एडब्ल्यूएस कंसोल ने मुझे आपके प्रश्न के शीर्षक से त्रुटि संदेश दिखाया है।

तो मुझे लगता है कि अमेरिका में बाल्टी हटा दी गई थी, लेकिन संभवतः कुछ सिंक्रनाइज़ेशन प्रक्रियाएं हैं, जो समय ले रही हैं। और मुझे उम्मीद है कि कुछ घंटों तक इंतजार करने के लिए मुझे बाल्टी नाम फिर से सृजन के लिए उपलब्ध होगा - इस बार उचित (ईयू) क्षेत्र में।

फिक्स: - संपादित करें: लगभग एक घंटे बाद, बाल्टी बनाने (ईयू क्षेत्र में) बनाने का मेरा प्रयास सफल हुआ।

+1

मैं बस एक ही स्थिति में भाग गया। अगर मैं अगले घंटे या तो अपनी बाल्टी बना सकता हूं तो मैं वापस पोस्ट करूंगा। – AJB

+11

मैं इसकी पुष्टि कर सकता हूं। इसमें लगभग 1.5 घंटे लग गए, और इस बात की कोई गारंटी नहीं है कि कोई और उस दौरान बाल्टी नाम नहीं छोड़ेगा, लेकिन आप इसे वापस प्राप्त कर सकते हैं, यह उचित समय के भीतर और थोड़ी किस्मत के साथ लगता है। – AJB

+0

एक ही समस्या है। –

15

आपके उदाहरण में अनुरोध बाल्टी बनाना है। यदि आप बहुत सारी बाल्टी बनाने या बाल्टी को बदलने की कोशिश कर रहे हैं, तो यह स्वस्थ नहीं है।

ध्यान दें कि आपके पास खाते के लिए 100 बाल्टी की सीमा है (here देखें)। संपादित करें: अब यह सीमा एक "मुलायम सीमा" है और यदि आवश्यक हो तो आप इसे बढ़ा सकते हैं।

भी ध्यान रखें कि एक बाल्टी की एक रचना समय लगता है और:

... यह नहीं उचित बाल्टी बना सकते हैं या अपने आवेदन के उच्च उपलब्धता कोड पथ पर कॉल को नष्ट करने के लिए है ...

एक बार और फिर अपनी बाल्टी बनाने के लिए बेहतर है, तो आप अपनी मौजूदा बाल्टी (या यहां तक ​​कि एक भी) में जितनी सारी ऑब्जेक्ट्स पसंद करते हैं उन्हें डाल सकते हैं।

वैसे भी, एक सिस्टम के साथ काम करते समय जो किसी भी समय विफल होने के लिए बाध्य है, तो आप त्रुटियों को संभालने में सक्षम होना चाहिए और ऐसी त्रुटि प्राप्त करते समय अपनी प्रक्रिया को धीमा कर सकते हैं। AWS Docs में और विवरण देखें।

12

सभी अन्य जो इस त्रुटि संदेश के लिए खोज में गूगल से इस सूत्र पर आते हैं 1 परिणाम के रूप में, के लिए:

आप बाल्टी नष्ट कर दिया, नया क्षेत्र में पुन: बनाने के लिए करते हैं, तो इंतजार नहीं है "मैन्युअल" इस तक पृष्ठभूमि सिंक पूर्ण हो जाएगा, इसके बजाय प्रत्येक 5 सेकंड या उससे भी कम की अपनी बाल्टी निर्माण को चलाने और पुनः प्रयास करने के लिए एक छोटी बैश स्क्रिप्ट डालें।

उदाहरण:

#!/bin/bash 
RESULT=2 
until [ $RESULT -eq 0 ]; do 
    aws s3 mb s3://your.bucket.name --region us-west-2 
    RESULT=$? 
    sleep 5 
done 
echo "Bucket created!" 

यह तुम्हारे लिए "बाल्टी बनाने के" कार्रवाई का पुनः प्रयास करेगा, हर कुछ सेकंड ('नींद' पर निर्भर करते हैं) और जैसे ही यह संभव है - यह तुम्हारे लिए बन जाएगा, ताकि कोई एक गलती से अपने बाल्टी नाम चोरी कर सकते हैं :)

आशा है कि यह मदद करता है :)

6

जब एक बाल्टी हटा दी जाती है और एक नया बाल्टी वर्ष बाल्टी रूप में एक ही नाम पर बनाई गई है यह त्रुटि आमतौर पर होता है।

मेरा मानना ​​है कि हमें कुछ समय तक इंतजार करना होगा जब तक कि हम एक ही नाम में एक नई बाल्टी नहीं बना सकते।

संबंधित मुद्दे