Use StringBuilder instead of concatenation in SubmoduleOp
Coverity reports a performance issue caused by using the + operator
to concatenate strings within a loop. (See CID 20152) on the coverity
scan project [1].
Refactor it to use a StringBuilder instead.
[1] https://scan.coverity.com/projects/4032
Change-Id: Ib2ee90934e2215639cadc500ae28c9e61f8a9d19
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/SubmoduleOp.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/SubmoduleOp.java
index 2b73ff9..3d65fa7 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/SubmoduleOp.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/SubmoduleOp.java
@@ -207,11 +207,11 @@
schema.submoduleSubscriptions().bySubmodule(updatedBranch).toList();
if (!subscribers.isEmpty()) {
- String msgbuf = msg;
- if (msgbuf == null) {
- // Initialize the message buffer
- msgbuf = "";
-
+ // Initialize the message buffer
+ StringBuilder sb = new StringBuilder();
+ if (msg != null) {
+ sb.append(msg);
+ } else {
// The first updatedBranch on a cascade event of automatic
// updates of repos is added to updatedSubscribers set so
// if we face a situation having
@@ -227,8 +227,8 @@
&& (c.getStatusCode() == CommitMergeStatus.CLEAN_MERGE
|| c.getStatusCode() == CommitMergeStatus.CLEAN_PICK
|| c.getStatusCode() == CommitMergeStatus.CLEAN_REBASE)) {
- msgbuf += "\n";
- msgbuf += c.getFullMessage();
+ sb.append("\n")
+ .append(c.getFullMessage());
}
}
}
@@ -246,7 +246,7 @@
Map<Branch.NameKey, String> paths = new HashMap<>(1);
paths.put(updatedBranch, s.getPath());
- updateGitlinks(s.getSuperProject(), myRw, modules, paths, msgbuf);
+ updateGitlinks(s.getSuperProject(), myRw, modules, paths, sb.toString());
}
} catch (SubmoduleException e) {
log.warn("Cannot update gitlinks for " + s + " due to " + e.getMessage());