{"action":"created","issue":{"url":"https://api.github.com/repos/elastic/logstash/issues/4293","labels_url":"https://api.github.com/repos/elastic/logstash/issues/4293/labels{/name}","comments_url":"https://api.github.com/repos/elastic/logstash/issues/4293/comments","events_url":"https://api.github.com/repos/elastic/logstash/issues/4293/events","html_url":"https://github.com/elastic/logstash/issues/4293","id":119835154,"number":4293,"title":"new Event APIs to properly abstract internal implementation","user":{"login":"colinsurprenant","id":2010,"avatar_url":"https://avatars.githubusercontent.com/u/2010?v=3","gravatar_id":"","url":"https://api.github.com/users/colinsurprenant","html_url":"https://github.com/colinsurprenant","followers_url":"https://api.github.com/users/colinsurprenant/followers","following_url":"https://api.github.com/users/colinsurprenant/following{/other_user}","gists_url":"https://api.github.com/users/colinsurprenant/gists{/gist_id}","starred_url":"https://api.github.com/users/colinsurprenant/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/colinsurprenant/subscriptions","organizations_url":"https://api.github.com/users/colinsurprenant/orgs","repos_url":"https://api.github.com/users/colinsurprenant/repos","events_url":"https://api.github.com/users/colinsurprenant/events{/privacy}","received_events_url":"https://api.github.com/users/colinsurprenant/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/elastic/logstash/labels/java%20event","name":"java event","color":"c7def8"}],"state":"open","locked":false,"assignee":{"login":"colinsurprenant","id":2010,"avatar_url":"https://avatars.githubusercontent.com/u/2010?v=3","gravatar_id":"","url":"https://api.github.com/users/colinsurprenant","html_url":"https://github.com/colinsurprenant","followers_url":"https://api.github.com/users/colinsurprenant/followers","following_url":"https://api.github.com/users/colinsurprenant/following{/other_user}","gists_url":"https://api.github.com/users/colinsurprenant/gists{/gist_id}","starred_url":"https://api.github.com/users/colinsurprenant/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/colinsurprenant/subscriptions","organizations_url":"https://api.github.com/users/colinsurprenant/orgs","repos_url":"https://api.github.com/users/colinsurprenant/repos","events_url":"https://api.github.com/users/colinsurprenant/events{/privacy}","received_events_url":"https://api.github.com/users/colinsurprenant/received_events","type":"User","site_admin":false},"milestone":null,"comments":11,"created_at":"2015-12-01T23:47:27Z","updated_at":"2015-12-02T23:37:58Z","closed_at":null,"body":"Some plugins assumes that `Event#to_hash` returns a in-place mutable `Hash` object that will directly update the Event content.\r\n\r\nWhile true now, moving forward we cannot assume this behaviour. It is also a very bad design. We need simply provide new APIs to directly set fields in the event without having to go through the field reference parsing overhead and also a way to set or merge a new hash structure at the root of the event event. \r\n\r\nthis will allow plugins like the KV filter to use these new APIs to optimize the data injection in the event as done now in logstash-plugins/logstash-filter-kv#21\r\n\r\ndoing this will require a major version bump because it will add new API so that plugins that will use this new API can use the proper versions constrains.\r\n\r\nissue #4140 is caused by this. \r\nthis relates to #4191 \r\n\r\nUpon progress on this we need to followup on:\r\n- [ ] kv filter\r\n- [ ] json filter"},"comment":{"url":"https://api.github.com/repos/elastic/logstash/issues/comments/161467907","html_url":"https://github.com/elastic/logstash/issues/4293#issuecomment-161467907","issue_url":"https://api.github.com/repos/elastic/logstash/issues/4293","id":161467907,"user":{"login":"jordansissel","id":131818,"avatar_url":"https://avatars.githubusercontent.com/u/131818?v=3","gravatar_id":"","url":"https://api.github.com/users/jordansissel","html_url":"https://github.com/jordansissel","followers_url":"https://api.github.com/users/jordansissel/followers","following_url":"https://api.github.com/users/jordansissel/following{/other_user}","gists_url":"https://api.github.com/users/jordansissel/gists{/gist_id}","starred_url":"https://api.github.com/users/jordansissel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jordansissel/subscriptions","organizations_url":"https://api.github.com/users/jordansissel/orgs","repos_url":"https://api.github.com/users/jordansissel/repos","events_url":"https://api.github.com/users/jordansissel/events{/privacy}","received_events_url":"https://api.github.com/users/jordansissel/received_events","type":"User","site_admin":false},"created_at":"2015-12-02T23:37:58Z","updated_at":"2015-12-02T23:37:58Z","body":"It takes an Event. The `append` name comes from the fact that mutliline filter is appending two events together, and that it's a non-destructive operation (two fields with the same name? Keeps both values for that field)"}}