[jboss-cvs] JBossCache/src/org/jboss/cache ...

Manik Surtani manik at jboss.org
Thu Apr 26 10:09:51 EDT 2007


  User: msurtani
  Date: 07/04/26 10:09:51

  Modified:    src/org/jboss/cache  CacheImpl.java
  Log:
  Prevent leaking the list of members externally without proper sync controls.
  
  Revision  Changes    Path
  1.62      +19 -3     JBossCache/src/org/jboss/cache/CacheImpl.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: CacheImpl.java
  ===================================================================
  RCS file: /cvsroot/jboss/JBossCache/src/org/jboss/cache/CacheImpl.java,v
  retrieving revision 1.61
  retrieving revision 1.62
  diff -u -b -r1.61 -r1.62
  --- CacheImpl.java	26 Apr 2007 12:03:07 -0000	1.61
  +++ CacheImpl.java	26 Apr 2007 14:09:51 -0000	1.62
  @@ -315,7 +315,10 @@
       */
      public List<Address> getMembers()
      {
  -      return members;
  +      synchronized (members)
  +      {
  +         return new ArrayList<Address>(members);
  +      }
      }
   
      /**
  @@ -855,8 +858,11 @@
         }
         if (members != null)
         {
  +         synchronized (members)
  +         {
            members.clear();
         }
  +      }
   
         coordinator = false;
   
  @@ -1924,7 +1930,17 @@
            return null;
         }
   
  -      validMembers = mbrs != null ? new Vector<Address>(mbrs) : new Vector<Address>(this.members);
  +      validMembers = null;
  +      if (mbrs != null)
  +         validMembers = new Vector<Address>(mbrs);
  +      else
  +      {
  +         synchronized (members)
  +         {
  +            validMembers = new Vector<Address>(this.members);
  +         }
  +      }
  +
         if (exclude_self && validMembers.size() > 0)
         {
            Object local_addr = getLocalAddress();
  
  
  



More information about the jboss-cvs-commits mailing list