टेनेंट-स्कोप्ड रेज़्यूमेबल अपलोड सेशंस को परिभाषित करता है जिनमें पार्ट चेकसम, समाप्ति, केवल-जब-हैश-मिलता-है पूर्ण, और अबॉर्ट क्लीनअप होता है ताकि बड़े फ़ाइलों को बिना अनाथ भागों या क्रॉस-टेनेंट कुंजियों के पुनः आरंभ किया जा सके।
पैकेज स्थिति: संदर्भ मानवीय समीक्षा के लिए तैयार। अनुबंध और परीक्षण परिदृश्य पूर्ण हैं, लेकिन यह दावा नहीं किया जाता कि किसी अपनाने वाले कार्यान्वयन ने इन्हें पार किया है।
निर्णय
बड़े अपलोड एक टेनेंट-स्कोप्ड ऑब्जेक्ट कुंजी, समाप्ति, घोषित आकार, और क्लाइंट-प्रदान किया गया ऑब्जेक्ट डाइजेस्ट के साथ एक सेशन बनाते हैं। क्लाइंट क्रमांकित भागों को प्रति-भाग चेकसम के साथ PUT करते हैं। पूर्ण तभी सफल होता है जब भाग लगातार हों, protocol.yaml में सीमाओं का सम्मान हो, और संयोजित डाइजेस्ट मेल खाता हो। अबॉर्ट या समाप्ति भागों को हटा देता है ताकि अधूरा डेटा डाउनलोड योग्य ऑब्जेक्ट न बन सके। सेशन पहचानकर्ता टेनेंट्स के बीच उपयोग योग्य नहीं होते। प्रकाशित ऑब्जेक्ट का मैलवेयर स्कैनिंग पूर्ण के बाद एक संबंधित गेट है। अधिकृत डाउनलोड एक संबंधित अवरोध है।
दायरा
- सेशन जीवनचक्र, भाग सीमाएं, चेकसम, पूर्ण, अबॉर्ट, और स्वीपर।
- एक टेनेंट में बड़े फ़ाइल अपलोड के लिए API व्यवहार।
- कुंजी लेआउट
{tenant_id}/uploads/{session_id}।
इस ब्लॉक के बाहर
- प्रकाशित ऑब्जेक्ट्स का बाइट-रेंज GET।
- प्रकाशन के बाद वायरस स्कैनिंग और कंटेंट-टाइप नीति।
- किसी विशिष्ट क्लाउड विक्रेता के मल्टीपार्ट प्रोटोकॉल प्रोफ़ाइल नंबरों से परे।
अनुबंध
- सेशंस
protocol.yamlमें सूचीबद्ध राज्यों में मौजूद होते हैं; अनुमत सेट के बाहर के मेथड बंद हो जाते हैं। min_part_bytes/max_part_bytes(अंतिम भाग को छोड़कर) के बाहर के भाग अस्वीकार किए जाते हैं; इस प्रोफ़ाइल मेंmax_parts10000 है।- खराब
checksum_crc32cवाले भाग को रखा नहीं जाता। POST_completeकेवल तभी प्रकाशित करता है जब भाग लगातार हों और SHA-256object_sha256से मेल खाता हो; अन्यथाupload_checksum_mismatchहोता है और स्थिति फिर से खुली हो जाती है।- विदेशी टेनेंट सेशन आईडी
not_foundके रूप में हल होते हैं और कोई भाग सूची नहीं होती। - अबॉर्ट और समाप्ति स्वीपर भागों को हटा देते हैं और कुंजी को पूर्ण ऑब्जेक्ट के रूप में सेवा देने से रोकते हैं।
कार्यान्वयन मार्गदर्शन
- टेनेंट जांच सेशन मेटाडेटा पर होती है, केवल ऑब्जेक्ट कुंजी से अनुमानित नहीं।
- स्थिति पर भाग संख्या और चेकसम प्रतिध्वनित करें। अबॉर्ट के बिना भी
expires_atको स्वीप करें।
विफलता प्रबंधन और सुरक्षा उपाय
- डाइजेस्ट मेल के बिना पूर्ण कभी पूर्ण नहीं होता।
object_sha256के बिना आरंभ अस्वीकार किया जाता है। - समाप्ति स्टोर क्लॉक का उपयोग करती है।
सत्यापन और संचालन
- परीक्षण: समाप्ति, भाग चेकसम, ऑब्जेक्ट हैश, क्रॉस-टेनेंट छुपाना, अबॉर्ट क्लीनअप।
session_ttl_secondsसे पुराने सेशंस पर अलर्ट। प्रोफ़ाइल आकार विक्रेता डिफ़ॉल्ट नहीं हैं।
इस पैकेज में निष्पादन-समान उदाहरण फिक्स्चर और स्वीकृति अनुबंध हैं। पैकेज संरचना और मेटाडेटा जांचने के लिए संग्रह रूट से python tools/validate.py चलाएं; फिर लक्षित रिपॉजिटरी में परिदृश्यों को लागू और निष्पादित करें।
अपनाने की धारणाएँ
example.yamlमें नाम और संख्यात्मक मान एक अपनाने वाली प्रोफ़ाइल हैं, सार्वभौमिक डिफ़ॉल्ट नहीं।- अपनाने वाली टीम को अपने सिस्टम के लिए अभिनेताओं, डेटा वर्गों, त्रुटि शब्दावली, और स्वामित्व को मैप करना होगा।
संदर्भ
- कोई बाहरी मानक स्रोत आवश्यक नहीं; यह पैकेज एक परियोजना निर्णय को परिभाषित करता है।