
Jepsen גילה 96 בעיות ב־ParticleDB בגרסאות 1.1.4 עד 1.1.18
מבחן Jepsen של ParticleDB בגרסאות 1.1.4 עד 1.1.18.11.rc-22 מצא 96 בעיות במסד הנתונים, מקריסות ומבוי סתום ועד אובדן כתיבות מאושרות ואנומליות בתוצאות שאילתות, למרות טענות ל־ACID מלא.
Jepsen בדק את ParticleDB בגרסאות 1.1.4 עד 1.1.18.11.rc-22 ומצא 96 בעיות במסד הנתונים, החל מקריסות וקיפאון וכלה באובדן נתונים ובתוצאות שאילתות אנומליות. רוב הבעיות הופיעו במופעים תקינים של צומת יחיד, עם לקוח יחיד וללא תקלות. עד גרסה 1.1.18.11.rc-22 נראו כל הבעיות למעט עשר כפתורות, אך ParticleDB המשיך לאבד כתיבות מאושרות במהלך פעולה רגילה עם מצב occ, ברירת המחדל של מצבי הטרנזקציה, ואיפשר אנומליות פנימיות ו־Lost Update עם serializable, ההגדרה החזקה ביותר שלו.
טענות בטיחות ותיעוד
ParticleDB הוא מסד נתונים רב־מודלי לעומסי AI, המציע SQL טרנזקציוני, מאגר מפתח־ערך, חיפוש וקטורי, אנליטיקה חיה ופונקציות מוגדרות משתמש בשם Particles. הוא תומך בפרוטוקולי Postgres ו־Redis וכן בממשקי gRPC ו־HTTP2, ונכתב ב־Rust. דף הבית הציג ACID מלא והוכחת TLA+, אך במהלך שיתוף הפעולה לא היה זמין מפרט TLA+. התיעוד גם לא היה עקבי בנוגע למצבי סנכרון WAL ולמצבי טרנזקציה, והתעלם מפקודות SET TRANSACTION ISOLATION LEVEL או דחה אותן.
היקף הבדיקה
הבדיקות רצו על צמתי Debian 13 במכולות ובמכונות וירטואליות של EC2, באמצעות עומסי Jepsen ועומסים חדשים שנבנו במיוחד ל־ParticleDB. המערכת יכלה לדמות קריסות תהליכים, אובדן כתיבות שטרם עברו fsync בעזרת LazyFS, וקיטוע או השחתה של קבצי דיסק. נבדקו כל שלושת מצבי סנכרון WAL וכל אחד ממצבי הטרנזקציה. שכפול לא נבדק, משום שהגרסאות שסופקו לא תמכו בו.
ממצאים
הבעיות כללו ביצועים גרועים של table-2pl, קריסות מסתוריות ספונטניות, קיפאון, תכונות Postgres חסרות, תשובות פגומות לשאילתות מוכנות (prepared statements), פערי אימות, ובאגים בפרדיקטים כגון SELECT שמתעלם מ־WHERE, WHERE 4 = 5 שמחזיר שורה, ותוצאות חסרות פשר של SELECT בתוך טרנזקציות. Orkes שחררה מאז את 1.1.19-rc.13 וטוענת שהיא פותרת את כל הבעיות שנותרו ושנדונו בדוח. המחקר מומן על ידי Orkes, Inc.
מקורות: Lobsters
SiTech — פיתוח אתרים בכוח ה-AI
אנחנו בונים אתרים מהירים ומודרניים ומשלבים AI בתהליכי עבודה אמיתיים. יש לכם פרויקט או שאלה? נשמח לעזור.