This is an automated email from the ASF dual-hosted git repository.

bschuchardt pushed a commit to branch feature/GEODE-4180
in repository https://gitbox.apache.org/repos/asf/geode.git

commit dc1ae9cde903d75da990b6ff3c299097bde060c9
Author: Bruce Schuchardt <[email protected]>
AuthorDate: Mon Jan 8 11:43:32 2018 -0800

    GEODE-4180 always use absolute paths
    
    Modified the locator to use absolute paths for the persistent view file
    and for the product use log.
    
    There is no unit test for ProductUseLog because it doesn't try to read its 
file.  It just writes to a new file.
---
 .../geode/distributed/internal/ProductUseLog.java  |  3 ++-
 .../membership/gms/locator/GMSLocator.java         |  9 ++++++---
 .../gms/locator/GMSLocatorRecoveryJUnitTest.java   | 23 ++++++++++++++++++++++
 3 files changed, 31 insertions(+), 4 deletions(-)

diff --git 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/ProductUseLog.java
 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/ProductUseLog.java
index 1e99b86..dd4a633 100644
--- 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/ProductUseLog.java
+++ 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/ProductUseLog.java
@@ -53,7 +53,8 @@ public class ProductUseLog implements MembershipListener {
   }
 
   public ProductUseLog(File productUseLogFile) {
-    this.productUseLogFile = productUseLogFile;
+    // GEODE-4180, use absolute paths
+    this.productUseLogFile = new File(productUseLogFile.getAbsolutePath());
     this.logLevel = InternalLogWriter.INFO_LEVEL;
     createLogWriter();
   }
diff --git 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/locator/GMSLocator.java
 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/locator/GMSLocator.java
index cecc4a9..85570bd 100644
--- 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/locator/GMSLocator.java
+++ 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/locator/GMSLocator.java
@@ -137,14 +137,17 @@ public class GMSLocator implements Locator, NetLocator {
   /**
    * Test hook - set the persistent view file
    */
-  public void setViewFile(File file) {
-    this.viewFile = file;
+  public File setViewFile(File file) {
+    this.viewFile = new File(file.getAbsolutePath()); // GEODE-4180, use 
absolute paths
+    return this.viewFile;
   }
 
   @Override
   public void init(TcpServer server) throws InternalGemFireException {
     if (this.viewFile == null) {
-      this.viewFile = new File("locator" + server.getPort() + "view.dat");
+      // GEODE-4180, use absolute paths
+      this.viewFile =
+          new File(new File("locator" + server.getPort() + 
"view.dat").getAbsolutePath());
     }
     logger.info(
         "GemFire peer location service starting.  Other locators: {}  Locators 
preferred as coordinators: {}  Network partition detection enabled: {}  View 
persistence file: {}",
diff --git 
a/geode-core/src/test/java/org/apache/geode/distributed/internal/membership/gms/locator/GMSLocatorRecoveryJUnitTest.java
 
b/geode-core/src/test/java/org/apache/geode/distributed/internal/membership/gms/locator/GMSLocatorRecoveryJUnitTest.java
index 7906534..f13cbca 100644
--- 
a/geode-core/src/test/java/org/apache/geode/distributed/internal/membership/gms/locator/GMSLocatorRecoveryJUnitTest.java
+++ 
b/geode-core/src/test/java/org/apache/geode/distributed/internal/membership/gms/locator/GMSLocatorRecoveryJUnitTest.java
@@ -193,4 +193,27 @@ public class GMSLocatorRecoveryJUnitTest {
       }
     }
   }
+
+  @Test
+  public void testViewFileFoundWhenUserDirModified() throws Exception {
+    NetView view = new NetView();
+    populateStateFile(this.tempStateFile, GMSLocator.LOCATOR_FILE_STAMP, 
Version.CURRENT_ORDINAL,
+        view);
+
+    String userDir = System.getProperty("user.dir");
+    try {
+      File dir = new File("testViewFileFoundWhenUserDirModified");
+      dir.mkdir();
+      System.setProperty("user.dir", dir.getAbsolutePath());
+      File viewFileInNewDirectory = new File(tempStateFile.getName());
+      // GEODE-4180 - file in parent dir still seen with relative path
+      assertTrue(viewFileInNewDirectory.exists());
+      File locatorViewFile = locator.setViewFile(viewFileInNewDirectory);
+      assertFalse(locator.recoverFromFile(locatorViewFile));
+    } finally {
+      System.setProperty("user.dir", userDir);
+    }
+  }
+
+
 }

-- 
To stop receiving notification emails like this one, please contact
"[email protected]" <[email protected]>.

Reply via email to