5

क्या यह समस्या को अद्यतन करने वाले दो लोगों को ठीक करेगा?रेल पर रूबी - क्या एक काउंटर कैश लेनदेन सुरक्षित है?

मैं googled और एपीआई में देखा लेकिन counter_cache, रिकॉर्ड डालने और काउंटर अद्यतन का उपयोग करते समय एक ही लेन-देन में किया जाता कुछ भी नहीं

रेल 3+, माणिक 1.9.3

उत्तर

2

पाया। लेकिन यह एक ऑपरेशन की परमाणु की गारंटी नहीं देता है। दो लोगों को अद्यतन समस्या से बचने के लिए आपको अपने रिकॉर्ड को "लॉक" करना पड़ सकता है।

this excellent article देखें। यह रेडिस-ऑब्जेक्ट मणि के बारे में है लेकिन पहले दो भाग पूरी तरह से समस्या और ActiveRecord के साथ समाधान की व्याख्या करते हैं।

1

संक्षिप्त उत्तर: नहीं। जैसा कि सेड्रिक का उल्लेख है, रेल लेनदेन के अंदर counter_cache अपडेट करता है, इसलिए यदि आप कहते हैं, तो एक पृष्ठभूमि प्रक्रिया है जो एक ही रिकॉर्ड को अपडेट करती है, तो आपको रिकॉर्ड पर with_lock ब्लॉक का उपयोग करके दोनों अपडेट चलाने तक आप डेडलॉक त्रुटियां प्राप्त कर पाएंगे।

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