= gerrit flush-caches

== NAME
gerrit flush-caches - Flush some/all server caches from memory

== SYNOPSIS
--
'ssh' -p <port> <host> 'gerrit flush-caches' --all
'ssh' -p <port> <host> 'gerrit flush-caches' --list
'ssh' -p <port> <host> 'gerrit flush-caches' --cache <NAME> ...
--

== DESCRIPTION
Clear an in-memory cache, forcing Gerrit to reconsult the ground
truth when it needs the information again.

Flushing a cache may be necessary if an administrator modifies
database records directly in the database, rather than going through
the Gerrit web interface.

If no options are supplied, defaults to `--all`.

== ACCESS

The caller must be a member of a group that is granted one of the
following capabilities:

* link:access-control.html#capability_flushCaches[Flush Caches] (any cache
  except "web_sessions")
* link:access-control.html#capability_maintainServer[Maintain Server] (any cache
  including "web_sessions")
* link:access-control.html#capability_administrateServer[Administrate Server]
  (any cache including "web_sessions")

== SCRIPTING
This command is intended to be used in scripts.

== OPTIONS
--all::
	Flush all known caches.  This is like applying a big hammer,
	it will force everything out, potentially more than was
	necessary for the change made. This option automatically
	skips flushing potentially dangerous caches such as
	"web_sessions".  To flush one of these caches, the caller
	must specifically name them on the command line, e.g. pass
	`--cache web_sessions`.

--list::
	Show a list of the caches.

--cache <NAME>::
	Flush only the cache called <NAME>.  May be supplied more
	than once to flush multiple caches in a single command
	execution.

== EXAMPLES
List caches available for flushing:

====
	$ ssh -p 29418 review.example.com gerrit flush-caches --list
	accounts
	accounts_byemail
	diff
	groups
	ldap_groups
	openid
	projects
	sshkeys
	web_sessions
====

Flush all caches known to the server, forcing them to recompute:

====
	$ ssh -p 29418 review.example.com gerrit flush-caches --all
====

or

====
	$ ssh -p 29418 review.example.com gerrit flush-caches
====

Flush only the "sshkeys" cache, after manually editing an SSH key
for a user:

====
	$ ssh -p 29418 review.example.com gerrit flush-caches --cache sshkeys
====

Flush "web_sessions", forcing all users to sign-in again:

====
	$ ssh -p 29418 review.example.com gerrit flush-caches --cache web_sessions
====

== SEE ALSO

* link:cmd-show-caches.html[gerrit show-caches]
* link:config-gerrit.html#cache[Cache Configuration]
* link:config-gerrit.html#cache_names[Standard Caches]

GERRIT
------
Part of link:index.html[Gerrit Code Review]

SEARCHBOX
---------
