Use AtomicBoolean for "logged" in CommandFactoryProvider.

This simplifies the synchronization logic for the log method in
CommandFactoryProvider.

Change-Id: Ifdae88ec3b72a18eb9529f7f27f012bbb88ea2b9
diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/CommandFactoryProvider.java b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/CommandFactoryProvider.java
index fb17169..08bfaaa 100644
--- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/CommandFactoryProvider.java
+++ b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/CommandFactoryProvider.java
@@ -36,6 +36,7 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.Executor;
+import java.util.concurrent.atomic.AtomicBoolean;
 
 /**
  * Creates a CommandFactory using commands registered by {@link CommandModule}.
@@ -79,11 +80,12 @@
     private Environment env;
     private Context ctx;
     private DispatchCommand cmd;
-    private boolean logged;
+    private final AtomicBoolean logged;
 
     Trampoline(final String cmdLine) {
       commandLine = cmdLine;
       argv = split(cmdLine);
+      logged = new AtomicBoolean();
     }
 
     public void setInputStream(final InputStream in) {
@@ -173,11 +175,8 @@
     }
 
     private void log(final int rc) {
-      synchronized (this) {
-        if (!logged) {
-          log.onExecute(rc);
-          logged = true;
-        }
+      if (logged.compareAndSet(false, true)) {
+        log.onExecute(rc);
       }
     }