Skip to content

Commit 72e3d9c

Browse files
authored
ZOOKEEPER-4730: Incorrect datadir and logdir size reported from admin and and 4lw dirs command
Reviewers: kezhuw, eolivelli, maoling Author: li4wang Closes #2043 from li4wang/ZOOKEEPER-4730
1 parent e2ea038 commit 72e3d9c

File tree

13 files changed

+60
-20
lines changed

13 files changed

+60
-20
lines changed

zookeeper-server/src/main/java/org/apache/zookeeper/server/PurgeTxnLog.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ public boolean accept(File f) {
135135

136136
}
137137
// add all non-excluded log files
138-
File[] logs = txnLog.getDataDir().listFiles(new MyFileFilter(PREFIX_LOG));
138+
File[] logs = txnLog.getDataLogDir().listFiles(new MyFileFilter(PREFIX_LOG));
139139
List<File> files = new ArrayList<>();
140140
if (logs != null) {
141141
files.addAll(Arrays.asList(logs));

zookeeper-server/src/main/java/org/apache/zookeeper/server/ZooKeeperServer.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -388,13 +388,13 @@ public ZooKeeperServer(FileTxnSnapLog txnLogFactory, int tickTime, int minSessio
388388
+ " minSessionTimeout {} ms"
389389
+ " maxSessionTimeout {} ms"
390390
+ " clientPortListenBacklog {}"
391-
+ " datadir {}"
391+
+ " dataLogdir {}"
392392
+ " snapdir {}",
393393
tickTime,
394394
getMinSessionTimeout(),
395395
getMaxSessionTimeout(),
396396
getClientPortListenBacklog(),
397-
txnLogFactory.getDataDir(),
397+
txnLogFactory.getDataLogDir(),
398398
txnLogFactory.getSnapDir());
399399
}
400400

