-
Notifications
You must be signed in to change notification settings - Fork 104
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
Add a test that does concurrent lucene updates #2996
Add a test that does concurrent lucene updates #2996
Conversation
2891137
to
2fe1200
Compare
Result of fdb-record-layer-pr on Linux CentOS 7
|
Result of fdb-record-layer-pr on Linux CentOS 7
|
Result of fdb-record-layer-pr on Linux CentOS 7
|
2fe1200
to
5f3f6bf
Compare
Result of fdb-record-layer-pr on Linux CentOS 7
|
5f3f6bf
to
c694659
Compare
Result of fdb-record-layer-pr on Linux CentOS 7
|
Set<Integer> usedPartitionIds = new HashSet<>(); | ||
Tuple lastToTuple = null; | ||
int visitedCount = 0; | ||
if (partitionHighWatermark > 0) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tip: This code is much easier to review if you hide whitespace changes, because the bulk of validateUnpartitionedGroup
is the same, just indented.
...er-lucene/src/test/java/com/apple/foundationdb/record/lucene/LuceneIndexMaintenanceTest.java
Show resolved
Hide resolved
...er-lucene/src/test/java/com/apple/foundationdb/record/lucene/LuceneIndexMaintenanceTest.java
Show resolved
Hide resolved
@@ -64,6 +66,7 @@ public class LuceneIndexTestDataModel { | |||
* </p> | |||
*/ | |||
final Map<Tuple, Map<Tuple, Tuple>> groupingKeyToPrimaryKeyToPartitionKey; | |||
Map<Tuple, Function<Message, Message>> updateableRecords; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This seems very specific and limited - won't it make sense to store the records as "saved records" and handle the update-specific logic in the test class rather than at the model?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I may be hyper-focused on the maintenance tests which have less interesting record shapes, but I feel like, if we want to pull this out, I would also want to abstract away the types a little bit, so that the code above doesn't have to worry about whether it is synthetic or not.
Or perhaps, that the Function
here should be replaced with an object, that has a variety of operations.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For the sake of making progress, then, would you like to check this in as-is and postpone these improvements to a later pr?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I changed this to be an object in #3003 but I think there is definitely room to grow, and polish there.
...er-lucene/src/test/java/com/apple/foundationdb/record/lucene/LuceneIndexMaintenanceTest.java
Show resolved
Hide resolved
Result of fdb-record-layer-pr on Linux CentOS 7
|
There were conflicts around LuceneIndexTestDataModel, particularly the `saveRecord` methods because main added withContent, and this branch added updateableRecords
Result of fdb-record-layer-pr on Linux CentOS 7
|
This adds a new test that does concurrent updates to different records in lucene.
The test references two specific issues:
And configures itself so as to avoid hitting those issues, but as those are fixed, we can expand the test to include coverage for those issues.