{"action":"created","issue":{"url":"https://api.github.com/repos/hazelcast/hazelcast/issues/4823","labels_url":"https://api.github.com/repos/hazelcast/hazelcast/issues/4823/labels{/name}","comments_url":"https://api.github.com/repos/hazelcast/hazelcast/issues/4823/comments","events_url":"https://api.github.com/repos/hazelcast/hazelcast/issues/4823/events","html_url":"https://github.com/hazelcast/hazelcast/pull/4823","id":62391869,"number":4823,"title":"Portable enchancement","user":{"login":"sancar","id":570462,"avatar_url":"https://avatars.githubusercontent.com/u/570462?v=3","gravatar_id":"","url":"https://api.github.com/users/sancar","html_url":"https://github.com/sancar","followers_url":"https://api.github.com/users/sancar/followers","following_url":"https://api.github.com/users/sancar/following{/other_user}","gists_url":"https://api.github.com/users/sancar/gists{/gist_id}","starred_url":"https://api.github.com/users/sancar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sancar/subscriptions","organizations_url":"https://api.github.com/users/sancar/orgs","repos_url":"https://api.github.com/users/sancar/repos","events_url":"https://api.github.com/users/sancar/events{/privacy}","received_events_url":"https://api.github.com/users/sancar/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/hazelcast/hazelcast/labels/Team:%20Client","name":"Team: Client","color":"99ccff"},{"url":"https://api.github.com/repos/hazelcast/hazelcast/labels/Team:%20Core","name":"Team: Core","color":"eb6420"},{"url":"https://api.github.com/repos/hazelcast/hazelcast/labels/Type:%20Enhancement","name":"Type: Enhancement","color":"5319e7"}],"state":"closed","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/hazelcast/hazelcast/milestones/55","html_url":"https://github.com/hazelcast/hazelcast/milestones/3.5","labels_url":"https://api.github.com/repos/hazelcast/hazelcast/milestones/55/labels","id":819785,"number":55,"title":"3.5","description":null,"creator":{"login":"sancar","id":570462,"avatar_url":"https://avatars.githubusercontent.com/u/570462?v=3","gravatar_id":"","url":"https://api.github.com/users/sancar","html_url":"https://github.com/sancar","followers_url":"https://api.github.com/users/sancar/followers","following_url":"https://api.github.com/users/sancar/following{/other_user}","gists_url":"https://api.github.com/users/sancar/gists{/gist_id}","starred_url":"https://api.github.com/users/sancar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sancar/subscriptions","organizations_url":"https://api.github.com/users/sancar/orgs","repos_url":"https://api.github.com/users/sancar/repos","events_url":"https://api.github.com/users/sancar/events{/privacy}","received_events_url":"https://api.github.com/users/sancar/received_events","type":"User","site_admin":false},"open_issues":99,"closed_issues":254,"state":"open","created_at":"2014-10-09T13:04:53Z","updated_at":"2015-03-18T17:17:13Z","due_on":null,"closed_at":null},"comments":1,"created_at":"2015-03-17T13:11:40Z","updated_at":"2015-03-18T19:38:38Z","closed_at":"2015-03-18T17:17:13Z","pull_request":{"url":"https://api.github.com/repos/hazelcast/hazelcast/pulls/4823","html_url":"https://github.com/hazelcast/hazelcast/pull/4823","diff_url":"https://github.com/hazelcast/hazelcast/pull/4823.diff","patch_url":"https://github.com/hazelcast/hazelcast/pull/4823.patch"},"body":"Changed Portable serialization to include field names and types to simplify Data and Packet structures. Instead of keeping a header storing portable-metadata to be able to lookup class-definitions while preparing Packet and executing queries, now each Portable keeps its own json-like metadata in its binary data.\r\n\r\nThis change increases Data (which containing Portable) size keep in memory but at the same time reduces Packet size sent over the wire. By simplifying Portable serialization procedure, ClassDefinitions are generated on-demand and registered on local for fast access. By doing this, it's possible to serialize Portables in a json-like format and to access single fields with fast lookups using indexes.\r\n\r\nPushing force behind this change is, it's now possible to easily convert Data to a byte[] (or a native memory pointer). There are at least 2 advantages of using a single byte[] (or a native pointer) for serialized data;\r\n- it removes one more memory indirection from the path\r\n- it makes possible to store/load serialized data in single shot"},"comment":{"url":"https://api.github.com/repos/hazelcast/hazelcast/issues/comments/83134250","html_url":"https://github.com/hazelcast/hazelcast/pull/4823#issuecomment-83134250","issue_url":"https://api.github.com/repos/hazelcast/hazelcast/issues/4823","id":83134250,"user":{"login":"pveentjer","id":105243,"avatar_url":"https://avatars.githubusercontent.com/u/105243?v=3","gravatar_id":"","url":"https://api.github.com/users/pveentjer","html_url":"https://github.com/pveentjer","followers_url":"https://api.github.com/users/pveentjer/followers","following_url":"https://api.github.com/users/pveentjer/following{/other_user}","gists_url":"https://api.github.com/users/pveentjer/gists{/gist_id}","starred_url":"https://api.github.com/users/pveentjer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pveentjer/subscriptions","organizations_url":"https://api.github.com/users/pveentjer/orgs","repos_url":"https://api.github.com/users/pveentjer/repos","events_url":"https://api.github.com/users/pveentjer/events{/privacy}","received_events_url":"https://api.github.com/users/pveentjer/received_events","type":"User","site_admin":false},"created_at":"2015-03-18T19:38:38Z","updated_at":"2015-03-18T19:38:38Z","body":"I don't know if you can rename methods on Data since it is a public API. You can add a new method with the same name and just deprecate the old method. This way you get the nice name, but you don't break backwards compatibility."}}