[jbosscache-dev] ReversibleCommands and locking schemes
Manik Surtani
manik at jboss.org
Fri Jun 27 15:12:47 EDT 2008
On 27 Jun 2008, at 18:57, Jason T. Greene wrote:
> Manik Surtani wrote:
>> A sub-interface of Command is ReversibleCommand, which exposes a
>> rollback() method. The purpose of this method is that for commands
>> that change the state of the cache, the command also maintains
>> information on how to undo it's change, and the undo operation is
>> invoked by calling rollback() on the command. A nice, clean way of
>> encapsulating a change and it's reversal.
>> Now this only made sense for pessimistic locking, where changes are
>> made directly on the cache. With optimistic locking, changes are
>> made in a workspace and a rollback is performed by simply throwing
>> away the workspace. MVCC is similar in this regard, where changes
>> are made to a copy of the node, and a rollback is performed by
>> throwing away this new node.
>> So, is rollback() (and the ReversibleCommand interface) tied to
>> pessimistic locking only? And if so, that is a lot of overhead
>> each command stores for the sake of a single locking scheme
>> (especially when those commands are used with Optimistic Locking or
>> MVCC). Should we introduce another set of commands, subclasses to
>> the actual commands themselves, implementing rollback, such that
>> they are used for pessimistic locking, while leaner commands
>> without rollback can be used for the other locking schemes? Or
>> should we just "live with" this overhead until MVCC stabilises and
>> we deprecate/remove pessimistic and optimistic locking altogether?
>
> I would have to look at the code in more detail, but perhaps a per-
> locking style strategy makes sense? In some cases the strategy may
> be "do nothing", or it might not for commands like "move".
The thing is, it is more than just strategy or behaviour wrt handling
a rollback. Currently even in perform the commands collect info with
which to perform a rollback, such as old state being overwritten.
Which is a waste with 2/3rds of our locking strategies. :)
--
Manik Surtani
Lead, JBoss Cache
manik at jboss.org
More information about the jbosscache-dev
mailing list