-
Notifications
You must be signed in to change notification settings - Fork 600
HDDS-14859. Use RocksDb secondary instance for validating volumes. #9947
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from all commits
9f50fba
c2ffea9
7190e4e
a2160c2
7dc2bfd
02a6986
dafaf60
13bba73
1986d60
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -311,17 +311,20 @@ public VolumeCheckResult checkDbHealth(File dbFile) throws InterruptedException | |||||
| } | ||||||
|
|
||||||
| try (ManagedOptions managedOptions = new ManagedOptions(); | ||||||
| ManagedRocksDB ignored = ManagedRocksDB.openReadOnly(managedOptions, dbFile.toString())) { | ||||||
| ManagedRocksDB ignored = | ||||||
| ManagedRocksDB.openAsSecondary(managedOptions, dbFile.toString(), getTmpDir().getPath())) { | ||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. In this comment it looks like the logs are being written to the disk check dir, but it seems like the code doesn't match.
Suggested change
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
I'm also not seeing this. Are there still some commits pending? |
||||||
| // Do nothing. Only check if rocksdb is accessible. | ||||||
| LOG.debug("Successfully opened the database at \"{}\" for HDDS volume {}.", dbFile, getStorageDir()); | ||||||
| } catch (Exception e) { | ||||||
| if (Thread.currentThread().isInterrupted()) { | ||||||
| throw new InterruptedException("Check of database for volume " + this + " interrupted."); | ||||||
| } | ||||||
| LOG.warn("Could not open Volume DB located at {}", dbFile, e); | ||||||
|
|
||||||
| LOG.error("Could not open Volume DB located at {}", dbFile, e); | ||||||
| getIoTestSlidingWindow().add(); | ||||||
| } | ||||||
|
|
||||||
|
|
||||||
| if (getIoTestSlidingWindow().isExceeded()) { | ||||||
| LOG.error("Failed to open the database at \"{}\" for HDDS volume {}: " + | ||||||
| "encountered more than the {} tolerated failures.", | ||||||
|
|
||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -75,6 +75,14 @@ public static ManagedRocksDB openReadOnly( | |
| ); | ||
| } | ||
|
|
||
| public static ManagedRocksDB openAsSecondary( | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @ptlrs thanks for all the research you've done on secondary instances. It would be great to put a summary as a javadoc above this method about how they work and what we can expect vs. readonly instances. |
||
| final ManagedOptions options, | ||
| final String dbPath, | ||
| final String secondaryDbLogFilePath) | ||
| throws RocksDBException { | ||
| return new ManagedRocksDB(RocksDB.openAsSecondary(options, dbPath, secondaryDbLogFilePath)); | ||
|
ptlrs marked this conversation as resolved.
|
||
| } | ||
|
|
||
| public static ManagedRocksDB open( | ||
| final DBOptions options, final String path, | ||
| final List<ColumnFamilyDescriptor> columnFamilyDescriptors, | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.