{"action":"created","issue":{"url":"https://api.github.com/repos/basho/riak_kv/issues/1495","repository_url":"https://api.github.com/repos/basho/riak_kv","labels_url":"https://api.github.com/repos/basho/riak_kv/issues/1495/labels{/name}","comments_url":"https://api.github.com/repos/basho/riak_kv/issues/1495/comments","events_url":"https://api.github.com/repos/basho/riak_kv/issues/1495/events","html_url":"https://github.com/basho/riak_kv/pull/1495","id":181448331,"number":1495,"title":"Always drop dots from CRDTs, not just on merge","user":{"login":"nickelization","id":4108538,"avatar_url":"https://avatars.githubusercontent.com/u/4108538?v=3","gravatar_id":"","url":"https://api.github.com/users/nickelization","html_url":"https://github.com/nickelization","followers_url":"https://api.github.com/users/nickelization/followers","following_url":"https://api.github.com/users/nickelization/following{/other_user}","gists_url":"https://api.github.com/users/nickelization/gists{/gist_id}","starred_url":"https://api.github.com/users/nickelization/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nickelization/subscriptions","organizations_url":"https://api.github.com/users/nickelization/orgs","repos_url":"https://api.github.com/users/nickelization/repos","events_url":"https://api.github.com/users/nickelization/events{/privacy}","received_events_url":"https://api.github.com/users/nickelization/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2016-10-06T15:29:37Z","updated_at":"2016-10-06T19:59:18Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/basho/riak_kv/pulls/1495","html_url":"https://github.com/basho/riak_kv/pull/1495","diff_url":"https://github.com/basho/riak_kv/pull/1495.diff","patch_url":"https://github.com/basho/riak_kv/pull/1495.patch"},"body":"Prior to this change, the first write of a new CRDT would end up with a dot in its metadata, since dots were only being dropped on merge. This could potentially lead to sibling CRDTs on disk, since our merge code assumes CRDTs will never have dots.\r\n\r\nAlthough we should never have sibling values for CRDTs present on disk, this bug did not normally cause problems, because using the `fetch_type` client functions would still cause the values to be merged prior to returning them to the client. However, doing a basic `get` could cause the siblings to be exposed to the client directly.\r\n\r\nThis was the issue that has been causing the `test_hll` test to intermittently fail. The issue can be consistently reproduced using the new `verify_no_datatype_siblings` test, and applying this fix causes that test to pass.\r\n\r\nAdding the new call to `drop_the_dot` is needed in order to fix this issue, but removing the old makes no difference for new data, and would be more efficient. However, if we remove the old call then we will run into problems with existing CRDTs on disk that already have dots present, so I'm leaving the old call in place to deal with any such scenarios."},"comment":{"url":"https://api.github.com/repos/basho/riak_kv/issues/comments/252071833","html_url":"https://github.com/basho/riak_kv/pull/1495#issuecomment-252071833","issue_url":"https://api.github.com/repos/basho/riak_kv/issues/1495","id":252071833,"user":{"login":"russelldb","id":56321,"avatar_url":"https://avatars.githubusercontent.com/u/56321?v=3","gravatar_id":"","url":"https://api.github.com/users/russelldb","html_url":"https://github.com/russelldb","followers_url":"https://api.github.com/users/russelldb/followers","following_url":"https://api.github.com/users/russelldb/following{/other_user}","gists_url":"https://api.github.com/users/russelldb/gists{/gist_id}","starred_url":"https://api.github.com/users/russelldb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/russelldb/subscriptions","organizations_url":"https://api.github.com/users/russelldb/orgs","repos_url":"https://api.github.com/users/russelldb/repos","events_url":"https://api.github.com/users/russelldb/events{/privacy}","received_events_url":"https://api.github.com/users/russelldb/received_events","type":"User","site_admin":false},"created_at":"2016-10-06T19:59:18Z","updated_at":"2016-10-06T19:59:18Z","body":"@nickelization are you saying `drop_the_dot` gets called twice now?"}}
{"actor":{"display_login":"russelldb"}}