[go: nahoru, domu]

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

Merging the LRU branch #1600

Merged
merged 8 commits into from
Jul 27, 2018
Merged

Merging the LRU branch #1600

merged 8 commits into from
Jul 27, 2018

Conversation

gsoltis
Copy link
@gsoltis gsoltis commented Jul 27, 2018

Everything should have already been reviewed. This is the merge of the LRU bookkeeping into master.

Greg Soltis added 6 commits July 18, 2018 12:33
* Bump sequence number on resume token refresh

* Style

* Fix comment formatting

* Add FSTReferenceDelegate definition and documentation

* Add methods to return nil for delegates, wire up inMemoryPins

* Add hook for removing a reference

* Start work on reference delegates

* Fix up tests to support adding documents at a sequence number

* Implement removing references

* Remove from target when dropped from local view

* Fix warning

* Add hooks for removal from mutation queue

* Add hooks for limbo document updates

* Style

* Drop commented-out code

* Fixup after merging master

* Start importing delegate implementations

* Memory LRU tests pass

* Make memory lru work, start fixing up lru tests. All with hidden sequence numbers

* Most LRU tests passing w/ memory

* Big LRU test passes w/ memory

* Leveldb LRU tests pass

* All passing except local store tests

* All tests pass

* Fix localstore tests

* Revert removeQueryData change

* Remove collectGarbage calls

* Remove NoOp GC

* More cleanup

* Refactor FSTHelpers

* Cleanup and commenting

* Comments and cleanup

* Comments

* Drop nullable for reference delegates, and old persistence method on spec tests

* Fix missing sequence bump, remove unneeded targetID

* Style

* Drop commented-out code

* Satisfy the linters and copyrighters, etc.

* Drop more commented-out code

* Fix import -> include, NSUInteger -> int

* Start work on test comments

* FSTDocumentKey -> DocumentKey

* Sample of LRU test refactor (#1424)

* Sample of test refactor

* Drop errant 'struct' keyword

* More test refactoring

* Make gc a member variable too

* Tests refactored to use member variables

* Assign delegates procedurally, rather than passing in a block

* Fix up FSTLevelDB a little

* listens -> listenTargets

* Rename GCEnabled

* remove isSentinel

* reword comment

* Add case for non-eager GC to test

* Style

* Cleaning the lint trap

* Clean up LRU tests (#1433)

* Add copious helpers and some docs to lru tests

* Style

* Method name refactor, add comment

* Drop FSTGarbageCollector and FSTEagerGarbageCollector (#1440)

* Drop FSTGarbageCollector and FSTEagerGarbageCollector

* Drop unused containsKey from FSTLevelDBMutationQueue

* Style
* Include sequence number in FSTQueryData hash and isEqual methods

* Style

* Switch to util::Hash
* Add failing test

* Move the restart tests to the leveldb test suite

* Style

* Add new persistence test helper

* Fix test failure
Copy link
Contributor
@wilhuff wilhuff left a comment

Choose a reason for hiding this comment

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

LGTM with a few final nits.

*/
class RollingSequenceNumberBuffer {
public:
explicit RollingSequenceNumberBuffer(NSUInteger max_elements)
Copy link
Contributor

Choose a reason for hiding this comment

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

This should be size_t max_elements as should the field below (since we're using it to compare against queue_.size())

Copy link
Author

Choose a reason for hiding this comment

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

Done.

return queue_.top();
}

std::size_t size() const {
Copy link
Contributor

Choose a reason for hiding this comment

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

nit: you can spell std::size_t as just size_t (we do so elsewhere).

Copy link
Author

Choose a reason for hiding this comment

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

Done.

FSTListenSequenceNumber ReadSequenceNumber(const absl::string_view &slice) {
FSTListenSequenceNumber decoded;
absl::string_view tmp(slice.data(), slice.size());
if (OrderedCode::ReadSignedNumIncreasing(&tmp, &decoded)) {
Copy link
Contributor

Choose a reason for hiding this comment

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

Super-ultra-mega-nitty-mcnitface: elsewhere we largely follow the pattern of

if (is-a-failure) { 
  return handle_failure();
}
proceed();

Here it doesn't matter now buf if we ever added anything to the affirmative case it would look weird. Consider reversing the clauses. (Feel free to ignore.)

Copy link
Author

Choose a reason for hiding this comment

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

Done.

@end

@implementation FSTMemoryEagerReferenceDelegate {
std::unique_ptr<std::unordered_set<DocumentKey, DocumentKeyHash> > _orphaned;
Copy link
Contributor

Choose a reason for hiding this comment

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

With C++11, the lexical structure changed such that >> to close off nested templates is allowed. You no longer need to protect against this here.

Copy link
Author

Choose a reason for hiding this comment

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

We are living in the future!

- (void)removeTarget:(FSTQueryData *)queryData {
for (const DocumentKey &docKey :
[_persistence.queryCache matchingKeysForTargetID:queryData.targetID]) {
self->_orphaned->insert(docKey);
Copy link
Contributor

Choose a reason for hiding this comment

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

Extraneous self->. (I only flag it because we're accessing _orphaned directly elsewhere in here.)

Copy link
Author

Choose a reason for hiding this comment

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

Ah. It probably used to be in a block and then got migrated.

@wilhuff
Copy link
Contributor
wilhuff commented Jul 27, 2018

The build failure under Xcode 8 may be due to a missing #include <functional> in util/hashing.h.

@wilhuff wilhuff assigned gsoltis and unassigned wilhuff Jul 27, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants