You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by ar...@apache.org on 2005/05/13 20:24:31 UTC

cvs commit: db-ojb/src/doc/forrest/src/documentation/content/xdocs/docu/guides objectcache.xml

arminw      2005/05/13 11:24:31

  Modified:    contrib/src Tag: OJB_1_0_RELEASE ObjectCacheOSCacheImpl.java
               src/doc/forrest/src/documentation/content/xdocs/docu/guides
                        Tag: OJB_1_0_RELEASE objectcache.xml
  Log:
  fix by Jacques Desmazieres
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.1.4.3   +14 -2     db-ojb/contrib/src/ObjectCacheOSCacheImpl.java
  
  Index: ObjectCacheOSCacheImpl.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/contrib/src/ObjectCacheOSCacheImpl.java,v
  retrieving revision 1.1.4.2
  retrieving revision 1.1.4.3
  diff -u -r1.1.4.2 -r1.1.4.3
  --- ObjectCacheOSCacheImpl.java	7 Feb 2005 20:52:18 -0000	1.1.4.2
  +++ ObjectCacheOSCacheImpl.java	13 May 2005 18:24:31 -0000	1.1.4.3
  @@ -48,11 +48,20 @@
       {
           try
           {
  +            /*
  +            Actually, OSCache sends notifications (Events) only on flush
  +            events. The putInCache method do not flush the cache, so no event is sent.
  +            The ObjectCacheOSCacheInternalImpl should force OSCache to flush the entry
  +            in order to generate an event. This guarantee that other nodes always
  +            in sync with the DB.
  +            Alternative a non-indefinite refresh-period could be used in conjunction
  +            with optimistic-locking for persistent objects.
  +            */
  +            remove(oid);
               admin.putInCache(oid.toString(), obj);
           }
           catch(Exception e)
           {
  -            admin.cancelUpdate(oid.toString());
               log.error("Error while try to cache object: " + oid, e);
           }
       }
  @@ -88,19 +97,22 @@
   
       public Object lookup(Identity oid)
       {
  +        Cache cache = admin.getCache();
           try
           {
  -            return admin.getFromCache(oid.toString(), REFRESH_PERIOD);
  +            return cache.getFromCache(oid.toString(), REFRESH_PERIOD);
           }
           catch(NeedsRefreshException e)
           {
               // not found in cache
               if(log.isDebugEnabled()) log.debug("Not found in cache: " + oid);
  +            cache.cancelUpdate(oid.toString());
               return null;
           }
           catch(Exception e)
           {
               log.error("Unexpected error when lookup object from cache: " + oid, e);
  +            cache.cancelUpdate(oid.toString());
               return null;
           }
       }
  
  
  
  No                   revision
  No                   revision
  1.1.2.5   +15 -3     db-ojb/src/doc/forrest/src/documentation/content/xdocs/docu/guides/objectcache.xml
  
  Index: objectcache.xml
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/doc/forrest/src/documentation/content/xdocs/docu/guides/objectcache.xml,v
  retrieving revision 1.1.2.4
  retrieving revision 1.1.2.5
  diff -u -r1.1.2.4 -r1.1.2.5
  --- objectcache.xml	12 Mar 2005 01:07:25 -0000	1.1.2.4
  +++ objectcache.xml	13 May 2005 18:24:31 -0000	1.1.2.5
  @@ -724,11 +724,20 @@
       {
           try
           {
  +            /*
  +            Actually, OSCache sends notifications (Events) only on flush
  +            events. The putInCache method do not flush the cache, so no event is sent.
  +            The ObjectCacheOSCacheInternalImpl should force OSCache to flush the entry
  +            in order to generate an event. This guarantee that other nodes always
  +            in sync with the DB.
  +            Alternative a non-indefinite refresh-period could be used in conjunction
  +            with optimistic-locking for persistent objects.
  +            */
  +            remove(oid);
               admin.putInCache(oid.toString(), obj);
           }
           catch(Exception e)
           {
  -            admin.cancelUpdate(oid.toString());
               log.error("Error while try to cache object: " + oid, e);
           }
       }
  @@ -764,19 +773,22 @@
   
       public Object lookup(Identity oid)
       {
  +        Cache cache = admin.getCache();
           try
           {
  -            return admin.getFromCache(oid.toString(), REFRESH_PERIOD);
  +            return cache.getFromCache(oid.toString(), REFRESH_PERIOD);
           }
           catch(NeedsRefreshException e)
           {
               // not found in cache
               if(log.isDebugEnabled()) log.debug("Not found in cache: " + oid);
  +            cache.cancelUpdate(oid.toString());
               return null;
           }
           catch(Exception e)
           {
               log.error("Unexpected error when lookup object from cache: " + oid, e);
  +            cache.cancelUpdate(oid.toString());
               return null;
           }
       }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org