[Javalist] Connection clean

Suller Andras suller.andras at gmail.com
2016. Ápr. 27., Sze, 09:51:58 CEST


Szia!

2016-04-27 15:23 GMT+08:00 József Keresztes <xesj.hu at gmail.com>:
> Sziasztok !
>
> 1. A pool-ból kapott connection-t ha close()-zal zárjuk az természetesen
> semmiféle ResultSet-et, Statement-et nem zár le, ezt ki is próbálhatjátok.

Interneten azt irjak hogy a tranzakcio close/rollback is eldobja a
lezaratlan cursor-okat. Es termeszetesen a connection.close()-nak is
el kellene dobnia oket.
Kiprobalni nem tudom, mert nincs keznel Oracle.


> Annyi a hatása hogy visszakerül a pool-ba. Sőt nekem az a gyanúm ha egy
> nyitott tranzakció van, akkor aki újból kiveszi a pool-ból az tudja
> commit-álni vagy rollback-elni :), de ez utóbbiról azért nem győzödtem még
> meg.

Ez nagyon remelem hogy nem igy van. Ez azert durva biztonsagi kockazat lenne.


> 2. Itt nálunk az Oracle-ben 200 cursor lehet, tegnap tesztelgettem, ez a
> default.
>
> 3. Valóban csak gány megoldások vannak, tegnap a glassfish-nél találtam
> olyan beállítást ami valóban ellenőrzi hogy a pool-ban visszatett
> connection-ban nincsenek lezárva Statement-ek és Resultset-ek, és ha kérjük
> a glassfisht, akkor ezeket el tudja dobni. Erre két beállítás van, az egyik
> hogy mennyi időközönként fusson az ellenőrzés, a másik pedig hogy fusson-e.
> De ez valóban tákolmány szerintem.

Ha production kodban van ez a gondod, akkor nem irigyellek, viszont
akkor alighanem gany megoldas is elfogadhato :) Legalabb ideiglenesen,
amig ki nincs javitva a kod, hogy azert ne doljon ossze a haz.
Probald esetleg lekerdezni a nyitott cursor-okat, peldaul:

 select oc.sql_text, count(*)
   from v$open_cursor oc
   group by oc.sql_text
   having count(*) > 10
   order by count(*) desc;


> 4. Természetesen a hibát úgy lehet produkálni, hogy kivessszük a "rossz"
> connection-t a pool-ból, és ahogy az első ResultSet-et akarjuk nyitni már
> exception keletkezik a túl sok nyitott ResultSet miatt. Ha várunk perceket
> ez a connection akkor is szar lesz és a glassfish soha nem javítja meg (na
> jó, nem vártam vele órákat), kivéve ha a glassfish-ben alkalmazzuk a 3.
> pontot, ami megjavítja:

Amikor talalsz egy ilyen "rossz" connection-t, akkor az osszes tobbi
connection is rossz? Vagy azert van olyan, ami mukodik?

Udv,
Andras


További információk a(z) Javalist levelezőlistáról