libmdbx 0.11.7 מגיע עם העברת פרויקטים ל-GitFlic, תיקוני באגים ועוד

ה שחרור של ספריית libmdbx חדשה גרסה 0.11.7, השיגור בולט בהעברת הפרויקט לשירות GitFlic לאחר שמנהלת GitHub הסירה את libmdbx יחד עם מספר פרויקטים אחרים ב-15 באפריל 2022 ללא כל אזהרה או הסבר, תוך חסימת גישה למפתחים רבים הקשורים לחברות שנפלו תחת סנקציות אמריקאיות.

מנקודת מבטו של המשתמש, כל הדפים, המאגר והמזלגות של הפרויקט הפכו לפתע לעמוד "404", ללא אפשרות לתקשורת ובלי לברר את הסיבות.

למרבה הצער, כמעט כל הגרסאות אבדו, שבהן היו שאלות רבות עם תשובות מפורטות, וכן דיונים רבים. אובדן המידע הזה הוא הנזק האובייקטיבי היחיד שהנהלת GitHub הצליחה לגרום לפרויקט, אם כי עותקים חלקיים של הדיונים נותרו זמינים בארכיון archive.org.

אובדן תשתית ה-CI והסקריפטים המובנים (זמינים בחינם לפרויקטים של OpenSource) אילץ אותנו לבדוק, לאחד ולחסל מעט חובות טכניים. כעת CI שוחזר כמעט לאותו נפח (כ-100 תצורות בנייה), למעט בנייה והרצה של בדיקות עבור כל גרסאות BSD ו- Solaris. למרבה הצער, לאחר פעולותיה של GitHub לא התקבלו הבהרות או הודעות, מלבד תזכורת לצורך בתשלום.

התכונות החדשות העיקריות של libmdbx 0.11.7

מאז החדשות האחרונות על שחרורו של libmdbx v0.11.3, בנוסף להתאוששות מפעולות GitHub, כדאי לשים לב לשיפורים והתיקונים הבאים:

בסך הכל בוצעו 185 שינויים ב-89 קבצים, נוספו כ-3300 שורות, כ-4100 הוסרו. הוסרו בעיקר עקב טיהור של קבצים טכנולוגיים חסרי תועלת ממילא הקשורים ל-GitHub ולשירותים התלויים.

נוסף א תקן לאפקט/פגם של אי עקביות שזוהה בעמוד ובמטמון הממוזגים של המאגר בליבת לינוקס. במערכות שבהן מטמון העמוד והמאגר מאוחדים באמת, לא הגיוני שהקרנל יבזבז זיכרון על שני עותקים של נתונים על ידי כתיבה לקובץ שכבר הוקצה לזיכרון. לכן, הנתונים שנכתבים הופכים להיות גלויים דרך הקצאת הזיכרון לפני השלמת קריאת המערכת write(), גם אם הנתונים עדיין לא נכתבו לדיסק.

התנהגות אחרת בסך הכל אינה רציונלית, מכיוון שעם מיזוג מושהה, אתה עדיין צריך לתפוס מנעולים לרשימות דפים, להעתיק נתונים או להתאים PTEs. לפיכך, כלל העקביות הבלתי נאמר קיים מאז 1989, כאשר מטמון המאגר המאוחד הופיע ב-SVR4. כתוצאה מכך, מציאת באגים מוזרים בתרחישי ייצור עמוסים של libmdbx הייתה עבודה רבה. ראשית, שחזור הבעיה, לאחר מכן אימות השערות ובדיקת שיפורים.

כעת אנו יכולים לומר בביטחון שהבעיה זוהתה, אותרה והוסרה בצורה מהימנה, למרות המורכבות והספציפיות של תרחיש ההשמעה. כמו כן, עבודתו של מנגנון העקיפה אושרה על ידי אחד ממפתחי Erigon (Ethereum), במקרה שלו, ב-bug build, ההגנה הופעלה כרגרסיה עקב בדיקת טענה נוספת.

יש לציין כי בהקשר של השימוש הנרחב ב-libmdbx בפרויקטים עובדים, חשוב ביסודו להבטיח פעולה אמינה, במקום לברר אם מדובר בבאג או בפיצ'ר, והאם ניתן לסמוך על עקביות כזו. במיוחד מבלי לחפש את הסיבות לחוסר עקביות בתוך ליבת לינוקס. אז כאן אנחנו מדברים על תיקון בעיה שיכולה להשפיע על המשתמשים.

תוקן רגרסיה של באג EXDEV (קישור בין מכשירים) בעת העתקה חמה של מסד נתונים ללא דחיסה למערכת קבצים אחרת, הן דרך ה-API והן עם כלי השירות mdbx_copy.
Kris Zyp הטמיעה תמיכה עבור libmdbx ב-Deno.

טיפול קבוע בערך שהוגדר על ידי אפשרות MDBX_opt_rp_augment_limit בעת עיבוד עסקאות גדולות על מסדי נתונים גדולים. בעבר, עקב באג, ניתן היה לבצע פעולות מיותרות, שלעתים השפיעו על הביצועים על יישומי Ethereum (Erigon/Akula/Silkworm) ופרויקטים של Binance Chain.

הרבה באגים תוקנו, כולל אלה עבור C++ API ותיקנו בעיות בנייה רבות בתצורות נדירות ואקזוטיות. רשימה מלאה של כל השיפורים המשמעותיים זמינה ב-ChangeLog.

לבסוף, אם אתה מעוניין לדעת יותר על זה, אתה יכול לעיין בפרטים בקישור הבא.


השאירו את התגובה שלכם

כתובת הדוא"ל שלך לא תפורסם. שדות חובה מסומנים *

*

*

  1. אחראי לנתונים: מיגל אנחל גטון
  2. מטרת הנתונים: בקרת ספאם, ניהול תגובות.
  3. לגיטימציה: הסכמתך
  4. מסירת הנתונים: הנתונים לא יועברו לצדדים שלישיים אלא בהתחייבות חוקית.
  5. אחסון נתונים: מסד נתונים המתארח על ידי Occentus Networks (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.