[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE : RE : RE : RE : [sdx-developers] DocumentBase et Cie : dernierscommi
From: |
Rasik Pandey |
Subject: |
RE : RE : RE : RE : [sdx-developers] DocumentBase et Cie : dernierscommits |
Date: |
Mon, 5 Jan 2004 17:02:18 +0100 |
Salut,
>
>> >dbe = getEntity(id, rs);
>> >addEntityToCache(dbe);
>> >
>> >est arrêté ici, la ligne suivante :
>
>La voici :
>return dbe;
>
>> >*peut* renvoyer un résultat faux si l'entité a été détruite.
>> >Idem pour
>> >Update et pour Search. Me trompè-je ?
>>
>> On n'aura pas un SDXException?
>
>Euh... je ne crois pas. Les variables stockent des références (des
>pointeurs) donc :
>
>dbe = getEntity(id, rs) = a_reference
>->arrêt du 1er thread
>->destruction de l'entité par un 2ème thread
>->reprise du 1er thread
>->restitution de la pile du 1er thread et donc de a_reference
>return a_reference
>
>Or... a_reference n'est plus valide à ce moment là.
>Il n'est pas dit que le ramasse-miettes ait fait son travail entre le
>moment où l'entité *physique* est détruite et celui où la pile du 1er
>thread est restituée.
>
>Même chose pour releaseConnection : il faudrait la synchroniser et
>forcer son invalidation.
>
>if (conn != null) {
> conn.close();
> conn = null
>}
Oui, on est d'accord mais pourrait-on avoir plusieurs instances
AbstractJDBCDatabase. Dans ce cas le problème de synchronisation est
plus global, non.....?
abstractJDBCDatabaseA.getEntity(entity);
abstractJDBCDatabaseB.delete(entity);
On ne devrait pas y arriver dan l'état actuel de SDX, mais ce n'est pas
impossible...
Rasik