
$Id: todo.txt,v 1.2 2003/11/26 16:48:20 belaban Exp $






               Todo list for Cache/JBoss
               ----------------------------------------
               (Items are in no particular order)


- Remove locks for crashed/left member

- Unit tests for rollbacks (test undo operations)

- Resizing of cache at runtime

- Persistent updates (?): updates are saved in stable storage. This is
  useful for local-DB case where a node goes down and then comes back
  up. This will allow for transfer of the updates, rather than the
  entire database.

- Investigate use of soft refs for cache storage

- Distributed lock manager with movable locks (Sacha):
  We need a distributed lock manager with movable-locks ;)

  If you have the lock locally:
  - you lock locally
  - use the resource
  - you unlock locally

  If you don't have the lock locally:
  - you find where is the remote lock (we can keep a cache)
  - you lock remotely
  - you use the resource
  - you unlock remotely

  If you don't have the lock locally and you "detect" that you are a strong
  user of the lock (the DTM has to detect this), the lock is moved locally
  first and since then you only do local-locks. Very fast.


- Cache should be able to use multiple backend stores stacked in
  interceptor-like fashion, e.g.

         Cache
           |
           |
  ReplicationInterceptor
           |
           |
  PersistentInterceptor
           |
           |
   StatisticsInterceptor

  This should all be configuration-driven.


  Example: any method of the cache would be implemented by a dynamic
  proxy, which converts the typed method into an Invocation. The
  Invocation is then passed on to the first interceptor, which passes
  it on to the next and so on. The last interceptor returns a value
  (if retval is defined) and passes it back up the stack.













                                 Done
                                 ----


- Doco
  (bela Nov 26 2003)

- Periodical updates rather than immediate updates when using
  asynchronous replication (updates are put into a queue).
  (bela May 24 2003)

- Use Bill's AOP stuff to determine when a value has changed. We wouldn't know
  this unless another put() was called.
  (harald April/May 2003)

- Use DynamicProxy to access CacheImpl via JMX: provide strongly typed interface
  for clients of the service, but use JMX to access it
  --> Using MBeanProxy (bela Feb 2003)

- Create CacheMBean from Cache via xdoclet (bela Jan 2003)

- Use XML file to configure cluster properties for Cache
  (Jan 2003)

- Created initial version (bela Dec 31 2002)


