I have a need for some atomic types to be persistent so they survive a full 
cluster restart.  We are using Ignite.Net 2.10

My plan is to

*         create a persistent region

*         create an ICache<string, object> or ICache<string, TV> for each value 
type.  The latter will be easier to add Sql support in case I ever want to dig 
around via SQL Api for support/debugging.

I see at least 3 different ways to make the operations atomic:


*         Use explicit locks on each key.  The main issue with this approach is 
getting lock requests right in the presence of failures (exceptions).  Nothing 
new or ground breaking but a good amount of boiler plate to correctly manage.

*         Use transactions.  The code for this is pretty clean.  Do I need to 
put a simple ICache<string, long>.Put() inside a transaction?

*         Use EntryProcessor.  It seems like this would lock the key while the 
entry processor is running but the documentation doesn't make that explicit.

What's the preferred way of implementing this?

--
Kathryn Hogg
Principal Technology Architect

Reply via email to