KamoCRM

सदस्य rights applied केवल अंतर लिखते हैं, और थोक में भूमिकाओं को पढ़ता है

Performancekamo-shared-library
शिप
23 सितंबर 2026 को 2:39 pm बजे UTC
लेखक
Kamo
Commit
c4924af

सदस्य के लिए दो संबंधित फिक्सRightsAppliedService, दोनों एक ही फाइल में: 1. **************************************** किसी सदस्य की लागू-rights पंक्तियों में से हर एक को बिना शर्त हटा दिया गया और फिर से सम्मिलित किया गया, हर बार वे भाग गए। सुरक्षा सेवा के सदस्यRightsbackfillservice हर ओरग के लिए ओरग-व्यापी पथ कहता है हर पोड बूट (एक स्व-शीर्षक, डिज़ाइन द्वारा - अपने स्वयं के जावाडोक को देखें) और फिर से शुरू करने वाला idempotent है: एक स्थिर राज्य बूट फिर से समान सेट प्राप्त करता है। उत्पादन pg stat statements में मापा गया: ~12.7M एक ~ 30K-row टेबल के खिलाफ INSERTs - लगभग 300 पूर्ण-तालुक पुनर्लेखन, एक प्रति बूट, लगभग उनमें से सभी वास्तव में वहाँ पहले से ही थे। दोनों तरीके अब फ्रेश-कंप्यूटेड सेट को उस सदस्य rights applied पर पहले से ही पकड़े गए थे (एक थोक एक पूरे हिस्से के लिए पढ़ा) और केवल स्पष्ट + सदस्यों जिसका अधिकार वास्तव में सच है फिर से लिखना भिन्न एक नो-ऑप बूट अब एक पढ़ा और शून्य लिखने की लागत है। 2. गणना करेंMemberRights (दोनों के ऊपर लिखने के पथ और केवल पढ़ने के लिए) ComputeMemberRights SessionRefreshController हर सत्र ताज़ा पर मतदान) चलना सदस्य.getRoles(), **************** नौकरी-शीर्षक भूमिकाएं ()/getRights () और सदस्य.getRights() अलग-अलग आलसी संग्रह के रूप में - साथ ही एक और आलसी लोड प्रति अलग भूमिका, उस भूमिका के अधिकार के लिए। प्रति सदस्य असीम हो गया। छह नए वैकल्पिक भंडार क्षेत्र (MemberRoleRepository, DepartmentRoleRepository), विभागRightRepository, JobTitleRoleRepository, JobTitleRightRepository, MemberRightRepository - पहले और आखिरी पहले ही अस्तित्व में) उन आलसी भार को एक निश्चित, छोटी संख्या में थोक के साथ बदल देता है प्रश्नों, प्रत्येक भूमिका के अपने अधिकारों के साथ शामिल हो गए। Deliberately नहीं एक @EntityGraph जड़ पर सदस्य / टीममेम्बर: दोनों @Inheritance (JOINED) हैं, और एक इकाई ग्राफ जो आगे बढ़ता है एक जॉइन्ड इकाई से जुड़े संघों को सटीक आकार दिया जाता है जिसे उत्पादन में उतारा जाता है। हाइबरनेट 6.2.13 (मूल तालिका के लिए आउट-क्लौज प्रविष्टि से मिल रहा है - लीड असाइनी रेफरी देखें)। प्रत्येक नया पुनर्स्थापना इसके बजाय CHILD इकाई में निहित है (जिनमें से कोई भी @Inheritance ले जाता है) और फ़िल्टर किया जाता है माता-पिता के आईडी द्वारा। @PersistenceContext के साथ एक EntityManager क्षेत्र की पहली कोशिश की गई थी और फिर से बदल दिया गया था: इसे संसाधित किया जाता है स्प्रिंग के JPA-aware पोस्ट-प्रोसेसर जब भी स्प्रिंग-ओर्म क्लासपैथ पर होता है, तो मैन्युअल रूप से नया No EntityManager Factory bean (SignInReadRetry) के संदर्भ में सेवा टेस्ट का हाथ से चलने वाला स्प्रिंग संदर्भ, जो वास्तविक AOP प्रॉक्सी के माध्यम से @RetryOnDbConflict का अभ्यास करता है, विफल रहा सीधे। वैकल्पिक-रिपॉज़िटरी फ़ील्ड उसी तरह से लागू होती हैमॉडलरेसोल्वर पहले से ही किया: @Autowired(required = झूठ) उन्हें उस प्रकार के कोई बीन के साथ शून्य छोड़ देता है, और छह सहायक गिर जाते हैं प्रत्येक मौजूदा परीक्षण में मूल आलसी-भार पथ पर वापस लौटें, अपरिवर्तित। सत्ररेश कंट्रोलर कंप्यूटिंग को लाइव रखता है (निर्धारित स्नैपशॉट से नहीं) - यह समापन बिंदु है पूरा बिंदु "अब क्या सच है" है, जो स्पष्ट रूप से नहीं है कि हमेशा आखिरी बने रहे।.

सभी बदलाव

जैसा कि आप शिपिंग देखते हैं?

यह सब अपने कार्यक्षेत्र में आता है। मुफ्त योजना शुरू करें और इस पृष्ठ को एक महीने में फिर से पढ़ें।.

Foreverमूल्य निर्धारण देखें