lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Uwe Schindler" <...@thetaphi.de>
Subject RE: svn commit: r1040145 - /lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/store/RAMDirectory.java
Date Mon, 29 Nov 2010 21:05:09 GMT
This commit broke backwards in MockRAMDir. A fix would be to change MockRAMDir in backwards
to use reflection to get the Map (like used at another place in MockRAMDir already).

Uwe

-----
Uwe Schindler
H.-H.-Meier-Allee 63, D-28213 Bremen
http://www.thetaphi.de
eMail: uwe@thetaphi.de


> -----Original Message-----
> From: shaie@apache.org [mailto:shaie@apache.org]
> Sent: Monday, November 29, 2010 4:19 PM
> To: commits@lucene.apache.org
> Subject: svn commit: r1040145 -
> /lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/store
> /RAMDirectory.java
> 
> Author: shaie
> Date: Mon Nov 29 15:18:42 2010
> New Revision: 1040145
> 
> URL: http://svn.apache.org/viewvc?rev=1040145&view=rev
> Log:
> LUCENE-2779: Use ConcurrentHashMap in RAMDirectory (3x)
> 
> Modified:
> 
> lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/store/
> RAMDirectory.java
> 
> Modified:
> lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/store/
> RAMDirectory.java
> URL:
> http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/
> java/org/apache/lucene/store/RAMDirectory.java?rev=1040145&r1=1040144
> &r2=1040145&view=diff
> ==========================================================
> ====================
> ---
> lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/store/
> RAMDirectory.java (original)
> +++
> lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/store/
> RAMDirectory.java Mon Nov 29 15:18:42 2010
> @@ -20,8 +20,8 @@ package org.apache.lucene.store;
>  import java.io.IOException;
>  import java.io.FileNotFoundException;
>  import java.io.Serializable;
> -import java.util.HashMap;
> -import java.util.Set;
> +import java.util.Map;
> +import java.util.concurrent.ConcurrentHashMap;
>  import java.util.concurrent.atomic.AtomicLong;
> 
>  import org.apache.lucene.index.IndexFileNameFilter;
> @@ -36,7 +36,7 @@ public class RAMDirectory extends Direct
> 
>    private static final long serialVersionUID = 1l;
> 
> -  protected HashMap<String,RAMFile> fileMap = new
> HashMap<String,RAMFile>();
> +  protected Map<String,RAMFile> fileMap = new
> ConcurrentHashMap<String,RAMFile>();
>    protected final AtomicLong sizeInBytes = new AtomicLong();
> 
>    // *****
> @@ -83,25 +83,16 @@ public class RAMDirectory extends Direct
>    }
> 
>    @Override
> -  public synchronized final String[] listAll() {
> +  public final String[] listAll() {
>      ensureOpen();
> -    Set<String> fileNames = fileMap.keySet();
> -    String[] result = new String[fileNames.size()];
> -    int i = 0;
> -    for(final String fileName: fileNames)
> -      result[i++] = fileName;
> -    return result;
> +    return fileMap.keySet().toArray(new String[0]);
>    }
> 
>    /** Returns true iff the named file exists in this directory. */
>    @Override
>    public final boolean fileExists(String name) {
>      ensureOpen();
> -    RAMFile file;
> -    synchronized (this) {
> -      file = fileMap.get(name);
> -    }
> -    return file != null;
> +    return fileMap.containsKey(name);
>    }
> 
>    /** Returns the time the named file was last modified.
> @@ -110,12 +101,10 @@ public class RAMDirectory extends Direct
>    @Override
>    public final long fileModified(String name) throws IOException {
>      ensureOpen();
> -    RAMFile file;
> -    synchronized (this) {
> -      file = fileMap.get(name);
> -    }
> -    if (file==null)
> +    RAMFile file = fileMap.get(name);
> +    if (file == null) {
>        throw new FileNotFoundException(name);
> +    }
>      return file.getLastModified();
>    }
> 
> @@ -125,12 +114,10 @@ public class RAMDirectory extends Direct
>    @Override
>    public void touchFile(String name) throws IOException {
>      ensureOpen();
> -    RAMFile file;
> -    synchronized (this) {
> -      file = fileMap.get(name);
> -    }
> -    if (file==null)
> +    RAMFile file = fileMap.get(name);
> +    if (file == null) {
>        throw new FileNotFoundException(name);
> +    }
> 
>      long ts2, ts1 = System.currentTimeMillis();
>      do {
> @@ -151,19 +138,18 @@ public class RAMDirectory extends Direct
>    @Override
>    public final long fileLength(String name) throws IOException {
>      ensureOpen();
> -    RAMFile file;
> -    synchronized (this) {
> -      file = fileMap.get(name);
> -    }
> -    if (file==null)
> +    RAMFile file = fileMap.get(name);
> +    if (file == null) {
>        throw new FileNotFoundException(name);
> +    }
>      return file.getLength();
>    }
> 
> -  /** Return total size in bytes of all files in this
> -   * directory.  This is currently quantized to
> -   * RAMOutputStream.BUFFER_SIZE. */
> -  public synchronized final long sizeInBytes() {
> +  /**
> +   * Return total size in bytes of all files in this directory. This is
> +   * currently quantized to RAMOutputStream.BUFFER_SIZE.
> +   */
> +  public final long sizeInBytes() {
>      ensureOpen();
>      return sizeInBytes.get();
>    }
> @@ -172,14 +158,15 @@ public class RAMDirectory extends Direct
>     * @throws IOException if the file does not exist
>     */
>    @Override
> -  public synchronized void deleteFile(String name) throws IOException {
> +  public void deleteFile(String name) throws IOException {
>      ensureOpen();
>      RAMFile file = fileMap.remove(name);
> -    if (file!=null) {
> -        file.directory = null;
> -        sizeInBytes.addAndGet(-file.sizeInBytes);
> -    } else
> +    if (file != null) {
> +      file.directory = null;
> +      sizeInBytes.addAndGet(-file.sizeInBytes);
> +    } else {
>        throw new FileNotFoundException(name);
> +    }
>    }
> 
>    /** Creates a new, empty file in the directory with the given name. Returns
> a stream writing this file. */
> @@ -187,14 +174,12 @@ public class RAMDirectory extends Direct
>    public IndexOutput createOutput(String name) throws IOException {
>      ensureOpen();
>      RAMFile file = newRAMFile();
> -    synchronized (this) {
> -      RAMFile existing = fileMap.get(name);
> -      if (existing!=null) {
> -        sizeInBytes.addAndGet(-existing.sizeInBytes);
> -        existing.directory = null;
> -      }
> -      fileMap.put(name, file);
> +    RAMFile existing = fileMap.remove(name);
> +    if (existing != null) {
> +      sizeInBytes.addAndGet(-existing.sizeInBytes);
> +      existing.directory = null;
>      }
> +    fileMap.put(name, file);
>      return new RAMOutputStream(file);
>    }
> 
> @@ -211,12 +196,10 @@ public class RAMDirectory extends Direct
>    @Override
>    public IndexInput openInput(String name) throws IOException {
>      ensureOpen();
> -    RAMFile file;
> -    synchronized (this) {
> -      file = fileMap.get(name);
> -    }
> -    if (file == null)
> +    RAMFile file = fileMap.get(name);
> +    if (file == null) {
>        throw new FileNotFoundException(name);
> +    }
>      return new RAMInputStream(file);
>    }
> 
> 



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


Mime
View raw message