ChangeIndexerImpl: Replace old RequestContext after use
Change-Id: Iaf03c617d6750e40f199341aae53a1767bbb1842
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/index/ChangeIndexerImpl.java b/gerrit-server/src/main/java/com/google/gerrit/server/index/ChangeIndexerImpl.java
index 4e467de..928e589 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/index/ChangeIndexerImpl.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/index/ChangeIndexerImpl.java
@@ -100,30 +100,30 @@
try {
final AtomicReference<Provider<ReviewDb>> dbRef =
Atomics.newReference();
- try {
- context.setContext(new RequestContext() {
- @Override
- public Provider<ReviewDb> getReviewDbProvider() {
- Provider<ReviewDb> db = dbRef.get();
- if (db == null) {
- try {
- db = Providers.of(schemaFactory.open());
- } catch (OrmException e) {
- ProvisionException pe =
- new ProvisionException("error opening ReviewDb");
- pe.initCause(e);
- throw pe;
- }
- dbRef.set(db);
+ RequestContext oldCtx = context.setContext(new RequestContext() {
+ @Override
+ public Provider<ReviewDb> getReviewDbProvider() {
+ Provider<ReviewDb> db = dbRef.get();
+ if (db == null) {
+ try {
+ db = Providers.of(schemaFactory.open());
+ } catch (OrmException e) {
+ ProvisionException pe =
+ new ProvisionException("error opening ReviewDb");
+ pe.initCause(e);
+ throw pe;
}
- return db;
+ dbRef.set(db);
}
+ return db;
+ }
- @Override
- public CurrentUser getCurrentUser() {
- throw new OutOfScopeException("No user during ChangeIndexer");
- }
- });
+ @Override
+ public CurrentUser getCurrentUser() {
+ throw new OutOfScopeException("No user during ChangeIndexer");
+ }
+ });
+ try {
if (indexes != null) {
for (ChangeIndex i : indexes.getWriteIndexes()) {
apply(i, cd);
@@ -133,7 +133,7 @@
}
return null;
} finally {
- context.setContext(null);
+ context.setContext(oldCtx);
Provider<ReviewDb> db = dbRef.get();
if (db != null) {
db.get().close();