{"action":"created","issue":{"url":"https://api.github.com/repos/attic-labs/noms/issues/2624","repository_url":"https://api.github.com/repos/attic-labs/noms","labels_url":"https://api.github.com/repos/attic-labs/noms/issues/2624/labels{/name}","comments_url":"https://api.github.com/repos/attic-labs/noms/issues/2624/comments","events_url":"https://api.github.com/repos/attic-labs/noms/issues/2624/events","html_url":"https://github.com/attic-labs/noms/pull/2624","id":179566850,"number":2624,"title":"LocalDatabase vends separate validating BatchStore","user":{"login":"cmasone-attic","id":13224090,"avatar_url":"https://avatars.githubusercontent.com/u/13224090?v=3","gravatar_id":"","url":"https://api.github.com/users/cmasone-attic","html_url":"https://github.com/cmasone-attic","followers_url":"https://api.github.com/users/cmasone-attic/followers","following_url":"https://api.github.com/users/cmasone-attic/following{/other_user}","gists_url":"https://api.github.com/users/cmasone-attic/gists{/gist_id}","starred_url":"https://api.github.com/users/cmasone-attic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cmasone-attic/subscriptions","organizations_url":"https://api.github.com/users/cmasone-attic/orgs","repos_url":"https://api.github.com/users/cmasone-attic/repos","events_url":"https://api.github.com/users/cmasone-attic/events{/privacy}","received_events_url":"https://api.github.com/users/cmasone-attic/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"rafael-atticlabs","id":12848669,"avatar_url":"https://avatars.githubusercontent.com/u/12848669?v=3","gravatar_id":"","url":"https://api.github.com/users/rafael-atticlabs","html_url":"https://github.com/rafael-atticlabs","followers_url":"https://api.github.com/users/rafael-atticlabs/followers","following_url":"https://api.github.com/users/rafael-atticlabs/following{/other_user}","gists_url":"https://api.github.com/users/rafael-atticlabs/gists{/gist_id}","starred_url":"https://api.github.com/users/rafael-atticlabs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rafael-atticlabs/subscriptions","organizations_url":"https://api.github.com/users/rafael-atticlabs/orgs","repos_url":"https://api.github.com/users/rafael-atticlabs/repos","events_url":"https://api.github.com/users/rafael-atticlabs/events{/privacy}","received_events_url":"https://api.github.com/users/rafael-atticlabs/received_events","type":"User","site_admin":false},"assignees":[{"login":"rafael-atticlabs","id":12848669,"avatar_url":"https://avatars.githubusercontent.com/u/12848669?v=3","gravatar_id":"","url":"https://api.github.com/users/rafael-atticlabs","html_url":"https://github.com/rafael-atticlabs","followers_url":"https://api.github.com/users/rafael-atticlabs/followers","following_url":"https://api.github.com/users/rafael-atticlabs/following{/other_user}","gists_url":"https://api.github.com/users/rafael-atticlabs/gists{/gist_id}","starred_url":"https://api.github.com/users/rafael-atticlabs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rafael-atticlabs/subscriptions","organizations_url":"https://api.github.com/users/rafael-atticlabs/orgs","repos_url":"https://api.github.com/users/rafael-atticlabs/repos","events_url":"https://api.github.com/users/rafael-atticlabs/events{/privacy}","received_events_url":"https://api.github.com/users/rafael-atticlabs/received_events","type":"User","site_admin":false}],"milestone":null,"comments":2,"created_at":"2016-09-27T17:57:13Z","updated_at":"2016-09-27T17:59:26Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/attic-labs/noms/pulls/2624","html_url":"https://github.com/attic-labs/noms/pull/2624","diff_url":"https://github.com/attic-labs/noms/pull/2624.diff","patch_url":"https://github.com/attic-labs/noms/pull/2624.patch"},"body":"This patch modifies LocalDatabase so that it no longer swaps out\r\nits embedded ValueStore during Pull(). The reason it was doing this\r\nis that Pull() injects chunks directly into a Database, without\r\ndoing any work on its own to ensure correctness. For LocalDatabase,\r\nWriteValue() performs de-facto validation as it goes, so it does not\r\nneed this additional validation in the general case. To address the\r\nformer wtithout impacting the latter, we were making LocalDatabase\r\nswap out its ValueStore() during Pull(), replacing it with one that\r\nperforms validation.\r\n\r\nThis led to inconsistencies, seen in issue #2598. Collections read\r\nfrom the DB _before_ this swap could have weird behavior if they\r\nwere modified and written after this swap.\r\n\r\nThe new code just lazily creates a BatchStore for use during Pull().\r\n\r\nFixes #2598"},"comment":{"url":"https://api.github.com/repos/attic-labs/noms/issues/comments/249945853","html_url":"https://github.com/attic-labs/noms/pull/2624#issuecomment-249945853","issue_url":"https://api.github.com/repos/attic-labs/noms/issues/2624","id":249945853,"user":{"login":"cmasone-attic","id":13224090,"avatar_url":"https://avatars.githubusercontent.com/u/13224090?v=3","gravatar_id":"","url":"https://api.github.com/users/cmasone-attic","html_url":"https://github.com/cmasone-attic","followers_url":"https://api.github.com/users/cmasone-attic/followers","following_url":"https://api.github.com/users/cmasone-attic/following{/other_user}","gists_url":"https://api.github.com/users/cmasone-attic/gists{/gist_id}","starred_url":"https://api.github.com/users/cmasone-attic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cmasone-attic/subscriptions","organizations_url":"https://api.github.com/users/cmasone-attic/orgs","repos_url":"https://api.github.com/users/cmasone-attic/repos","events_url":"https://api.github.com/users/cmasone-attic/events{/privacy}","received_events_url":"https://api.github.com/users/cmasone-attic/received_events","type":"User","site_admin":false},"created_at":"2016-09-27T17:59:26Z","updated_at":"2016-09-27T17:59:26Z","body":"Jenkins: perf this"}}
{"actor":{"display_login":"cmasone-attic"}}