Perform PutTopic in a database "transaction"
Wrapping both writes into a begin/commit block allows these to be aggregated in the backend for gerrit-review, slightly reducing latency for topic changes. Change-Id: I9849219012d999817e5d719c1d2b04a5cea4d4a9
This commit is contained in:
@@ -98,16 +98,22 @@ class PutTopic implements RestModifyView<ChangeResource, Input>,
|
||||
}
|
||||
cmsg.setMessage(msgBuf.toString());
|
||||
|
||||
change = db.changes().atomicUpdate(change.getId(),
|
||||
new AtomicUpdate<Change>() {
|
||||
@Override
|
||||
public Change update(Change change) {
|
||||
change.setTopic(Strings.emptyToNull(newTopicName));
|
||||
ChangeUtil.updated(change);
|
||||
return change;
|
||||
}
|
||||
});
|
||||
db.changeMessages().insert(Collections.singleton(cmsg));
|
||||
db.changes().beginTransaction(change.getId());
|
||||
try {
|
||||
change = db.changes().atomicUpdate(change.getId(),
|
||||
new AtomicUpdate<Change>() {
|
||||
@Override
|
||||
public Change update(Change change) {
|
||||
change.setTopic(Strings.emptyToNull(newTopicName));
|
||||
ChangeUtil.updated(change);
|
||||
return change;
|
||||
}
|
||||
});
|
||||
db.changeMessages().insert(Collections.singleton(cmsg));
|
||||
db.commit();
|
||||
} finally {
|
||||
db.rollback();
|
||||
}
|
||||
indexer.index(change);
|
||||
hooks.doTopicChangedHook(change, currentUser.getAccount(),
|
||||
oldTopicName, db);
|
||||
|
||||
Reference in New Issue
Block a user