zookeeper-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From anmolnar <...@git.apache.org>
Subject [GitHub] zookeeper pull request #450: ZOOKEEPER-2967: Add check to validate dataDir a...
Date Mon, 22 Jan 2018 14:38:25 GMT
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.


---

Mime
View raw message