අපේ කණ්ඩායම PostgreSQL පසුබිමක් සමඟ බහු-කාරක (multi‑tenant) වේදිකාවක් ගොඩනැගීමට යන අතර, 76 වගුවලින් සමන්විත දත්ත සමුදායක් සහ 1,140 ට වැඩි පරීක්ෂණයක් තිබුණි. GitHub Actions මඟින් PR එකකට වාරයක් පුරා පරීක්ෂණ ධාවනය කරමින්, සියල්ල ලෝකලේ පරික්ෂා කර තිබුණද, CI එක හදිසිව 6‑පැය සීමාවට පත් වීමෙන් 36 පැය පුරා නවත්වී ගියා.
මෙම ප්රශ්නයේ මූලික හේතුව tests/setup.js ෆයිලයේ beforeEach බ්ලොක් එකේ තිබුණු කේතයයි. එය පරීක්ෂණයක් ආරම්භ වන විටම සියලු වගු TRUNCATE … CASCADE කරමින් පිරිසිදු කිරීමේ උත්සාහයක් කළේය. 76 වගු × 1,140 පරීක්ෂණ = 86,640 ක්රියාකාරී truncations, ඒවා PostgreSQL එකට වගු අගුලු දැමීම, විදේශ කී සම්බන්ධතා ගණනය කිරීම, හා ලොක් ලබා දීම වැනි බරපතල ක්රියාවලියක් සිදු කරවීය.
මෙම ගැටලුව නිසා CI බජට් වැඩි වීම, සංවර්ධකයින්ට අධික කාලය වැයවීම, සහ නිෂ්පාදන ප්රවේශය මන්දගාමී වීම යන අතුරුඵල ඇතිවිය. තවත් වැදගත් කරුණක් නම්, දේශීය පරිසරයේ පරීක්ෂණය සාමාන්යයෙන් කුඩා කොටස් වලින් ධාවනය කරන බැවින් මෙම ගැටලුව CI පමණක් පෙන්වා දුන්නා.
ශ්රී ලංකාවට ඇති වැදගත්කම
- සංවර්ධකයින් – CI/CD පද්ධති සැකසීමේදී කුඩා කේතයක්ද වඩාත් විශාල ප්රතිඵල ගෙන දෙන බව අවබෝධය ලැබේ.
- සිසුන් – පරීක්ෂණ සැකසීමේ හොඳම පුරුදු (beforeAll, unique data, transaction rollback) ගැන ඉගෙන ගනිමින්, ගෝලීය මට්ටමේ කුසලතා වර්ධනය කර ගත හැක.
- ව්යාපාර – CI කාලය හා වියදම් අඩු කර, නිෂ්පාදන නිකුතුවේ වේගය වැඩි කර, ගනුදෙනුකරුවන්ට වේගවත් සේවාවක් ලබා දිය හැක.
අවසන් වශයෙන්, කණ්ඩායම beforeAll භාවිතා කර වගු එක්වරම සකස් කිරීම, පරීක්ෂණ දත්ත සඳහා අද්විතීය ID භාවිතය, සහ GitHub Actions හි පියවර සීමා (15 මිනිත්තු) සකස් කිරීමෙන් මෙම ගැටලුව ඉක්මණින් විසඳා ගත්තා. ඉදිරියේදී මෙවැනි අධික පරිත්යාගයන් වැලැක්වීමට, සෑම පරීක්ෂණයක්ම transaction තුළ රඳවා, අවසානයේ rollback කිරීම වඩාත් කාර්යක්ෂම වේ.