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
Near cache consistency improvements #9660
Conversation
4949926
to
85ce61b
Compare
a54515f
to
bbfa48d
Compare
12b137b
to
0a477ac
Compare
@ahmetmircik: what's preventing to have this merged? |
@jerrinot ee counterpart is not ready yet. |
826053e
to
22adb93
Compare
Fixes #9536 |
b7ffc81
to
3f3b5de
Compare
Test PASSed. |
3f3b5de
to
071f18b
Compare
Test PASSed. |
071f18b
to
76bff1a
Compare
Test PASSed. |
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.
👍 with a minor comment to update NearCacheDataRecordStore.getRecordStorageMemoryCost
to include the additional long
's cost for recordState
field
76bff1a
to
02bb976
Compare
@vbekiaris fixed |
02bb976
to
952a912
Compare
Test PASSed. |
952a912
to
f112a07
Compare
- Removed stale read probability during near cache updates. - Removed `KeyStateMarker` and introduced record states. A record can have 2 main states now RESERVED, READ_PERMITTED. This new approach will help to utilize near cache more effectively compared to existing approach. Because in existing approach, only one thread can operate on a partition, if other threads want to put some other keys belonging to that partition, they can't do it because partition is already locked by first thread. - fixes hazelcast#9403 - Implemented `computeIfPresent` for `IConcurrentMap` and introduced `IBiFunction`
f112a07
to
0a00c1a
Compare
Test PASSed. |
1 similar comment
Test PASSed. |
KeyStateMarker
and introduced record states. A record can have 3 states now UPDATE_STARTED, REMOVE_REQUESTED, READ_PERMITTED. This new approach will help to utilize near cache more effectively compared to existing approach. Because in existing approach, only one thread can operate on a partition, if other threads want to put some other keys belonging to that partition, they can't do it because partition is already locked by first thread.computeIfPresent
andmerge
forIConcurrentMap
and introducedIBiFunction
PS: EE part will be introduced upon end of this PRs' review.