databájt 2010.07.12. 09:28

First blood

 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. 

Szólj hozzá!

A bejegyzés trackback címe:

https://dotnot.blog.hu/api/trackback/id/tr144295540

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása