Merge branch 'stable-2.15'

* stable-2.15:
  RestForwarder: Tidy up debug logging
  JGroupsPeerInfoProvider: Adjust javadoc and log output
  Compile against 2.15-rc1
  JGroupsPeerInfoProvider: Fix broken log formatting
  Improve the debug log when RestForwarder fails

Change-Id: Id16c39f2000b885c139606f046c658bbf4da6ee8
diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/websession/file/FileBasedWebsessionCache.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/websession/file/FileBasedWebsessionCache.java
index ca5e841..79ac382 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/websession/file/FileBasedWebsessionCache.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/websession/file/FileBasedWebsessionCache.java
@@ -19,6 +19,7 @@
 import com.google.common.cache.CacheStats;
 import com.google.common.collect.ImmutableMap;
 import com.google.gerrit.common.Nullable;
+import com.google.gerrit.common.TimeUtil;
 import com.google.gerrit.httpd.WebSessionManager;
 import com.google.gerrit.httpd.WebSessionManager.Val;
 import com.google.inject.Inject;
@@ -32,6 +33,7 @@
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.StandardCopyOption;
+import java.time.Instant;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -41,7 +43,6 @@
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.ExecutionException;
-import org.joda.time.DateTime;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -74,8 +75,8 @@
     for (Path path : listFiles()) {
       Val val = readFile(path);
       if (val != null) {
-        DateTime expires = new DateTime(val.getExpiresAt());
-        if (expires.isBefore(new DateTime())) {
+        Instant expires = Instant.ofEpochMilli(val.getExpiresAt());
+        if (expires.isBefore(Instant.ofEpochMilli(TimeUtil.nowMs()))) {
           deleteFile(path);
         }
       }
diff --git a/src/test/java/com/ericsson/gerrit/plugins/highavailability/websession/file/FileBasedWebSessionCacheTest.java b/src/test/java/com/ericsson/gerrit/plugins/highavailability/websession/file/FileBasedWebSessionCacheTest.java
index a13575a..d4be877 100644
--- a/src/test/java/com/ericsson/gerrit/plugins/highavailability/websession/file/FileBasedWebSessionCacheTest.java
+++ b/src/test/java/com/ericsson/gerrit/plugins/highavailability/websession/file/FileBasedWebSessionCacheTest.java
@@ -18,20 +18,23 @@
 
 import com.google.common.collect.ImmutableMap;
 import com.google.gerrit.httpd.WebSessionManager.Val;
+import com.google.gerrit.testutil.TestTimeUtil;
 import java.io.IOException;
 import java.io.InputStream;
 import java.nio.file.DirectoryStream;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.StandardCopyOption;
+import java.sql.Timestamp;
+import java.time.Instant;
+import java.time.temporal.ChronoUnit;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ExecutionException;
-import org.joda.time.DateTime;
-import org.joda.time.DateTimeUtils;
+import java.util.concurrent.TimeUnit;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -78,17 +81,19 @@
     loadKeyToCacheDir(EXISTING_KEY);
     try {
       long existingKeyExpireAt = cache.getIfPresent(EXISTING_KEY).getExpiresAt();
-      DateTimeUtils.setCurrentMillisFixed(
-          new DateTime(existingKeyExpireAt).minusHours(1).getMillis());
+      TestTimeUtil.resetWithClockStep(1, TimeUnit.SECONDS);
+      TestTimeUtil.setClock(
+          new Timestamp(
+              Instant.ofEpochMilli(existingKeyExpireAt).minus(1, ChronoUnit.HOURS).toEpochMilli()));
       cache.cleanUp();
       assertThat(isDirEmpty(websessionDir)).isFalse();
-
-      DateTimeUtils.setCurrentMillisFixed(
-          new DateTime(existingKeyExpireAt).plusHours(1).getMillis());
+      TestTimeUtil.setClock(
+          new Timestamp(
+              Instant.ofEpochMilli(existingKeyExpireAt).plus(1, ChronoUnit.HOURS).toEpochMilli()));
       cache.cleanUp();
       assertThat(isDirEmpty(websessionDir)).isTrue();
     } finally {
-      DateTimeUtils.setCurrentMillisSystem();
+      TestTimeUtil.useSystemTime();
     }
   }