@@ -447,7 +447,7 @@ public void dumpConf(PrintWriter pwriter) {
447447
pwriter.print("dataDirSize=");
448448
pwriter.println(getDataDirSize());
449449
pwriter.print("dataLogDir=");
450-
pwriter.println(zkDb.snapLog.getDataDir().getAbsolutePath());
450+
pwriter.println(zkDb.snapLog.getDataLogDir().getAbsolutePath());
451451
pwriter.print("dataLogSize=");
452452
pwriter.println(getLogDirSize());
453453
pwriter.print("tickTime=");
@@ -469,7 +469,7 @@ public ZooKeeperServerConf getConf() {
469469
return new ZooKeeperServerConf(
470470
getClientPort(),
471471
zkDb.snapLog.getSnapDir().getAbsolutePath(),
472-
zkDb.snapLog.getDataDir().getAbsolutePath(),
472+
zkDb.snapLog.getDataLogDir().getAbsolutePath(),
473473
getTickTime(),
474474
getMaxClientCnxnsPerHost(),
475475
getMinSessionTimeout(),
@@ -664,7 +664,7 @@ public long getLogDirSize() {
664664
if (zkDb == null) {
665665
return 0L;
666666
}
667-
File path = zkDb.snapLog.getDataDir();
667+
File path = zkDb.snapLog.getDataLogDir();
668668
return getDirSize(path);
669669
}
670670

zookeeper-server/src/main/java/org/apache/zookeeper/server/persistence/FileTxnSnapLog.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -204,11 +204,11 @@ public boolean accept(File dir, String name) {
204204
}
205205

206206
/**
207-
* get the datadir used by this filetxn
207+
* get the data log dir used by this filetxn
208208
* snap log
209-
* @return the data dir
209+
* @return the data log dir
210210
*/
211-
public File getDataDir() {
211+
public File getDataLogDir() {
212212
return this.dataDir;
213213
}
214214

zookeeper-server/src/test/java/org/apache/zookeeper/server/ZooKeeperServerMainTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ public void testNonRecoverableError() throws Exception {
198198
// inject problem in server
199199
ZooKeeperServer zooKeeperServer = main.getCnxnFactory().getZooKeeperServer();
200200
FileTxnSnapLog snapLog = zooKeeperServer.getTxnLogFactory();
201-
FileTxnSnapLog fileTxnSnapLogWithError = new FileTxnSnapLog(snapLog.getDataDir(), snapLog.getSnapDir()) {
201+
FileTxnSnapLog fileTxnSnapLogWithError = new FileTxnSnapLog(snapLog.getDataLogDir(), snapLog.getSnapDir()) {
202202
@Override
203203
public void commit() throws IOException {
204204
throw new IOException("Input/output error");

zookeeper-server/src/test/java/org/apache/zookeeper/server/ZooKeeperServerTest.java

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import java.util.List;
3030
import java.util.Map;
3131
import java.util.UUID;
32+
import org.apache.zookeeper.PortAssignment;
3233
import org.apache.zookeeper.ZKTestCase;
3334
import org.apache.zookeeper.metrics.MetricsUtils;
3435
import org.apache.zookeeper.proto.ConnectRequest;
@@ -42,6 +43,45 @@
4243

4344
public class ZooKeeperServerTest extends ZKTestCase {
4445

46+
@Test
47+
public void testDirSize() throws Exception {
48+
ZooKeeperServer zks = null;
49+
ServerCnxnFactory cnxnFactory = null;
50+
51+
try {
52+
final File dataDir = ClientBase.createTmpDir();
53+
final File logDir = ClientBase.createTmpDir();
54+
55+
zks = new ZooKeeperServer(dataDir, logDir, 3000);
56+
57+
// validate dir size before server starts
58+
assertEquals(0, zks.getDataDirSize());
59+
assertEquals(0, zks.getLogDirSize());
60+
61+
// start server
62+
final String hostPort = "127.0.0.1:" + PortAssignment.unique();
63+
final int port = Integer.parseInt(hostPort.split(":")[1]);
64+
cnxnFactory = ServerCnxnFactory.createFactory(port, -1);
65+
cnxnFactory.startup(zks);
66+
assertTrue(ClientBase.waitForServerUp(hostPort, 120000));
67+
68+
// validate data size is greater than 0 as snapshot has been taken when server starts
69+
assertTrue(zks.getDataDirSize() > 0);
70+
71+
// validate log size is 0 as no txn yet
72+
assertEquals(0, zks.getLogDirSize());
73+
} finally {
74+
if (cnxnFactory != null) {
75+
cnxnFactory.shutdown();
76+
}
77+
78+
if (zks != null) {
79+
zks.shutdown();
80+
}
81+
}
82+
}
83+
84+
4585
@Test
4686
public void testSortDataDirAscending() {
4787
File[] files = new File[5];

zookeeper-server/src/test/java/org/apache/zookeeper/server/persistence/FileTxnSnapLogTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ public void testWithAutoCreateDataDir() throws IOException {
177177

178178
assertTrue(logDir.exists());
179179
assertTrue(snapDir.exists());
180-
assertTrue(fileTxnSnapLog.getDataDir().exists());
180+
assertTrue(fileTxnSnapLog.getDataLogDir().exists());
181181
assertTrue(fileTxnSnapLog.getSnapDir().exists());
182182
}
183183

zookeeper-server/src/test/java/org/apache/zookeeper/server/quorum/QuorumPeerMainTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -935,7 +935,7 @@ public void testDataDirAndDataLogDir() throws Exception {
935935

936936
// Assert
937937
FileTxnSnapLog txnFactory = qpMain.getQuorumPeer().getTxnFactory();
938-
assertEquals(Paths.get(dataLogDir.getAbsolutePath(), "version-2").toString(), txnFactory.getDataDir().getAbsolutePath());
938+
assertEquals(Paths.get(dataLogDir.getAbsolutePath(), "version-2").toString(), txnFactory.getDataLogDir().getAbsolutePath());
939939
assertEquals(Paths.get(dataDir.getAbsolutePath(), "version-2").toString(), txnFactory.getSnapDir().getAbsolutePath());
940940
} finally {
941941
FileUtils.deleteDirectory(dataDir);

zookeeper-server/src/test/java/org/apache/zookeeper/server/quorum/QuorumPeerTestBase.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,7 @@ public boolean isAlive() {
368368
}
369369

370370
public void reinitialize() throws IOException {
371-
File dataDir = main.quorumPeer.getTxnFactory().getDataDir();
371+
File dataDir = main.quorumPeer.getTxnFactory().getDataLogDir();
372372
ClientBase.recursiveDelete(dataDir);
373373
ClientBase.createInitializeFile(dataDir.getParentFile());
374374
}

zookeeper-server/src/test/java/org/apache/zookeeper/server/quorum/WatchLeakTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ public Boolean answer(InvocationOnMock invocation) throws Throwable {
102102
QuorumPeer quorumPeer = mock(QuorumPeer.class);
103103
FileTxnSnapLog logfactory = mock(FileTxnSnapLog.class);
104104
// Directories are not used but we need it to avoid NPE
105-
when(logfactory.getDataDir()).thenReturn(new File(""));
105+
when(logfactory.getDataLogDir()).thenReturn(new File(""));
106106
when(logfactory.getSnapDir()).thenReturn(new File(""));
107107
FollowerZooKeeperServer fzks = null;
108108

zookeeper-server/src/test/java/org/apache/zookeeper/server/quorum/Zab1_0Test.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -575,7 +575,7 @@ public void converseWithFollower(InputArchive ia, OutputArchive oa, Follower f)
575575
File tmpDir = File.createTempFile("test", "dir", testData);
576576
tmpDir.delete();
577577
tmpDir.mkdir();
578-
File logDir = f.fzk.getTxnLogFactory().getDataDir().getParentFile();
578+
File logDir = f.fzk.getTxnLogFactory().getDataLogDir().getParentFile();
579579
File snapDir = f.fzk.getTxnLogFactory().getSnapDir().getParentFile();
580580
//Spy on ZK so we can check if a snapshot happened or not.
581581
f.zk = spy(f.zk);
@@ -709,7 +709,7 @@ public void converseWithFollower(InputArchive ia, OutputArchive oa, Follower f)
709709
File tmpDir = File.createTempFile("test", "dir", testData);
710710
tmpDir.delete();
711711
tmpDir.mkdir();
712-
File logDir = f.fzk.getTxnLogFactory().getDataDir().getParentFile();
712+
File logDir = f.fzk.getTxnLogFactory().getDataLogDir().getParentFile();
713713
File snapDir = f.fzk.getTxnLogFactory().getSnapDir().getParentFile();
714714
//Spy on ZK so we can check if a snapshot happened or not.
715715
f.zk = spy(f.zk);
@@ -940,7 +940,7 @@ public void converseWithObserver(InputArchive ia, OutputArchive oa, Observer o)
940940
File tmpDir = File.createTempFile("test", "dir", testData);
941941
tmpDir.delete();
942942
tmpDir.mkdir();
943-
File logDir = o.zk.getTxnLogFactory().getDataDir().getParentFile();
943+
File logDir = o.zk.getTxnLogFactory().getDataLogDir().getParentFile();
944944
File snapDir = o.zk.getTxnLogFactory().getSnapDir().getParentFile();
945945
try {
946946
assertEquals(0, o.self.getAcceptedEpoch());

0 commit comments

Comments
 (0)