Package com.google.gerrit.server.project
Class ProjectCacheImpl
java.lang.Object
com.google.gerrit.server.project.ProjectCacheImpl
- All Implemented Interfaces:
ProjectCache
Cache of project information, including access rights.
The data of a project is the project's project.config in refs/meta/config parsed out as an immutable value. It's keyed purely by the refs/meta/config SHA-1. We also cache the same value keyed by name. The latter mapping can become outdated, so data must be evicted explicitly.
-
Field Summary
Fields -
Method Summary
Modifier and TypeMethodDescriptioncom.google.common.collect.ImmutableSortedSet<Project.NameKey>
all()
Returns sorted iteration of projects.static byte[]
allProjectsFileProjectConfigHash
(Optional<org.eclipse.jgit.lib.StoredConfig> allProjectsConfig) Returns aMurMur128
hash of the contents ofetc/All-Projects-project.config
.com.google.common.collect.ImmutableSortedSet<Project.NameKey>
Filter the set of registered project names by common prefix.void
Invalidate the cached information about the given project.void
void
Invalidate the cached information about the given project, and triggers reindexing for itvoid
Invalidate the cached information about the given project, and triggers reindexing for itget
(Project.NameKey projectName) Get the cached data for a project by its unique name.Returns the parent state for all projects on this server.Returns the project state of the project storing meta data for all users.Returns estimated set of relevant groups extracted from hot project access rules.static com.google.inject.Module
module()
void
onCreateProject
(Project.NameKey newProjectName) Notify the cache that a new project was constructed.void
Refreshes project list cachevoid
Remove information about the given project from the cache.void
remove
(Project.NameKey name) Remove information about the given project from the cache.long
-
Field Details
-
CACHE_NAME
- See Also:
-
PERSISTED_CACHE_NAME
- See Also:
-
CACHE_LIST
- See Also:
-
-
Method Details
-
module
public static com.google.inject.Module module() -
getAllProjects
Description copied from interface:ProjectCache
Returns the parent state for all projects on this server.- Specified by:
getAllProjects
in interfaceProjectCache
-
getAllUsers
Description copied from interface:ProjectCache
Returns the project state of the project storing meta data for all users.- Specified by:
getAllUsers
in interfaceProjectCache
-
get
Description copied from interface:ProjectCache
Get the cached data for a project by its unique name.- Specified by:
get
in interfaceProjectCache
- Parameters:
projectName
- name of the project.- Returns:
- an
Optional
wrapping the cached data;absent
if no such project exists or the projectName is null
-
evict
Description copied from interface:ProjectCache
Invalidate the cached information about the given project.- Specified by:
evict
in interfaceProjectCache
- Parameters:
p
- the NameKey of the project that is being evicted
-
evictAndReindex
Description copied from interface:ProjectCache
Invalidate the cached information about the given project, and triggers reindexing for it- Specified by:
evictAndReindex
in interfaceProjectCache
- Parameters:
p
- project that is being evicted
-
evictAndReindex
Description copied from interface:ProjectCache
Invalidate the cached information about the given project, and triggers reindexing for it- Specified by:
evictAndReindex
in interfaceProjectCache
- Parameters:
p
- the NameKey of the project that is being evicted
-
remove
Description copied from interface:ProjectCache
Remove information about the given project from the cache. It will no longer be returned fromProjectCache.all()
.- Specified by:
remove
in interfaceProjectCache
-
remove
Description copied from interface:ProjectCache
Remove information about the given project from the cache. It will no longer be returned fromProjectCache.all()
.- Specified by:
remove
in interfaceProjectCache
-
onCreateProject
Description copied from interface:ProjectCache
Notify the cache that a new project was constructed.- Specified by:
onCreateProject
in interfaceProjectCache
- Throws:
IOException
-
all
Description copied from interface:ProjectCache
Returns sorted iteration of projects.- Specified by:
all
in interfaceProjectCache
-
refreshProjectList
public void refreshProjectList()Description copied from interface:ProjectCache
Refreshes project list cache- Specified by:
refreshProjectList
in interfaceProjectCache
-
guessRelevantGroupUUIDs
Description copied from interface:ProjectCache
Returns estimated set of relevant groups extracted from hot project access rules. If the cache is cold or too small for the entire project set of the server, this set may be incomplete.- Specified by:
guessRelevantGroupUUIDs
in interfaceProjectCache
-
byName
Description copied from interface:ProjectCache
Filter the set of registered project names by common prefix.- Specified by:
byName
in interfaceProjectCache
- Parameters:
pfx
- common prefix.- Returns:
- sorted iteration of projects sharing the same prefix.
-
allProjectsFileProjectConfigHash
public static byte[] allProjectsFileProjectConfigHash(Optional<org.eclipse.jgit.lib.StoredConfig> allProjectsConfig) Returns aMurMur128
hash of the contents ofetc/All-Projects-project.config
. -
evictAllByName
public void evictAllByName() -
sizeAllByName
public long sizeAllByName()
-