1
votes

I have this zookeeper config:

autopurge.snapRetainCount=10
autopurge.purgeInterval=1
snapCount=3000000

And my /opt/zookeeper-3.4.11/data dir goes large, no autopurge happens.

I try clean up this mess with zkCleanup.sh but it does nothing.

sysadmin@clickhouse-node1:/opt/zookeeper-3.4.11/bin$ ls /opt/zookeeper-3.4.11/data/version-2/ | wc -l
18
sysadmin@clickhouse-node1:/opt/zookeeper-3.4.11/bin$ ./zkCleanup.sh -n 10  
sysadmin@clickhouse-node1:/opt/zookeeper-3.4.11/bin$ ls /opt/zookeeper-3.4.11/data/version-2/ | wc -l
18

sysadmin@clickhouse-node1:/opt/zookeeper-3.4.11$ ls data/version-2/
log.9028ed00e  log.902eafb66  log.903362dcb  log.90374bde5  log.903b5f685  log.903f8e16a  log.b000000a8  log.b004d4eac  log.b0083c3e1
log.902b9c065  log.9030ece30  log.903590e4a  log.90395a935  log.903d9b0f0  log.90421e5d6  log.b002462e2  log.b0068bba3  log.b00a38f08

My zkCleanup.sh https://pastebin.com/Q9XSpSfz

UPD: log from new zoo cleanup script:

sysadmin@clickhouse-node1:/opt/zookeeper-3.4.11/bin$ ./zoo_clean.sh -n 10 /opt/zookeeper-3.4.11/data /opt/zookeeper-3.4.11/logs /usr/lib/jvm/java-8-oracle/bin/java -Dzookeeper.log.dir=. -Dzookeeper.root.logger=INFO,CONSOLE -cp /opt/zookeeper-3.4.11/bin/../build/classes:/opt/zookeeper-3.4.11/bin/../build/lib/*.jar:/opt/zookeeper-3.4.11/bin/../lib/slf4j-log4j12-1.6.1.jar:/opt/zookeeper-3.4.11/bin/../lib/slf4j-api-1.6.1.jar:/opt/zookeeper-3.4.11/bin/../lib/netty-3.10.5.Final.jar:/opt/zookeeper-3.4.11/bin/../lib/log4j-1.2.16.jar:/opt/zookeeper-3.4.11/bin/../lib/jline-0.9.94.jar:/opt/zookeeper-3.4.11/bin/../lib/audience-annotations-0.5.0.jar:/opt/zookeeper-3.4.11/bin/../zookeeper-3.4.11.jar:/opt/zookeeper-3.4.11/bin/../src/java/lib/*.jar:/opt/zookeeper-3.4.11/bin/../conf: org.apache.zookeeper.server.PurgeTxnLog /opt/zookeeper-3.4.11/logs /opt/zookeeper-3.4.11/data -n 10 Nothing happen again

Any idea how to fix this?

3
try jar -tvf zookeeper.jar |grep PurgeTxnLog. and what's the relationship between /opt/zookeeper-3.4.11/data and /opt/zoo/data. - sel-fish
why not use zkCleanup.sh instead of fill java command yourself. seems that you didn't include your slf4japi and slf4j-log4j12 in your classpath. - sel-fish
zkCleanup.sh dosnt work, i dont understand bash. Maybe any problem in it. But script execute without problems. - Nessero Karuzo
try ./bin/zkCleanup.sh -n 10 - sel-fish
can you update that in the question body ? and list the files under /opt/zookeeper-3.4.11/data/version-2/ - sel-fish

3 Answers

1
votes

It is a bug in zkCleanup.sh in 3.4.11 docker image https://github.com/apache/zookeeper/pull/475

Simple fix is to edit zkCleanup.sh from

org.apache.zookeeper.server.PurgeTxnLog "$ZOODATALOGDIR" "$ZOODATADIR" $*

to

org.apache.zookeeper.server.PurgeTxnLog "$ZOODATADIR" "$ZOODATALOGDIR" $*

1
votes

dataDir and dataLogDir in your conf/zoo.cfg are relative paths, the following instructions may help :

cd /opt/zookeeper-3.4.11
./bin/zkCleanup.sh -n 10

then you can see the output like:

Removing file: Mar 15, 2018 1:57:16 PM  data/log/version-2/log.9028ed00e
Removing file: Mar 12, 2018 5:33:11 PM  data/log/version-2/log.902eafb66