-
Notifications
You must be signed in to change notification settings - Fork 1.5k
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
Merging the LRU branch #1600
Conversation
* 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
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.
LGTM with a few final nits.
*/ | ||
class RollingSequenceNumberBuffer { | ||
public: | ||
explicit RollingSequenceNumberBuffer(NSUInteger max_elements) |
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 should be size_t max_elements
as should the field below (since we're using it to compare against queue_.size()
)
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.
Done.
return queue_.top(); | ||
} | ||
|
||
std::size_t size() const { |
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.
nit: you can spell std::size_t
as just size_t
(we do so elsewhere).
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.
Done.
FSTListenSequenceNumber ReadSequenceNumber(const absl::string_view &slice) { | ||
FSTListenSequenceNumber decoded; | ||
absl::string_view tmp(slice.data(), slice.size()); | ||
if (OrderedCode::ReadSignedNumIncreasing(&tmp, &decoded)) { |
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.
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.)
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.
Done.
@end | ||
|
||
@implementation FSTMemoryEagerReferenceDelegate { | ||
std::unique_ptr<std::unordered_set<DocumentKey, DocumentKeyHash> > _orphaned; |
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 C++11, the lexical structure changed such that >>
to close off nested templates is allowed. You no longer need to protect against this here.
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.
We are living in the future!
- (void)removeTarget:(FSTQueryData *)queryData { | ||
for (const DocumentKey &docKey : | ||
[_persistence.queryCache matchingKeysForTargetID:queryData.targetID]) { | ||
self->_orphaned->insert(docKey); |
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.
Extraneous self->
. (I only flag it because we're accessing _orphaned
directly elsewhere in here.)
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.
Ah. It probably used to be in a block and then got migrated.
The build failure under Xcode 8 may be due to a missing |
Everything should have already been reviewed. This is the merge of the
LRU
bookkeeping into master.