Class DirectoryFactory

    • Constructor Detail

      • DirectoryFactory

        public DirectoryFactory()
    • Method Detail

      • doneWithDirectory

        public abstract void doneWithDirectory​(org.apache.lucene.store.Directory directory)
                                        throws IOException
        Indicates a Directory will no longer be used, and when its ref count hits 0, it can be closed. On close all directories will be closed whether this has been called or not. This is simply to allow early cleanup.
        Throws:
        IOException - If there is a low-level I/O error.
      • addCloseListener

        public abstract void addCloseListener​(org.apache.lucene.store.Directory dir,
                                              CachingDirectoryFactory.CloseListener closeListener)
        Adds a close listener for a Directory.
      • create

        protected abstract org.apache.lucene.store.Directory create​(String path,
                                                                    org.apache.lucene.store.LockFactory lockFactory,
                                                                    DirectoryFactory.DirContext dirContext)
                                                             throws IOException
        Creates a new Directory for a given path.
        Throws:
        IOException - If there is a low-level I/O error.
      • createLockFactory

        protected abstract org.apache.lucene.store.LockFactory createLockFactory​(String rawLockType)
                                                                          throws IOException
        Creates a new LockFactory for a given path.
        Parameters:
        rawLockType - A string value as passed in config. Every factory should at least support 'none' to disable locking.
        Throws:
        IOException - If there is a low-level I/O error.
      • exists

        public abstract boolean exists​(String path)
                                throws IOException
        Returns true if a Directory exists for a given path in the underlying (stable) storage and contains at least one file. Note that the existence of a Directory Object as returned by a previous call to the get(java.lang.String, org.apache.solr.core.DirectoryFactory.DirContext, java.lang.String) method (on the specified path) is not enough to cause this method to return true. Some prior user of that Directory must have written & synced at least one file to that Directory (and at least one file must still exist)
        Throws:
        IOException - If there is a low-level I/O error.
      • remove

        public abstract void remove​(org.apache.lucene.store.Directory dir)
                             throws IOException
        Removes the Directory's persistent storage. For example: A file system impl may remove the on disk directory.
        Throws:
        IOException - If there is a low-level I/O error.
      • remove

        public abstract void remove​(org.apache.lucene.store.Directory dir,
                                    boolean afterCoreClose)
                             throws IOException
        Removes the Directory's persistent storage. For example: A file system impl may remove the on disk directory.
        Throws:
        IOException - If there is a low-level I/O error.
      • remove

        public abstract void remove​(String path,
                                    boolean afterCoreClose)
                             throws IOException
        This remove is special in that it may be called even after the factory has been closed. Remove only makes sense for persistent directory factories.
        Parameters:
        path - to remove
        afterCoreClose - whether to wait until after the core is closed.
        Throws:
        IOException - If there is a low-level I/O error.
      • remove

        public abstract void remove​(String path)
                             throws IOException
        This remove is special in that it may be called even after the factory has been closed. Remove only makes sense for persistent directory factories.
        Parameters:
        path - to remove
        Throws:
        IOException - If there is a low-level I/O error.
      • size

        public long size​(org.apache.lucene.store.Directory directory)
                  throws IOException
        Parameters:
        directory - to calculate size of
        Returns:
        size in bytes
        Throws:
        IOException - on low level IO error
      • size

        public long size​(String path)
                  throws IOException
        Parameters:
        path - to calculate size of
        Returns:
        size in bytes
        Throws:
        IOException - on low level IO error
      • move

        public void move​(org.apache.lucene.store.Directory fromDir,
                         org.apache.lucene.store.Directory toDir,
                         String fileName,
                         org.apache.lucene.store.IOContext ioContext)
                  throws IOException
        Override for more efficient moves.

        Intended for use with replication - use carefully - some Directory wrappers will cache files for example.

        Throws:
        IOException - If there is a low-level I/O error.
      • renameWithOverwrite

        public void renameWithOverwrite​(org.apache.lucene.store.Directory dir,
                                        String fileName,
                                        String toName)
                                 throws IOException
        Throws:
        IOException
      • get

        public abstract org.apache.lucene.store.Directory get​(String path,
                                                              DirectoryFactory.DirContext dirContext,
                                                              String rawLockType)
                                                       throws IOException
        Returns the Directory for a given path, using the specified rawLockType. Will return the same Directory instance for the same path.
        Throws:
        IOException - If there is a low-level I/O error.
      • incRef

        public abstract void incRef​(org.apache.lucene.store.Directory directory)
        Increment the number of references to the given Directory. You must call release for every call to this method.
      • isPersistent

        public abstract boolean isPersistent()
        Returns:
        true if data is kept after close.
      • isSharedStorage

        public boolean isSharedStorage()
        Returns:
        true if storage is shared.
      • release

        public abstract void release​(org.apache.lucene.store.Directory directory)
                              throws IOException
        Releases the Directory so that it may be closed when it is no longer referenced.
        Throws:
        IOException - If there is a low-level I/O error.
      • normalize

        public String normalize​(String path)
                         throws IOException
        Normalize a given path.
        Parameters:
        path - to normalize
        Returns:
        normalized path
        Throws:
        IOException - on io error
      • isAbsolute

        public boolean isAbsolute​(String path)
        Parameters:
        path - the path to check
        Returns:
        true if absolute, as in not relative
      • sizeOfDirectory

        public static long sizeOfDirectory​(org.apache.lucene.store.Directory directory)
                                    throws IOException
        Throws:
        IOException
      • empty

        public static boolean empty​(org.apache.lucene.store.Directory dir)
        Delete the files in the Directory
      • searchersReserveCommitPoints

        public boolean searchersReserveCommitPoints()
        If your implementation can count on delete-on-last-close semantics or throws an exception when trying to remove a file in use, return false (eg NFS). Otherwise, return true. Defaults to returning false.
        Returns:
        true if factory impl requires that Searcher's explicitly reserve commit points.
      • getDataHome

        public String getDataHome​(CoreDescriptor cd)
                           throws IOException
        Get the data home folder. If solr.data.home is set, that is used, else base on instanceDir
        Parameters:
        cd - core descriptor instance
        Returns:
        a String with absolute path to data direcotry
        Throws:
        IOException
      • cleanupOldIndexDirectories

        public void cleanupOldIndexDirectories​(String dataDirPath,
                                               String currentIndexDirPath,
                                               boolean afterCoreReload)
      • initCoreContainer

        public void initCoreContainer​(CoreContainer cc)
      • getBaseDir

        protected org.apache.lucene.store.Directory getBaseDir​(org.apache.lucene.store.Directory dir)
      • newDefaultUpdateLog

        public UpdateLog newDefaultUpdateLog()
        Returns a default Update Log instance. UpdateHandler will invoke this method if the solrconfig / plugin info does not specify any ulog class.