Skip to content
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

Extension for read-committed #12

Merged
merged 9 commits into from
Sep 6, 2020
Merged

Extension for read-committed #12

merged 9 commits into from
Sep 6, 2020

Conversation

SeKwonLee
Copy link
Member

@SeKwonLee SeKwonLee commented Sep 6, 2020

The reference implementations of RECIPE indexes including P-CLHT, P-Bwtree, P-HOT, and P-ART have been updated to guarantee some read-related operations (range scan, negative lookup, and check for value existence) always return committed results by using a non-temporal store, PSwCAS (Persistent Single-word Compare And Swap), and simply adding additional flushes after some loads. Please check out the details about the updates to each index.

  1. P-CLHT
  • Final commit stores (setting or unsetting key entries) have been changed to employ non-temporal stores.
  1. P-Bwtree
  • Flushes are added after specific loads to the entries in the global mapping table. The specific loads include load instructions to the entries of the global mapping table pointing to the final leaf nodes where the resulting values are returned. The loads unrelated to the final leaf nodes don't have to call flushes such as the loads related to tree traversals.
  1. P-HOT
  • Final commit stores (swapping the parent pointer after copy-on-write) are changed to employ non-temporal stores.
  • The swap of root pointer using compare-and-swap is performed by PSwCAS and the accesses to the root pointer are made to check its persistent state.
  1. P-ART
  • Final commit stores (setting a value entry within a node or swapping a parent pointer for node exchange) are changed to employ non-temporal stores.

Updated search operations
1. GetValue: the pointer of a leafnode by global mapping table
is flushed before value is returned
2. Iterator (scan): the pointer of a leafnode by global mapping
table is flushed whenever iterator is moved to different leafnode
@SeKwonLee SeKwonLee changed the title Extension for supporting committed-read Extension for read-committed Sep 6, 2020
@SeKwonLee SeKwonLee merged commit cbd66fb into master Sep 6, 2020
@SeKwonLee SeKwonLee linked an issue Sep 6, 2020 that may be closed by this pull request
@SeKwonLee SeKwonLee deleted the read-committed branch September 6, 2020 20:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Read committed
1 participant