Jó napot, jó kódolást!
Kedves mindenki! Elérkeztünk egy fordulóponthoz. Megint. Mint csapat, mint szakemberek halmaza, tekintsen mindenki saját szájíze szerint a fogalomra.
Eljött az az idő, amikor már annyira összetett rendszert fejlesztünk, hogy nem lehetünk figyelmetlenek vagy felületesek sem a tesztelése, sem a fejlesztése, sem a tervezése során.
Pontosabban, már nagyon régen elért minket ez a vég, csak még mindig nem alkalmazkodtunk az új kihíváshoz.
Nos, megelégelve, hogy szinte mindenki bele-bele kap dolgokba, és ezzel alkalomadtán több kárt okoz, mint hasznot, elhatároztam, hogy ha valaki miatt a rendszeres napi buildek nem futnak le,
azt vegytiszta motivációs szándékkal közkinccsé teszem, remélve, hogy mindenki okul belőle - az is, aki elkövette, és azok is, akik még tapasztalatlanok az adott területen.
Fogadjátok hát sok szeretettel és megértéssel első versenyzőnket, aki minden bizonnyal nem fog örülni a hírnévnek.
Mai buidbraker: Gábor
Előzetesen kérem, hogy ne hordja fenn senki az orrát a triviális, valószínűleg puszta sietségből fakadó hiba láttán, mivel 22:30 körül, vagyis jóval a munkaidőn kívül történt a patch (ami pedig elkötelezettség, így mindenkitől dícséretes).
A következő (bele)javítás volt a reggeli build break oka:
Adott volt egy trigger szkriptje, amiben ezt:
INSERT INTO @Result
SELECT DISTINCT [LeftID], [RightID], [Level] FROM @Tmp AS T
WHERE NOT EXISTS (SELECT * FROM [SomeFancyTableNameSpottedByBence] TC WHERE TC.[LeftID] = T.[LeftID] AND TC.[RightID] = T.[RightID]);
INSERT INTO [SomeFancyTableNameSpottedByBence]
SELECT DISTINCT [LeftID], [RightID], [Level] FROM @Tmp AS T
WHERE NOT EXISTS (SELECT * FROM [SomeFancyTableNameSpottedByBence] TC WHERE TC.[LeftID] = T.[LeftID] AND TC.[RightID] = T.[RightID]);
javította erre:
INSERT INTO @Result
SELECT [LeftID], [RightID], MIN([Level]) FROM @Tmp AS T
WHERE NOT EXISTS (SELECT * FROM [SomeFancyTableNameSpottedByBence] TC WHERE TC.[LeftID] = T.[LeftID] AND TC.[RightID] = T.[RightID]);
GROUP BY [LeftID], [RightID]
INSERT INTO [SomeFancyTableNameSpottedByBence]
SELECT [LeftID], [RightID], MIN([Level]) FROM @Tmp AS T
WHERE NOT EXISTS (SELECT * FROM [SomeFancyTableNameSpottedByBence] TC WHERE TC.[LeftID] = T.[LeftID] AND TC.[RightID] = T.[RightID]);
GROUP BY [LeftID], [RightID]
Onnan sejtem, hogy tesztelés nélkül, hogy szintaktikailag helytelen. Aki önállóan megtalálta a hibát, az nem kap pirospontot – ez a mi szintünkön már elvárható.
Aki nem látja a szembetűnő pontosvesszőt a szkriptek GROUP BY része előtt, az igyekezzen jobban.
A változás a 14160-as rev. volt, javítottam.
Tanulság
Úgy gondolom, hogy a fenti „benézés” elkerülhető lett volna egy áttekintő pillantással, hogy minden tényleg a helyén van-e.
De végsősoron egy adatbázis-létrehozási teszt is megtette volna, hiszen rögtön a folyamat elején (kb. fél perccel CCNET indítás után) kiderült volna a turpisság.
A reggeli build most különösen fontos lett volna a VA prozsé miatt. Hosszú-hosszú ideig futott volna munkaidő előtt (pl 27 perc csak a replikációs tesztek).
Óva intek mindenkit attól, hogy kárörömködjön, hiszen előbb vagy utóbb mindenki követ el hibát – és akár az ő neve is szerepelhet egy ilyen levélben.