Skip to content

Conversation

@ScottDugas
Copy link
Collaborator

In the case of a broader corruption, where records have been corrupted along with the store header, it may be beneficial to look at the indexes involved while looking at the store. This may be useful if you want to resurrect some information from the indexes if any exists.

In the case of a broader corruption, where records have been corrupted along with the store header, it may be beneficial to look at the indexes involved while looking at the store. This may be useful if you want to resurrect some information from the indexes if any exists.
@ScottDugas ScottDugas added the enhancement New feature or request label Dec 11, 2025
@ScottDugas ScottDugas marked this pull request as ready for review December 18, 2025 15:12
* @return a boolean indicating whether a repair needed to be done ({@code true}) or not ({@code false}) and
* the opened store.
*/
@API(API.Status.INTERNAL)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we should consider changing that to EXPERIMENTAL?

* determine that the index can be marked readable for free, but this is not supported.
* If {@code leavePotentiallyCorruptIndexesReadable} is {@code true} they will not be disabled.
* This can be useful if you want to use the potentially corrupt indexes to discern information
* about the corrupted records.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add some verbiage about the inability to commit?

return simpleMetaData(metadata -> metadata.setSplitLongRecords(supportSplitRecords));
}

private void withStore(final FormatVersion formatVersion,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I know this is replacing existing code but it does look fragile in the sense that it creates the store and assumes that the runnable is using the global field for its action - it can be made a little more resilient if the runnable was a consumer of a store instead

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, but that only works if the recordStore field is removed entirely. Which I did, and I think it does make the code more resilient. I had to add some logic around metadata because this now has a different base class, but not much.

…tBase As noted in the PR `withStore` was potentially brittle because of the `recordStore` field. I could have changed that to a consumer but still set the field, but that felt just as bad, so I changed it to extend FDBRecordStoreConcurrentTestBase.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

2 participants