Licence Creative Commons

Atomární bestie! (Nudná poznámka o COMMITech)

03. 02. 2014
Poslední půlhodinu jsem se bil s tím, že triviální SQL dotaz na databázi ve tvaru
Citace:
UPDATE cover01.coverT SET CHAR='CPAVYKOALA' WHERE PKEY = 19;
SELECT * FROM coverT;
(mé UID bylo zaměněno za covera, přirozeně)
způsobí, že UPDATE projde, ale SELECT spadne:
Citace:
UPDATE cover01.coverT SET CHAR='CPAVYKOALA' WHERE PKEY = 19;
DSNT400I SQLCODE = 000, SUCCESSFUL EXECUTION
SELECT * FROM coverT;
BPA0054I: PROCESS TIMED-OUT AFTER 02 RETRY ATTEMPTS.
DSNT408I SQLCODE = -911, ERROR: THE CURRENT UNIT OF WORK HAS BEEN
ROLLED BACK DUE TO DEADLOCK OR TIMEOUT.
REASON 00C9008E, TYPE
OF RESOURCE 00000302, AND RESOURCE NAME coverDB .coverTS
.X'000002' (...)
BPA0012E: DB2 SQL/DDL ERROR HAS OCCURRED - ROLLBACK ISSUED.
RETCODE = 8
Nepochopitelné, že? Jak může zfailovat blbý SELECT, když UPDATE předtím projde?
Inu, protože enterprise legacy systém. Vylistoval jsem si chybovou hlášku:
Citace:
00C9008E
Explanation
A lock request for the resource identified by NAME could not be granted, and
the request waited for a period longer than the maximum specified by the
installation.
A po 10 minutách mi to zčista jasna došlo: enterprise databázový systém je v interaktivním módu explicitně atomární. Takže pokud onen UPDATE explicitně, příkazem neroolbacknu nebo necommituju, celá transakce je v neukončeném stavu, nad tabulkou coverT visí LOCK a SELECT se k ní ním pádem nedostane. Takto to naopak projde za vteřinu:
Citace:
UPDATE cover01.coverT SET CHAR='CPAVYKOALA' WHERE PKEY = 19;
COMMIT;
SELECT * FROM coverT;
A na tomhle debilním detailu jsem hnil půl hodiny a že se chystal, že si budu stěžovat do konference, kdo že to zatěžuje subsystém, že se na něm nezvládá pustit ani triviální SELECT.
Tak si to znamenám na blag (pamatujete? Slouží mi i jako zápisník...), abych na to pokud možno již nikdy nezapoměl.
Ach, ano, to mi připomíná, že jsem chtěl na blag dodělat, aby se některé posty sice vypisovaly, ale nespamovaly do RSS. No, to až někdy příště.


Vzkaz autoru

Na článek můžete reagovat použitím následujícího formuláře.
Váš komentář:

Váš e-mail (očekáváte-li reakci z mé strany):

Níže prosím opište dvě zdeformovaná slova z obrázku do rámečku pod nimi.
Jedná se o ochranu proti zasílání spamu, protože počítačoví roboti ona slova nedokáží rozluštit. Pokud je nedokážete rozluštit ani vy, kliknutím na ikonku reproduktoru se vám přehrají.