Write debug log that shows up in trace when meta data file is read/saved
Reading/saving meta data files is a rather expensive operation. E.g. if a request leads to excessive reads of meta data files we want to see that in the trace. Reading of meta data files e.g. happens on cache misses (account cache, group cache etc). Unfortunately VersionedMetaData has no reference to the project name so we must pass this in from a lot of places. Example logs: [2018-08-10 15:27:29,333] [HTTP-75] DEBUG com.google.gerrit.server.git.meta.VersionedMetaData : Read file 'group.config' from ref 'refs/groups/ca/ca1fd42646e71d8081add52fbb0171a8504c97cd' of project 'All-Users' from revision '919687c42e13f76552fb186f36d43f447544e64b' [CONTEXT forced=true TRACE_ID="1533907649289-2d0c7a5d" ] [2018-08-10 15:27:29,334] [HTTP-75] DEBUG com.google.gerrit.server.git.meta.VersionedMetaData : Read file 'members' from ref 'refs/groups/ca/ca1fd42646e71d8081add52fbb0171a8504c97cd' of project 'All-Users' from revision '919687c42e13f76552fb186f36d43f447544e64b' [CONTEXT forced=true TRACE_ID="1533907649289-2d0c7a5d" ] [2018-08-10 15:27:29,336] [HTTP-75] DEBUG com.google.gerrit.server.git.meta.VersionedMetaData : Read file 'subgroups' from ref 'refs/groups/ca/ca1fd42646e71d8081add52fbb0171a8504c97cd' of project 'All-Users' from revision '919687c42e13f76552fb186f36d43f447544e64b' [CONTEXT forced=true TRACE_ID="1533907649289-2d0c7a5d" ] Change-Id: Ibb438213b01b0a5cf67fd277d298a0359b65bb1d Signed-off-by: Edwin Kempin <ekempin@google.com>
This commit is contained in:
@@ -22,6 +22,7 @@ import com.google.gerrit.reviewdb.client.Account;
|
||||
import com.google.gerrit.server.IdentifiedUser;
|
||||
import com.google.gerrit.server.account.AccountConfig;
|
||||
import com.google.gerrit.server.account.AccountProperties;
|
||||
import com.google.gerrit.server.config.AllUsersName;
|
||||
import com.google.gerrit.server.git.ValidationError;
|
||||
import com.google.gerrit.server.mail.send.OutgoingEmailValidator;
|
||||
import com.google.inject.Inject;
|
||||
@@ -38,21 +39,30 @@ import org.eclipse.jgit.revwalk.RevWalk;
|
||||
public class AccountValidator {
|
||||
|
||||
private final Provider<IdentifiedUser> self;
|
||||
private final AllUsersName allUsersName;
|
||||
private final OutgoingEmailValidator emailValidator;
|
||||
|
||||
@Inject
|
||||
public AccountValidator(Provider<IdentifiedUser> self, OutgoingEmailValidator emailValidator) {
|
||||
public AccountValidator(
|
||||
Provider<IdentifiedUser> self,
|
||||
AllUsersName allUsersName,
|
||||
OutgoingEmailValidator emailValidator) {
|
||||
this.self = self;
|
||||
this.allUsersName = allUsersName;
|
||||
this.emailValidator = emailValidator;
|
||||
}
|
||||
|
||||
public List<String> validate(
|
||||
Account.Id accountId, Repository repo, RevWalk rw, @Nullable ObjectId oldId, ObjectId newId)
|
||||
Account.Id accountId,
|
||||
Repository allUsersRepo,
|
||||
RevWalk rw,
|
||||
@Nullable ObjectId oldId,
|
||||
ObjectId newId)
|
||||
throws IOException {
|
||||
Optional<Account> oldAccount = Optional.empty();
|
||||
if (oldId != null && !ObjectId.zeroId().equals(oldId)) {
|
||||
try {
|
||||
oldAccount = loadAccount(accountId, repo, rw, oldId, null);
|
||||
oldAccount = loadAccount(accountId, allUsersRepo, rw, oldId, null);
|
||||
} catch (ConfigInvalidException e) {
|
||||
// ignore, maybe the new commit is repairing it now
|
||||
}
|
||||
@@ -61,7 +71,7 @@ public class AccountValidator {
|
||||
List<String> messages = new ArrayList<>();
|
||||
Optional<Account> newAccount;
|
||||
try {
|
||||
newAccount = loadAccount(accountId, repo, rw, newId, messages);
|
||||
newAccount = loadAccount(accountId, allUsersRepo, rw, newId, messages);
|
||||
} catch (ConfigInvalidException e) {
|
||||
return ImmutableList.of(
|
||||
String.format(
|
||||
@@ -94,14 +104,14 @@ public class AccountValidator {
|
||||
|
||||
private Optional<Account> loadAccount(
|
||||
Account.Id accountId,
|
||||
Repository repo,
|
||||
Repository allUsersRepo,
|
||||
RevWalk rw,
|
||||
ObjectId commit,
|
||||
@Nullable List<String> messages)
|
||||
throws IOException, ConfigInvalidException {
|
||||
rw.reset();
|
||||
AccountConfig accountConfig = new AccountConfig(accountId, repo);
|
||||
accountConfig.load(rw, commit);
|
||||
AccountConfig accountConfig = new AccountConfig(accountId, allUsersName, allUsersRepo);
|
||||
accountConfig.load(allUsersName, rw, commit);
|
||||
if (messages != null) {
|
||||
messages.addAll(
|
||||
accountConfig
|
||||
|
||||
@@ -152,7 +152,7 @@ public class MergeValidators {
|
||||
final Project.NameKey newParent;
|
||||
try {
|
||||
ProjectConfig cfg = new ProjectConfig(destProject.getNameKey());
|
||||
cfg.load(repo, commit);
|
||||
cfg.load(destProject.getNameKey(), repo, commit);
|
||||
newParent = cfg.getProject().getParent(allProjectsName);
|
||||
final Project.NameKey oldParent = destProject.getProject().getParent(allProjectsName);
|
||||
if (oldParent == null) {
|
||||
|
||||
Reference in New Issue
Block a user