Package org.apache.bookkeeper.bookie
Class LedgerDirsManager
java.lang.Object
org.apache.bookkeeper.bookie.LedgerDirsManager
This class manages ledger directories used by the bookie.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfaceListener for the disk check events will be notified from theLedgerDirsManagerwhenever disk full/failure detected.static classIndicates All configured ledger directories are full. -
Constructor Summary
ConstructorsConstructorDescriptionLedgerDirsManager(ServerConfiguration conf, File[] dirs, DiskChecker diskChecker) LedgerDirsManager(ServerConfiguration conf, File[] dirs, DiskChecker diskChecker, StatsLogger statsLogger) -
Method Summary
Modifier and TypeMethodDescriptionvoidvoidaddToFilledDirs(File dir) Add the dir to filled dirs list.voidaddToWritableDirs(File dir, boolean underWarnThreshold) Add the dir to writable dirs list.Get all ledger dirs configured.getDirsAboveUsableThresholdSize(long thresholdSize, boolean loggingNoWritable) Get disk usages map.Get all dir listeners.longgetTotalDiskSpace(List<File> dirs) Calculate the total amount of disk space in all of the ledger directories put together.longgetTotalFreeSpace(List<File> dirs) Calculate the total amount of free space available in all of the ledger directories put together.Get only writable ledger dirs.booleanbooleanGet dirs, which are full more than threshold.(package private) booleanisDirWritableForNewIndexFile(File indexDir) (package private) FilepickRandomDir(File excludedDir) Return one dir from all dirs, regardless writable or not.(package private) FilepickRandomDir(List<File> dirs, File excludedDir) (package private) FileReturns one of the ledger dir from writable dirs list randomly.(package private) FilepickRandomWritableDir(File excludedDir) Pick up a writable dir from available dirs list randomly.(package private) FilepickRandomWritableDirForNewIndexFile(File excludedDir) Pick up a dir randomly from writableLedgerDirectories.
-
Constructor Details
-
LedgerDirsManager
public LedgerDirsManager(ServerConfiguration conf, File[] dirs, DiskChecker diskChecker) throws IOException - Throws:
IOException
-
LedgerDirsManager
public LedgerDirsManager(ServerConfiguration conf, File[] dirs, DiskChecker diskChecker, StatsLogger statsLogger) throws IOException - Throws:
IOException
-
-
Method Details
-
getAllLedgerDirs
Get all ledger dirs configured. -
getListeners
Get all dir listeners.- Returns:
- list of listeners
-
getTotalFreeSpace
Calculate the total amount of free space available in all of the ledger directories put together.- Returns:
- freeDiskSpace in bytes
- Throws:
IOException
-
getTotalDiskSpace
Calculate the total amount of disk space in all of the ledger directories put together.- Returns:
- totalDiskSpace in bytes
- Throws:
IOException
-
getDiskUsages
Get disk usages map.- Returns:
- disk usages map
-
getWritableLedgerDirs
Get only writable ledger dirs. -
hasWritableLedgerDirs
public boolean hasWritableLedgerDirs()- Returns:
- true if the writableLedgerDirs list has entries
-
getWritableLedgerDirsForNewLog
public List<File> getWritableLedgerDirsForNewLog() throws LedgerDirsManager.NoWritableLedgerDirException -
getDirsAboveUsableThresholdSize
List<File> getDirsAboveUsableThresholdSize(long thresholdSize, boolean loggingNoWritable) throws LedgerDirsManager.NoWritableLedgerDirException -
getFullFilledLedgerDirs
- Returns:
- full-filled ledger dirs.
-
isDirFull
Get dirs, which are full more than threshold. -
addToFilledDirs
Add the dir to filled dirs list. -
addToWritableDirs
Add the dir to writable dirs list.- Parameters:
dir- Dir
-
pickRandomWritableDir
Returns one of the ledger dir from writable dirs list randomly. -
pickRandomWritableDir
Pick up a writable dir from available dirs list randomly. TheexcludedDirwill not be pickedup.- Parameters:
excludedDir- The directory to exclude during pickup.- Throws:
LedgerDirsManager.NoWritableLedgerDirException- if there is no writable dir available.
-
pickRandomWritableDirForNewIndexFile
File pickRandomWritableDirForNewIndexFile(File excludedDir) throws LedgerDirsManager.NoWritableLedgerDirException Pick up a dir randomly from writableLedgerDirectories. If writableLedgerDirectories is empty then pick up a dir randomly from the ledger/indexdirs which have usable space more than minUsableSizeForIndexFileCreation.- Parameters:
excludedDir- The directory to exclude during pickup.- Returns:
- Throws:
LedgerDirsManager.NoWritableLedgerDirException- if there is no dir available.
-
isDirWritableForNewIndexFile
-
pickRandomDir
Return one dir from all dirs, regardless writable or not. -
pickRandomDir
File pickRandomDir(List<File> dirs, File excludedDir) throws LedgerDirsManager.NoWritableLedgerDirException -
addLedgerDirsListener
-
getDiskChecker
-