You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bookkeeper.apache.org by ch...@apache.org on 2023/05/31 04:04:59 UTC
[bookkeeper] branch master updated: check indexBaseDir specified with ledgerBaseDir (#3967)
This is an automated email from the ASF dual-hosted git repository.
chenhang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git
The following commit(s) were added to refs/heads/master by this push:
new e93a7f1f9b check indexBaseDir specified with ledgerBaseDir (#3967)
e93a7f1f9b is described below
commit e93a7f1f9b2cfaa171e46a21b8e347c9fd3b0921
Author: wenbingshen <ol...@gmail.com>
AuthorDate: Wed May 31 12:04:54 2023 +0800
check indexBaseDir specified with ledgerBaseDir (#3967)
### Motivation
I deployed the pulsar-3.0.0 version, and I observed the log of bookkeeper-4.16.1 as follows, I did not config special indexDirectories, but the printed log told me that indexDirectories was specified, which is wrong.
```
2023-05-23T19:52:45,192+0800 [main] INFO org.apache.bookkeeper.bookie.storage.ldb.SingleDirectoryDbLedgerStorage - indexDir is specified, creating single directory db ledger storage on /data0/pulsar/data/ledgers/current
2023-05-23T19:52:45,322+0800 [main] INFO org.apache.bookkeeper.bookie.storage.ldb.KeyValueStorageRocksDB - Searching for a RocksDB configuration file in /usr/local/pulsar/apache-pulsar-3.0.0/conf/ledger_metadata_rocksdb.conf
2023-05-23T19:52:45,322+0800 [main] INFO org.apache.bookkeeper.bookie.storage.ldb.KeyValueStorageRocksDB - Found a RocksDB configuration file and using it to initialize the RocksDB
2023-05-23T19:52:45,337+0800 [main] INFO org.apache.bookkeeper.bookie.storage.ldb.KeyValueStorageRocksDB - Searching for a RocksDB configuration file in /usr/local/pulsar/apache-pulsar-3.0.0/conf/entry_location_rocksdb.conf
2023-05-23T19:52:45,337+0800 [main] INFO org.apache.bookkeeper.bookie.storage.ldb.KeyValueStorageRocksDB - Found a RocksDB configuration file and using it to initialize the RocksDB
```
here ledgerDirsManager == indexDirsManager, so ledgerDir is always equals indexDir.
https://github.com/apache/bookkeeper/blob/master/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/ldb/DbLedgerStorage.java#L181
```java
for (int i = 0; i < ledgerDirsManager.getAllLedgerDirs().size(); i++) {
File ledgerDir = ledgerDirsManager.getAllLedgerDirs().get(i);
File indexDir = indexDirsManager.getAllLedgerDirs().get(i);
// Create a ledger dirs manager for the single directory
File[] lDirs = new File[1];
// Remove the `/current` suffix which will be appended again by LedgersDirManager
lDirs[0] = ledgerDir.getParentFile();
LedgerDirsManager ldm = new LedgerDirsManager(conf, lDirs, ledgerDirsManager.getDiskChecker(),
NullStatsLogger.INSTANCE);
// Create a index dirs manager for the single directory
File[] iDirs = new File[1];
// Remove the `/current` suffix which will be appended again by LedgersDirManager
iDirs[0] = indexDir.getParentFile();
LedgerDirsManager idm = new LedgerDirsManager(conf, iDirs, indexDirsManager.getDiskChecker(),
NullStatsLogger.INSTANCE);
......
ledgerStorageList.add(newSingleDirectoryDbLedgerStorage(conf, ledgerManager, ldm,
idm, entrylogger,
statsLogger, perDirectoryWriteCacheSize,
perDirectoryReadCacheSize,
readAheadCacheBatchSize, readAheadCacheBatchBytesSize));
......
}
```
---
.../bookie/storage/ldb/SingleDirectoryDbLedgerStorage.java | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/ldb/SingleDirectoryDbLedgerStorage.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/ldb/SingleDirectoryDbLedgerStorage.java
index f54ed28e2b..b04118d620 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/ldb/SingleDirectoryDbLedgerStorage.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/ldb/SingleDirectoryDbLedgerStorage.java
@@ -156,13 +156,15 @@ public class SingleDirectoryDbLedgerStorage implements CompactableLedgerStorage
String ledgerBaseDir = ledgerDirsManager.getAllLedgerDirs().get(0).getPath();
// indexBaseDir default use ledgerBaseDir
String indexBaseDir = ledgerBaseDir;
- if (CollectionUtils.isEmpty(indexDirsManager.getAllLedgerDirs())) {
- log.info("indexDir is not specified, use default, creating single directory db ledger storage on {}",
+ if (CollectionUtils.isEmpty(indexDirsManager.getAllLedgerDirs())
+ || ledgerBaseDir.equals(indexDirsManager.getAllLedgerDirs().get(0).getPath())) {
+ log.info("indexDir is equals ledgerBaseDir, creating single directory db ledger storage on {}",
indexBaseDir);
} else {
// if indexDir is specified, set new value
indexBaseDir = indexDirsManager.getAllLedgerDirs().get(0).getPath();
- log.info("indexDir is specified, creating single directory db ledger storage on {}", indexBaseDir);
+ log.info("indexDir is specified a separate dir, creating single directory db ledger storage on {}",
+ indexBaseDir);
}
StatsLogger ledgerIndexDirStatsLogger = statsLogger