Make VelocityRuntimeProvider singleton, not RuntimeInstance

If sendmail.threadPoolSize is set to a value > 1 sending emails may
sometimes fail with an error like this:

  Cannot email comments for xxxxxx,x
  com.google.gerrit.common.errors.EmailException: Mail Error: Cannot format velocity template com/google/gerrit/server/mail/ChangeSubject.vm
    at com.google.gerrit.server.mail.OutgoingEmail.velocifyFile(OutgoingEmail.java:452)
    at com.google.gerrit.server.mail.ChangeEmail.setChangeSubjectHeader(ChangeEmail.java:185)
    at com.google.gerrit.server.mail.ChangeEmail.init(ChangeEmail.java:163)
    at com.google.gerrit.server.mail.ReplyToChangeSender.init(ReplyToChangeSender.java:35)
    at com.google.gerrit.server.mail.CommentSender.init(CommentSender.java:88)
    at com.google.gerrit.server.mail.OutgoingEmail.send(OutgoingEmail.java:93)
    at com.google.gerrit.server.change.EmailReviewComments.run(EmailReviewComments.java:112)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    ...

This is because RuntimeInstance is marked as singleton and 2 threads
may concurrently change its state.

Bug: issue 4241
Change-Id: I9d735a081abfe59c4c162260500a8cb205295075
Signed-off-by: Edwin Kempin <ekempin@google.com>
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/config/GerritGlobalModule.java b/gerrit-server/src/main/java/com/google/gerrit/server/config/GerritGlobalModule.java
index ca3afad..90249c8 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/config/GerritGlobalModule.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/config/GerritGlobalModule.java
@@ -232,8 +232,7 @@
     bind(ApprovalsUtil.class);
 
     bind(RuntimeInstance.class)
-        .toProvider(VelocityRuntimeProvider.class)
-        .in(SINGLETON);
+        .toProvider(VelocityRuntimeProvider.class);
     bind(FromAddressGenerator.class).toProvider(
         FromAddressGeneratorProvider.class).in(SINGLETON);
     bind(Boolean.class).annotatedWith(DisableReverseDnsLookup.class)
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/mail/VelocityRuntimeProvider.java b/gerrit-server/src/main/java/com/google/gerrit/server/mail/VelocityRuntimeProvider.java
index 101aaac..3fdc550 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/mail/VelocityRuntimeProvider.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/mail/VelocityRuntimeProvider.java
@@ -18,6 +18,7 @@
 import com.google.inject.Inject;
 import com.google.inject.Provider;
 import com.google.inject.ProvisionException;
+import com.google.inject.Singleton;
 
 import org.apache.velocity.runtime.RuntimeConstants;
 import org.apache.velocity.runtime.RuntimeInstance;
@@ -30,6 +31,7 @@
 import java.util.Properties;
 
 /** Configures Velocity template engine for sending email. */
+@Singleton
 public class VelocityRuntimeProvider implements Provider<RuntimeInstance> {
   private final SitePaths site;