zookeeper-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andor Molnar (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (ZOOKEEPER-2960) The dataDir and dataLogDir are used opposingly
Date Wed, 03 Jan 2018 10:39:00 GMT

    [ https://issues.apache.org/jira/browse/ZOOKEEPER-2960?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16309451#comment-16309451
] 

Andor Molnar commented on ZOOKEEPER-2960:
-----------------------------------------

Hi [~danmilon]

Looks like you're right. QuorumPeerMain mixes the 2 directories and if the server is running
in an ensemble, logs are going to be created in dataDir and snapshots are in dataLogDir. What's
even more confusing is that it works right in standalone mode. 

QuorumPeerMain@139 (non-standalone mode):
runFromConfig():
...
          quorumPeer.setTxnFactory(new FileTxnSnapLog(
                  new File(config.getDataDir()),
                  new File(config.getDataLogDir())));

ZookeeperServerMain@112 (standalone mode):
runFromConfig():
...
            txnLog = new FileTxnSnapLog(new File(config.dataLogDir), new File(
                    config.dataDir));

The latter is the right way of doing it: FileTxnSnapLog expects dataLogDir (txn logs) in the
1st and dataDir (snapshots) in the 2nd argument.

> The dataDir and dataLogDir are used opposingly
> ----------------------------------------------
>
>                 Key: ZOOKEEPER-2960
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2960
>             Project: ZooKeeper
>          Issue Type: Bug
>          Components: server
>    Affects Versions: 3.4.11
>         Environment: Not relevant.
>            Reporter: Dan Milon
>            Assignee: Andor Molnar
>            Priority: Critical
>
> After upgrading from zookeeper 3.4.5, to 3.4.11, without editing {{zoo.cfg}}, the new
version of the server tries to use the {{dataDir}} as the {{dataLogDir}}, and the {{dataLogDir}}
as the {{dataDir}}. Or at least some parts of the server.
> Configuration file has:
> {noformat}
> $ grep -i data /etc/zookeeper/zoo.cfg 
> dataLogDir=/var/lib/zookeeper/datalog
> dataDir=/var/lib/zookeeper/data
> {noformat}
> But runtime configuration has:
> {noformat}
> $ echo conf | nc localhost 2181 | grep -i data
> dataDir=/var/lib/zookeeper/datalog/version-2
> dataLogDir=/var/lib/zookeeper/data/version-2
> {noformat}
> Also, I got this in the debug logs, so clearly some parts of the server confuse things.
> {noformat}
> [PurgeTask:FileTxnSnapLog@79] - Opening datadir:/var/lib/zookeeper/datalog snapDir:/var/lib/zookeeper/data
> [main:FileTxnSnapLog@79] - Opening datadir:/var/lib/zookeeper/data snapDir:/var/lib/zookeeper/datalog
> {noformat}
> I tried to look in the code for wrong uses of the directories. I only found [ZookeeperServer.java|https://github.com/apache/zookeeper/blob/master/src/java/main/org/apache/zookeeper/server/ZooKeeperServer.java#L227]
is passing the arguments to {{FileTxnSnapLog}} in the wrong order, but the code comment says
that this is legacy only for tests, so I assume it isn't the cause for my case.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Mime
View raw message