{"action":"created","issue":{"url":"https://api.github.com/repos/firebase/firebase-ios-sdk/issues/695","repository_url":"https://api.github.com/repos/firebase/firebase-ios-sdk","labels_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/issues/695/labels{/name}","comments_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/issues/695/comments","events_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/issues/695/events","html_url":"https://github.com/firebase/firebase-ios-sdk/pull/695","id":291007443,"node_id":"MDExOlB1bGxSZXF1ZXN0MTY0NzAwNTg3","number":695,"title":"Memory lru","user":{"login":"gsoltis","id":418301,"node_id":"MDQ6VXNlcjQxODMwMQ==","avatar_url":"https://avatars2.githubusercontent.com/u/418301?v=4","gravatar_id":"","url":"https://api.github.com/users/gsoltis","html_url":"https://github.com/gsoltis","followers_url":"https://api.github.com/users/gsoltis/followers","following_url":"https://api.github.com/users/gsoltis/following{/other_user}","gists_url":"https://api.github.com/users/gsoltis/gists{/gist_id}","starred_url":"https://api.github.com/users/gsoltis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gsoltis/subscriptions","organizations_url":"https://api.github.com/users/gsoltis/orgs","repos_url":"https://api.github.com/users/gsoltis/repos","events_url":"https://api.github.com/users/gsoltis/events{/privacy}","received_events_url":"https://api.github.com/users/gsoltis/received_events","type":"User","site_admin":false},"labels":[{"id":713434153,"node_id":"MDU6TGFiZWw3MTM0MzQxNTM=","url":"https://api.github.com/repos/firebase/firebase-ios-sdk/labels/Firestore","name":"Firestore","color":"c5def5","default":false},{"id":658858759,"node_id":"MDU6TGFiZWw2NTg4NTg3NTk=","url":"https://api.github.com/repos/firebase/firebase-ios-sdk/labels/cla:%20yes","name":"cla: yes","color":"ededed","default":false}],"state":"closed","locked":false,"assignee":{"login":"gsoltis","id":418301,"node_id":"MDQ6VXNlcjQxODMwMQ==","avatar_url":"https://avatars2.githubusercontent.com/u/418301?v=4","gravatar_id":"","url":"https://api.github.com/users/gsoltis","html_url":"https://github.com/gsoltis","followers_url":"https://api.github.com/users/gsoltis/followers","following_url":"https://api.github.com/users/gsoltis/following{/other_user}","gists_url":"https://api.github.com/users/gsoltis/gists{/gist_id}","starred_url":"https://api.github.com/users/gsoltis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gsoltis/subscriptions","organizations_url":"https://api.github.com/users/gsoltis/orgs","repos_url":"https://api.github.com/users/gsoltis/repos","events_url":"https://api.github.com/users/gsoltis/events{/privacy}","received_events_url":"https://api.github.com/users/gsoltis/received_events","type":"User","site_admin":false},"assignees":[{"login":"gsoltis","id":418301,"node_id":"MDQ6VXNlcjQxODMwMQ==","avatar_url":"https://avatars2.githubusercontent.com/u/418301?v=4","gravatar_id":"","url":"https://api.github.com/users/gsoltis","html_url":"https://github.com/gsoltis","followers_url":"https://api.github.com/users/gsoltis/followers","following_url":"https://api.github.com/users/gsoltis/following{/other_user}","gists_url":"https://api.github.com/users/gsoltis/gists{/gist_id}","starred_url":"https://api.github.com/users/gsoltis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gsoltis/subscriptions","organizations_url":"https://api.github.com/users/gsoltis/orgs","repos_url":"https://api.github.com/users/gsoltis/repos","events_url":"https://api.github.com/users/gsoltis/events{/privacy}","received_events_url":"https://api.github.com/users/gsoltis/received_events","type":"User","site_admin":false}],"milestone":null,"comments":2,"created_at":"2018-01-23T21:56:10Z","updated_at":"2018-12-13T19:16:01Z","closed_at":"2018-12-13T19:16:01Z","author_association":"MEMBER","pull_request":{"url":"https://api.github.com/repos/firebase/firebase-ios-sdk/pulls/695","html_url":"https://github.com/firebase/firebase-ios-sdk/pull/695","diff_url":"https://github.com/firebase/firebase-ios-sdk/pull/695.diff","patch_url":"https://github.com/firebase/firebase-ios-sdk/pull/695.patch"},"body":"Do Not Merge.\r\n\r\nThis PR shows an implementation of FSTLRUGarbageCollector. The functioning of that GC strategy requires a few changes to FSTQueryCache.h, which are shown here and implemented for FSTMemoryQueryCache.\r\n\r\nTests are provided for various steps in the process of running the LRU GC, however the GC is not wired into the Local Store and will not yet be triggered. I expect that the tests will run against LevelDB persistence which minimal modifications once I have implemented the necessary pieces in FSTLevelDBQueryCache and any other necessary places.\r\n\r\nThere are two notable changes beyond the LRU implementation and associated query cache changes:\r\n - The local store informs the QueryCache of documents that have been written at the time when they are added to the RemoteDocumentCache.\r\n - FSTMemoryQueryCache now tracks documents that have been written from the point when they are ack'd until the point where they are added to a query target. The second part is an optimization, we could theoretically keep them even after they appear in a target.\r\n\r\nNot yet implemented:\r\n - LevelDB anything. Haven't touched it yet\r\n - Refreshing sequence numbers for queries after receiving resume tokens.\r\n - Handling documents removed from a query in local store"},"comment":{"url":"https://api.github.com/repos/firebase/firebase-ios-sdk/issues/comments/447086524","html_url":"https://github.com/firebase/firebase-ios-sdk/pull/695#issuecomment-447086524","issue_url":"https://api.github.com/repos/firebase/firebase-ios-sdk/issues/695","id":447086524,"node_id":"MDEyOklzc3VlQ29tbWVudDQ0NzA4NjUyNA==","user":{"login":"gsoltis","id":418301,"node_id":"MDQ6VXNlcjQxODMwMQ==","avatar_url":"https://avatars2.githubusercontent.com/u/418301?v=4","gravatar_id":"","url":"https://api.github.com/users/gsoltis","html_url":"https://github.com/gsoltis","followers_url":"https://api.github.com/users/gsoltis/followers","following_url":"https://api.github.com/users/gsoltis/following{/other_user}","gists_url":"https://api.github.com/users/gsoltis/gists{/gist_id}","starred_url":"https://api.github.com/users/gsoltis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gsoltis/subscriptions","organizations_url":"https://api.github.com/users/gsoltis/orgs","repos_url":"https://api.github.com/users/gsoltis/repos","events_url":"https://api.github.com/users/gsoltis/events{/privacy}","received_events_url":"https://api.github.com/users/gsoltis/received_events","type":"User","site_admin":false},"created_at":"2018-12-13T19:16:01Z","updated_at":"2018-12-13T19:16:01Z","author_association":"MEMBER","body":"Yup, a different PR was merged that included this. Closing."}}
{"actor":{"display_login":"gsoltis"}}