[
https://issues.apache.org/jira/browse/ZOOKEEPER-1459?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13805249#comment-13805249
]
Rakesh R commented on ZOOKEEPER-1459:
-------------------------------------
bq.In ZooKeeperServer, the transaction log handle is txnLogFactory rather than
zkDb
Please see ServerCnxnFactory, here startup of the serverCnxn would create
ZKDatabase by giving the txnLogFactory. I feel only if there is an exception in
ZooKeeperServer startup, it can leave the txnLog as open. Attached latest patch
where closed stream in finally block.
{code}
zks.startdata();
zks.startup();
{code}
Secondly, In the patch you are trying to close the txnLog in zk.shutdown.
Initially I had tried similar approach(please refer my first patch) and faced
few issues in FollowerZooKeeperServer quorum shutdown. If we look at QuorumPeer
shutdown pattern, it is closing the ZooKeeperDatabase after shutting down the
quorum at the last step. But with this patch, its closing the transactionlog
within the shutdown.
{code}
ZooKeeperServer.java
+ if (txnLogFactory != null)
+ txnLogFactory.close();
{code}
> Standalone ZooKeeperServer is not closing the transaction log files on
> shutdown
> -------------------------------------------------------------------------------
>
> Key: ZOOKEEPER-1459
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1459
> Project: ZooKeeper
> Issue Type: Bug
> Components: server
> Affects Versions: 3.4.0
> Reporter: Rakesh R
> Assignee: Rakesh R
> Fix For: 3.4.6, 3.5.0
>
> Attachments: ZOOKEEPER-1459.patch, ZOOKEEPER-1459.patch,
> ZOOKEEPER-1459.patch, ZOOKEEPER-1459.patch, ZOOKEEPER-1459.patch,
> ZOOKEEPER-1459.patch, ZOOKEEPER-1459.patch
>
>
> When shutdown the standalone ZK server, its only clearing the zkdatabase and
> not closing the transaction log streams. When tries to delete the temporary
> files in unit tests on windows, its failing.
> ZooKeeperServer.java
> {noformat}
> if (zkDb != null) {
> zkDb.clear();
> }
> {noformat}
> Suggestion to close the zkDb as follows, this inturn will take care
> transaction logs:
> {noformat}
> if (zkDb != null) {
> zkDb.clear();
> try {
> zkDb.close();
> } catch (IOException ie) {
> LOG.warn("Error closing logs ", ie);
> }
> }
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.1#6144)