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

Montage as an instance #3

Merged
merged 68 commits into from
Nov 22, 2020
Merged

Conversation

roghnin
Copy link
Member

@roghnin roghnin commented Oct 22, 2020

Refactor the code to have all Montage-related stuff in an instance. Three steps:

  1. Put all initialization and finalization into rideables;
  2. Instantiate montage
  3. Use object-oriented APIs in rideables.

@roghnin roghnin added the refactor Re-structure code base label Oct 30, 2020
@roghnin
Copy link
Member Author

roghnin commented Oct 31, 2020

Some modifications are made to DCSS-related code in the last two commits. Please take a look when you have time. Thanks @qtcwt

src/Rideable.hpp Show resolved Hide resolved
src/persist/common_macros.hpp Show resolved Hide resolved
src/persist/PersistStructs.cpp Outdated Show resolved Hide resolved
src/tests/ChurnTest.hpp Outdated Show resolved Hide resolved
@qtcwt
Copy link
Member

qtcwt commented Nov 2, 2020

Some modifications are made to DCSS-related code in the last two commits. Please take a look when you have time. Thanks @qtcwt

I've added some comments to what I didn't fully understand/we could optimize, relevant or irrelevant to DCSS. The rest looks pretty good to me. Thanks!

Copy link
Member Author

@roghnin roghnin left a comment

Choose a reason for hiding this comment

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

I think lin_var is a nice name. Thanks!

@roghnin
Copy link
Member Author

roghnin commented Nov 15, 2020

I would slightly prefer to keep both sets of APIs because some programs, such as Memcached, are not object-oriented, and may find it inconvenient to use OO API.
If we really want to keep only one, we could create a dummy global Recoverable object in Memcached and call functions of this object. See what you think.

I'll leave them as they are then. Currently the global API has one global EpochSys object in the background, as shown in the cpp file.

One question: why do we need an extra file of PersistStructs.hpp? Could stuffs in it be merged to Recoverable.hpp?

I wasn't able to resolve the include dependencies at first, but I think I can do something similar right now.

src/persist/EpochSys.hpp Show resolved Hide resolved
src/persist/persist_utils.hpp Show resolved Hide resolved
src/persist/persist_utils.hpp Show resolved Hide resolved
@qtcwt
Copy link
Member

qtcwt commented Nov 15, 2020

I wasn't able to resolve the include dependencies at first, but I think I can do something similar right now.

Nice. Thanks!

Copy link
Member

@qtcwt qtcwt left a comment

Choose a reason for hiding this comment

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

I've done sanity check of pending_allocs-related stuffs. Everything looks great to me!

src/persist/EpochSys.hpp Show resolved Hide resolved
@qtcwt qtcwt linked an issue Nov 15, 2020 that may be closed by this pull request
@roghnin roghnin merged commit f0c724c into urcs-sync:master Nov 22, 2020
@roghnin roghnin deleted the montage_instance branch November 23, 2020 01:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
refactor Re-structure code base
Projects
None yet
Development

Successfully merging this pull request may close these issues.

ABORT_OP doesn't undo epoch registration of payloads
2 participants