Fuori programma
11-04-2013 19.46.03 GMT+02Il Caching Application Block di MS Enterprise Library fa strani scherzi anche lui...Post tecnico dedicato a chi usa MS Enterprise Library per dotNet.

L'altro giorno ho scoperto una cosa che forse per alcuni sarà anche normale, ma per me assolutamente no.

Prima le circostanze, poi le spiegazioni. Sto lavorando su un'applicazione enterprise che fa largo uso del Caching Application Block.
Dopo alcuni mesi di collaudi e nessuna particolare avvisaglia di malfunzionamento hanno fatto la loro comparsa strani errori che si è scoperto essere dovuti al fatto che l'item che doveva essere in cache, in realtà era restituito NULL.
Non c'erano controlli su questeventualità perchè davo per scontato che dopo aver avuto risposta positiva attraverso il metodo Contains l'oggetto ci fosse punto e basta. 
Invece no, perchè a quanto pare può succedere che nell'intervallo tra la chiamata Contains e la GetData, che lo restituisce, questo possa essare disallocato perchè scaduta la permanenza in cache.

Ora, sono d'accordo sul fatto che in questo intervallo (molto piccolo peraltro, ma la sfiga come si vede è in agguato) l'item possa essere rimosso, magari da un altro thread (non è questo il caso), ma quello che mi lascia sconcertato è che mi aspettavo che la chiamata Contains avesse effetto sulla Sliding Expiration ossia prolungasse la permanenza in cache dell'item in quanto coinvolto implicitamente in un nuovo accesso.
Infatti perchè uno dovrebbe cercare un item se non per estrarlo? E' vero potrebbe appunto farlo per rimuoverlo prima della scadenza della cache, perchè non più valido o aggiornato, ma questa evenienza è molto meno probabile rispetto alla naturale scadenza. E comunque alla fine verrebbe prolungato solo un po' e poi rimosso di forza dalla richiesta.

Considerazioni a parte, l'unica è stata introdurre un controllo ulteriore dopo la restituzione. In alternativa si può introdurre una critical section come suggeriscono qui, ma nel mio caso per varie ragioni non era la migliore soluzione.


data modifica 11-04-2013 21.44.52 GMT+02

#

Non ci sono commentiFeed RSS 2.0 di : Fuori programma, commenti a "Il Caching Application Block di MS Enterprise Library fa strani scherzi anche lui..."
Aggiungi un commento
Mittente : *
Email : 
Web : 
Testo del messaggio : * 
Codice di validazione : * 

otherbit, by Cosimo Carbonelli m. info@otherbit.com p.i. 11743080159
made with OtherWeb