help: az olvaso rekordja nem hozzaferheto
Teglas_Gyorgy
teglasgy at INFOKER.HU
2005. Júl. 21., Cs, 14:59:33 CEST
Udv mindenkinek!
Lajko Csaba irta:
>Lenne egy olyan kis gondom, hogy egy olvasonak kellene hosszabitani, de
>a hosszabitas meghivasakor a "az olvaso rekordja nem hozzaferheto
>(2)"kedves uzenetet kapom. Tovabb tudok menni, de aztan mar sok mindent
>nem tudok csinalni. a kotet kijelolese utan a Hosszabitas gombra
>kattintva a "a rekordot eppen modoitja valaki" uzenet koszon vissza,
>pedig senki mas nem bantja azt a rekordot. Tud vki okos otlettel
>szolgalni? Elore is koszonom
Az uzenetet akkor kuldi a tartozasokat aktualizalo TARTAKT modul, ha
sikerult ugyan beolvasnia az olvaso rekordjat, de egy masik modul azt
modositasra lefoglalta, es (meg) nem engedte el a foglalast.
A TARTAKT modult a kolcsonzes, visszavetel/hosszabbitas es az olvasoi
allapot modulok inditjak olyankor, ha:
- van az olvasonak kolcsonzese, es
- a kerdeses napon meg nem futott a TARTAKT modul.
Fentiekbol kovetkezik, hogy az olvasoval kapcsolatos elso explicit muvelet
a hosszabbitas kellett legyen, amikor a kerdeses hiba jelentkezett, tovabba,
hogy a kerdeses napon valaki korabban valamilyen, a kerdeses olvaso
modositasaval jaro egyeb muveletet (pl: olvasojegy ervenyesitese, elozo
olvaso altal visszahozott peldanynak a kerdeses olvaso szamara torteno
felretetele, elojegyzes torlese, felretett peldanyok felszabaditasa,
olvaso adatainak modositasa, elevult elojegyzesek torlese, stb)
kezdemenyezett - nem feltetlenul ugyanazon a munkaallomason. Namarmost:
vagy lefutott rendben ez a bizonyos muvelet, de programhiba miatt tovabbra
is fogva tartotta az olvaso rekordjat, vagy valamilyen okbol ez a muvelet
hibaval jart, azaz nem futott le vegig, es ezert maradt fogva az olvaso
rekordja.
A ket eset kozott esetleg kulonbseget lehet tenni aszerint, hogy elegendo-e
annak a munkaallomasnak az ujrainditasa, amelyen vegzett muvelet erintette
a hosszabbitast megelozoen az olvasot, vagy csak a szerver ujrainditasa
segit. (Persze, ha implicite erintette valamilyen muvelet az olvaso
rekordjat, nem lehet tudni, hogy melyik munkaallomas volt az!) Ha elegendo
a munkaallomas(ok) ujrainditasa, ez arra utal, hogy az a modul, amelyik fogva
tartja az olvaso rekordjat, bent csucsul a kerdeses munkaallomason, es vagy
azert, mert meg sem kisereltek kilepni belole, vagy programhiba miatt nem
engedte el a rekordot. Kilepeskor ugyanis minden, a kerdeses munkaallomason
futo modul futtatasa veget er, es az ilyenkor alkalmazott alapelv szerint
minden olyan rekord felszabaditasa meg kellene tortenjen, amelyet a kerdeses
munkaallomas fogva tart. Ha viszont a munkaallomasok ujrainditasa nem segit,
csak a szerver ujrainditasa, akkor csak az lehet a hiba, hogy az a modul,
amelyik fogva tartotta a rekordot, mar reg kilepett, es nem engedte el az
osszes altala fogva tartott rekordot (mert nem a fenti alapelvnek megfeleloen
lett programozva - ez is hiba persze). Vegigneztem a rendszert, es elsore ugy
tunik: egyetlen olyan modul van, amelyik olvaso rekorddal foglalkozik, es nem
ugy lep ki, hogy egyuttal rendelkezne az osszes altala fogva tartott rekord
elengedeserol: ez az "Elevult elojegyzesek torlese" modul. Amugy, menet
kozben ez is elenged minden, altala lefoglalt rekordot, de ha akarmilyen
oknal fogva nem sikerul a rekord modositasa (amelynek a kereteben a rekord
elengedese is megtortenne), akkor ez okozhatja a rekord bentragadasat.
Ha megkapom a kerdeses hosszabbitasi kiserlet elotti valamelyik - lehetoleg
az utolso - adatbasi-mentest, es az azota keletkezett naplo(ka)t, tovabba a
kerdeses hosszabbitasban erintett olvaso azonositojat es a sikertelen muvelet
hozzavetoleges idopontjat, megprobalom kideriteni, hogy mi tortenhetett.
Teglas Gyorgy
InfoKer Szovetkezet
teglasgy at infoker.hu
További információk a(z) Textlib levelezőlistáról