Github user anmolnar commented on a diff in the pull request:

    https://github.com/apache/zookeeper/pull/450#discussion_r162929390
  
    --- Diff: 
src/java/main/org/apache/zookeeper/server/persistence/FileTxnSnapLog.java ---
    @@ -136,13 +136,51 @@ public FileTxnSnapLog(File dataDir, File snapDir) 
throws IOException {
                 throw new DatadirException("Cannot write to snap directory " + 
this.snapDir);
             }
     
    +        // check content of transaction log and snapshot dirs if they are 
two different directories
    +        if(!this.dataDir.getPath().equals(this.snapDir.getPath())){
    +            checkLogDir();
    +            checkSnapDir();
    +        }
    +
             txnLog = new FileTxnLog(this.dataDir);
             snapLog = new FileSnap(this.snapDir);
     
             autoCreateDB = 
Boolean.parseBoolean(System.getProperty(ZOOKEEPER_DB_AUTOCREATE,
                     ZOOKEEPER_DB_AUTOCREATE_DEFAULT));
         }
     
    +    private void checkLogDir() throws LogdirContentCheckException {
    +        File[] files = this.dataDir.listFiles();
    +        if(files != null) {
    +            boolean hasSnapshotFiles = false;
    +            for (File file : files) {
    +                if(Util.isSnapshotFile(file)){
    +                    hasSnapshotFiles = true;
    +                    break;
    +                }
    +            }
    +            if (hasSnapshotFiles) {
    +                throw new LogdirContentCheckException("Log directory has 
snapshot files. Check if dataLogDir and dataDir configuration is correct.");
    +            }
    +        }
    +    }
    +
    +    private void checkSnapDir() throws SnapdirContentCheckException {
    +        File[] files = this.snapDir.listFiles();
    --- End diff --
    
    Same here. Get files with fileNameFilter and if it returns non-empty array, 
throw exception.


---

Reply via email to