tree e2c37c162809e2c00419e381322d8536aba7e6a4
parent 0c4d819947a56b656af19eb167bc866dd36c9923
author Gal Paikin <paiking@google.com> 1623152280 +0200
committer Gal Paikin <paiking@google.com> 1623227277 +0200

Return X-Gerrit-UpdatedRef in the response headers of WRITE requests

For each REST-API request, we can track which refs were changed via
GitReferenceUpdatedListener which is already used and tested by the
plugins, caches, and indices.

Using the information of which refs were changed, for each request that
changed any of the refs, we return the changed refs in the response
header of `X-Gerrit-UpdatedRef` in the format:
REPONAME~REFNAME~OLD_SHA-1~NEW_SHA-1.

This is useful because:

1. Successful operations on changes are signaled by an update on the
meta ref (and similarly for other operations such as updating accounts
signaled by update to the account ref).
2. Returning the SHA-1s generically in the response headers can reduce
load on Gerrit: users will not have to call Gerrit to get this
information since Gerrit already always returns it. For example, some
users need the new SHA-1 of the destination branch, which we don't
return on submission, and right now they are forced to call Gerrit again
after submission to retrieve the SHA-1.
3. Because of (2), for multi-site setups, we are not impacted by
replication lags that could be caused by the users calling Gerrit more
times than they really need.

While at it, we change WebSession to be an abstract class instead of an
interface to have ref updates as part of the class.

Change-Id: Iaac3bf1036408c7f0b2d48494b544032c76c5462
