Class RepositoryCache

java.lang.Object
org.eclipse.jgit.lib.RepositoryCache

public class RepositoryCache extends Object
Cache of active Repository instances.
  • Field Details

  • Constructor Details

    • RepositoryCache

      private RepositoryCache()
  • Method Details

    • open

      Open an existing repository, reusing a cached instance if possible.

      When done with the repository, the caller must call Repository.close() to decrement the repository's usage counter.

      Parameters:
      location - where the local repository is. Typically a RepositoryCache.FileKey.
      Returns:
      the repository instance requested; caller must close when done.
      Throws:
      IOException - the repository could not be read (likely its core.version property is not supported).
      RepositoryNotFoundException - there is no repository at the given location.
    • open

      public static Repository open(RepositoryCache.Key location, boolean mustExist) throws IOException
      Open a repository, reusing a cached instance if possible.

      When done with the repository, the caller must call Repository.close() to decrement the repository's usage counter.

      Parameters:
      location - where the local repository is. Typically a RepositoryCache.FileKey.
      mustExist - If true, and the repository is not found, throws RepositoryNotFoundException. If false, a repository instance is created and registered anyway.
      Returns:
      the repository instance requested; caller must close when done.
      Throws:
      IOException - the repository could not be read (likely its core.version property is not supported).
      RepositoryNotFoundException - There is no repository at the given location, only thrown if mustExist is true.
    • register

      public static void register(Repository db)
      Register one repository into the cache.

      During registration the cache automatically increments the usage counter, permitting it to retain the reference. A RepositoryCache.FileKey for the repository's Repository.getDirectory() is used to index the repository in the cache.

      If another repository already is registered in the cache at this location, the other instance is closed.

      Parameters:
      db - repository to register.
    • close

      public static void close(@NonNull Repository db)
      Close and remove a repository from the cache.

      Removes a repository from the cache, if it is still registered here, and close it.

      Parameters:
      db - repository to unregister.
    • unregister

      public static void unregister(Repository db)
      Remove a repository from the cache.

      Removes a repository from the cache, if it is still registered here. This method will not close the repository, only remove it from the cache. See close(Repository) to remove and close the repository.

      Parameters:
      db - repository to unregister.
      Since:
      4.3
    • unregister

      public static void unregister(RepositoryCache.Key location)
      Remove a repository from the cache.

      Removes a repository from the cache, if it is still registered here. This method will not close the repository, only remove it from the cache. See close(Repository) to remove and close the repository.

      Parameters:
      location - location of the repository to remove.
      Since:
      4.1
    • getRegisteredKeys

      public static Collection<RepositoryCache.Key> getRegisteredKeys()
      Get the locations of all repositories registered in the cache.
      Returns:
      the locations of all repositories registered in the cache.
      Since:
      4.1
    • isCached

      static boolean isCached(@NonNull Repository repo)
    • clear

      public static void clear()
      Unregister all repositories from the cache.
    • clearExpired

      static void clearExpired()
    • reconfigure

      static void reconfigure(RepositoryCacheConfig repositoryCacheConfig)
    • configureEviction

      private void configureEviction(RepositoryCacheConfig repositoryCacheConfig)
    • openRepository

      private Repository openRepository(RepositoryCache.Key location, boolean mustExist) throws IOException
      Throws:
      IOException
    • registerRepository

      private void registerRepository(RepositoryCache.Key location, Repository db)
    • unregisterRepository

      private Repository unregisterRepository(RepositoryCache.Key location)
    • isExpired

      private boolean isExpired(Repository db)
    • unregisterAndCloseRepository

      private void unregisterAndCloseRepository(RepositoryCache.Key location)
    • getKeys

      private Collection<RepositoryCache.Key> getKeys()
    • clearAllExpired

      private void clearAllExpired()
    • clearAll

      private void clearAll()
    • lockFor

      private RepositoryCache.Lock lockFor(RepositoryCache.Key location)