{"action":"created","issue":{"url":"https://api.github.com/repos/signalfx/golib/issues/29","labels_url":"https://api.github.com/repos/signalfx/golib/issues/29/labels{/name}","comments_url":"https://api.github.com/repos/signalfx/golib/issues/29/comments","events_url":"https://api.github.com/repos/signalfx/golib/issues/29/events","html_url":"https://github.com/signalfx/golib/pull/29","id":108769277,"number":29,"title":"Allow setting properties on Datapoint objects","user":{"login":"tedoc2000","id":301145,"avatar_url":"https://avatars.githubusercontent.com/u/301145?v=3","gravatar_id":"","url":"https://api.github.com/users/tedoc2000","html_url":"https://github.com/tedoc2000","followers_url":"https://api.github.com/users/tedoc2000/followers","following_url":"https://api.github.com/users/tedoc2000/following{/other_user}","gists_url":"https://api.github.com/users/tedoc2000/gists{/gist_id}","starred_url":"https://api.github.com/users/tedoc2000/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tedoc2000/subscriptions","organizations_url":"https://api.github.com/users/tedoc2000/orgs","repos_url":"https://api.github.com/users/tedoc2000/repos","events_url":"https://api.github.com/users/tedoc2000/events{/privacy}","received_events_url":"https://api.github.com/users/tedoc2000/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":{"login":"cep21","id":20358,"avatar_url":"https://avatars.githubusercontent.com/u/20358?v=3","gravatar_id":"","url":"https://api.github.com/users/cep21","html_url":"https://github.com/cep21","followers_url":"https://api.github.com/users/cep21/followers","following_url":"https://api.github.com/users/cep21/following{/other_user}","gists_url":"https://api.github.com/users/cep21/gists{/gist_id}","starred_url":"https://api.github.com/users/cep21/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cep21/subscriptions","organizations_url":"https://api.github.com/users/cep21/orgs","repos_url":"https://api.github.com/users/cep21/repos","events_url":"https://api.github.com/users/cep21/events{/privacy}","received_events_url":"https://api.github.com/users/cep21/received_events","type":"User","site_admin":false},"milestone":null,"comments":1,"created_at":"2015-09-28T23:58:57Z","updated_at":"2015-09-30T17:30:33Z","closed_at":"2015-09-29T00:28:47Z","pull_request":{"url":"https://api.github.com/repos/signalfx/golib/pulls/29","html_url":"https://github.com/signalfx/golib/pull/29","diff_url":"https://github.com/signalfx/golib/pull/29.diff","patch_url":"https://github.com/signalfx/golib/pull/29.patch"},"body":""},"comment":{"url":"https://api.github.com/repos/signalfx/golib/issues/comments/144484134","html_url":"https://github.com/signalfx/golib/pull/29#issuecomment-144484134","issue_url":"https://api.github.com/repos/signalfx/golib/issues/29","id":144484134,"user":{"login":"mpetazzoni","id":879507,"avatar_url":"https://avatars.githubusercontent.com/u/879507?v=3","gravatar_id":"","url":"https://api.github.com/users/mpetazzoni","html_url":"https://github.com/mpetazzoni","followers_url":"https://api.github.com/users/mpetazzoni/followers","following_url":"https://api.github.com/users/mpetazzoni/following{/other_user}","gists_url":"https://api.github.com/users/mpetazzoni/gists{/gist_id}","starred_url":"https://api.github.com/users/mpetazzoni/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mpetazzoni/subscriptions","organizations_url":"https://api.github.com/users/mpetazzoni/orgs","repos_url":"https://api.github.com/users/mpetazzoni/repos","events_url":"https://api.github.com/users/mpetazzoni/events{/privacy}","received_events_url":"https://api.github.com/users/mpetazzoni/received_events","type":"User","site_admin":false},"created_at":"2015-09-30T17:30:33Z","updated_at":"2015-09-30T17:30:33Z","body":"@tedoc2000 @philatsf @cep21 I know and I understand why we need this for our `sf_isPrequantized` use case, but I think one of the reasons we didn't allow for at first still stands: the semantics of passing properties with datapoints are confusing, and wasteful.\r\n\r\nConfusing, because only if the MTS doesn't exist at the time the datapoint is received will those properties be added to the newly created MTS. If it already exists, they are just ignored and don't update the MTS's metadata; and it's really difficult for an emitter to know if the MTS already exists or not.\r\n\r\nWasteful, because most emitters will send the properties with every single datapoint, but for N-1 of them this data will just be dropped on the floor, wasting potentially quite a bit of bandwidth (not to mention network and CPU time on our end, increasing latency).\r\n\r\nI'd like to know if we plan on having a better story here, and if not how this will be documented and communicated."}}