ඊයේ දවස්වල Buildkite CI පද්ධතියේ අහඹු පරීක්ෂණ දෝෂයක් හේතුවෙන්, ඉතාමත් වැදගත් Redis ක්ලයින්ට් පුස්තකාලයේ මතක දූෂණයක් (use‑after‑free) හෙළි වුණා.
Scalability කණ්ඩායමේ ඉංජිනේරු කළමනාකරු ඩේවිඩ්, CI බිල්ඩ් එකක් අසාර්ථක වීමේ සටහනක් Slack තුළ පළ කළා. එම බිල්ඩ් එකේ අඩංගු වූ විශාල සංඛ්යාතයේ flaky පරීක්ෂණ 15 මිනිත්තු තුළම අවධානයට පත් වුණා. පරීක්ෂණ වල විශ්වාසනීයත්වය 100% සිට 2‑4% දක්වා පහත වැටුණු දිනයන් පරීක්ෂා කිරීමේදී, පසුගිය සිකුරාදා Redis gem එකේ අලුත් කිරීමක් සිදු කර තිබෙන බවක් පෙනී ආවේ.
පළමුව රේස් කොන්දition එකක් හේතුවක් විය හැකියැයි සැක කර, පරීක්ෂණ සකස් කිරීම සහ ඇස්සර්ෂන් අතර sleep එකක් එක් කර බැලුවා. එය ගැටලුව ඉවත් නොකළත්, ගැටලුව WebSocket පණිවිඩයක් පමණක් පසුබැසීමෙන් ඇතිවී තිබේදැයි තහවුරු කිරීමේ පියවරක් වුණා.
ඊළඟ සතියේ, Patrick Robinson සහ තවත් ඉංජිනේරුවරයෙක් එක්ව, 30 මිනිත්තු පමණ ගත කර ගැටලුව නැවත පෙන්වා දෙන්නට සාර්ථක වුණා. ලොග් එකට වැඩි දත්ත එක් කිරීමෙන් ActionCable සහ Redis අතර subscribe කමන්ඩ් එක ActionCable වෙත යවන අතර, Redis පාර්ශවයේ මතකය නිදොස් වීමක් (use‑after‑free) සිදුවූ බව හඳුනා ගත්තා. එම නිසා පරීක්ෂණය අහඹු ලෙස අසාර්ථක වූවා.
මෙම ගැටලුවේ වැදගත්කම කියවන්නේ, මතක දූෂණයක් නිසා අනාගතයේ production පරිසරයේ අත්යවශ්ය සේවාවන් බිඳ වැටීමට ඉඩ ඇති බවයි. Redis වැනි ඉතා වේගවත් කේෂ් සංග්රහකයක් අසාර්ථක වීම, වෙබ් ඇප්ලිකේෂන් එකේ සම්පූර්ණ අඩංගුකම අහිමි කරවිය හැකිය.
ශ්රී ලංකාවට ඇති වැදගත්කම
- සිසුන්ට මතක දූෂණ (memory corruption) සහ flaky පරීක්ෂණ පිළිබඳ වඩා ගැඹුරු අවබෝධයක් ලැබේ.
- ලංකාවේ startups හා ව්යාපාරික සංවර්ධකයින්ට CI/CD පද්ධතියේ රේස් කොන්දition හඳුනා ගැනීමේ වැදගත්කම තේරුම් ගත හැක.
- Redis වැනි open‑source තාක්ෂණයන් භාවිතා කරන කණ්ඩායම් සඳහා, dependancy upgrade කිරීමේදී සවිස්තරාත්මක regression test සැලසුම් කිරීමේ අවශ්යතාවය පැහැදිළි වේ.
අවසානයේ, Buildkite කණ්ඩායම මෙම බග් එක නිවැරදිව සකස් කර, redis-client පුස්තකාලයෙහි නව සංස්කරණයක් නිකුත් කරයි. මෙය තවත් අහඹු පරීක්ෂණ ගැටලුවක් නැතිව CI පද්ධතියේ ස්ථාවරතාවය රැක ගැනීමට විශාල පියවරක් වනු ඇත.