Fix wrong date/time for commits in refs/users/default branch
When the refs/users/default branch is modified using the
SetPreferences REST endpoint (e.g. when changing the 'My' menu
preferences) the commit date/time is wrong. Instead of the actual
date/time the date/time of the last Gerrit server start is used. This
is because MetaDataUpdate.User which gets the GerritPersonIdent
injected is kept as member in the SetPreferences singleton and the
date/time for commits in the refs/users/default branches is retrieved
from that GerritPersonIdent instance which is only created once when
the SetPreferences singleton is instantiated.
The same bug was already fixed for the refs/users/XX/YYYY branches by
change Idbf4618.
Change-Id: Ia7ca0a373042e906a0c179b76be86ce3abf0806c
Signed-off-by: Edwin Kempin <ekempin@google.com>
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/config/SetPreferences.java b/gerrit-server/src/main/java/com/google/gerrit/server/config/SetPreferences.java
index d97499c..519a4a4 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/config/SetPreferences.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/config/SetPreferences.java
@@ -23,6 +23,7 @@
import com.google.gerrit.server.account.VersionedAccountPreferences;
import com.google.gerrit.server.git.MetaDataUpdate;
import com.google.inject.Inject;
+import com.google.inject.Provider;
import com.google.inject.Singleton;
import org.eclipse.jgit.errors.ConfigInvalidException;
@@ -32,11 +33,11 @@
@RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER)
@Singleton
public class SetPreferences implements RestModifyView<ConfigResource, Input> {
- private final MetaDataUpdate.User metaDataUpdateFactory;
+ private final Provider<MetaDataUpdate.User> metaDataUpdateFactory;
private final AllUsersName allUsersName;
@Inject
- SetPreferences(MetaDataUpdate.User metaDataUpdateFactory,
+ SetPreferences(Provider<MetaDataUpdate.User> metaDataUpdateFactory,
AllUsersName allUsersName) {
this.metaDataUpdateFactory = metaDataUpdateFactory;
this.allUsersName = allUsersName;
@@ -58,7 +59,7 @@
}
VersionedAccountPreferences p;
- MetaDataUpdate md = metaDataUpdateFactory.create(allUsersName);
+ MetaDataUpdate md = metaDataUpdateFactory.get().create(allUsersName);
try {
p = VersionedAccountPreferences.forDefault();
p.load(md);