{"action":"created","issue":{"url":"https://api.github.com/repos/pravega/pravega/issues/2514","repository_url":"https://api.github.com/repos/pravega/pravega","labels_url":"https://api.github.com/repos/pravega/pravega/issues/2514/labels{/name}","comments_url":"https://api.github.com/repos/pravega/pravega/issues/2514/comments","events_url":"https://api.github.com/repos/pravega/pravega/issues/2514/events","html_url":"https://github.com/pravega/pravega/pull/2514","id":318547872,"number":2514,"title":"Issue 2513: Client side versioned binary serialization","user":{"login":"tkaitchuck","id":4756752,"avatar_url":"https://avatars1.githubusercontent.com/u/4756752?v=4","gravatar_id":"","url":"https://api.github.com/users/tkaitchuck","html_url":"https://github.com/tkaitchuck","followers_url":"https://api.github.com/users/tkaitchuck/followers","following_url":"https://api.github.com/users/tkaitchuck/following{/other_user}","gists_url":"https://api.github.com/users/tkaitchuck/gists{/gist_id}","starred_url":"https://api.github.com/users/tkaitchuck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tkaitchuck/subscriptions","organizations_url":"https://api.github.com/users/tkaitchuck/orgs","repos_url":"https://api.github.com/users/tkaitchuck/repos","events_url":"https://api.github.com/users/tkaitchuck/events{/privacy}","received_events_url":"https://api.github.com/users/tkaitchuck/received_events","type":"User","site_admin":false},"labels":[{"id":499236073,"url":"https://api.github.com/repos/pravega/pravega/labels/area/client","name":"area/client","color":"c2e0c6","default":false}],"state":"open","locked":false,"assignee":{"login":"fpj","id":572920,"avatar_url":"https://avatars3.githubusercontent.com/u/572920?v=4","gravatar_id":"","url":"https://api.github.com/users/fpj","html_url":"https://github.com/fpj","followers_url":"https://api.github.com/users/fpj/followers","following_url":"https://api.github.com/users/fpj/following{/other_user}","gists_url":"https://api.github.com/users/fpj/gists{/gist_id}","starred_url":"https://api.github.com/users/fpj/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fpj/subscriptions","organizations_url":"https://api.github.com/users/fpj/orgs","repos_url":"https://api.github.com/users/fpj/repos","events_url":"https://api.github.com/users/fpj/events{/privacy}","received_events_url":"https://api.github.com/users/fpj/received_events","type":"User","site_admin":false},"assignees":[{"login":"fpj","id":572920,"avatar_url":"https://avatars3.githubusercontent.com/u/572920?v=4","gravatar_id":"","url":"https://api.github.com/users/fpj","html_url":"https://github.com/fpj","followers_url":"https://api.github.com/users/fpj/followers","following_url":"https://api.github.com/users/fpj/following{/other_user}","gists_url":"https://api.github.com/users/fpj/gists{/gist_id}","starred_url":"https://api.github.com/users/fpj/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fpj/subscriptions","organizations_url":"https://api.github.com/users/fpj/orgs","repos_url":"https://api.github.com/users/fpj/repos","events_url":"https://api.github.com/users/fpj/events{/privacy}","received_events_url":"https://api.github.com/users/fpj/received_events","type":"User","site_admin":false},{"login":"shrids","id":11114165,"avatar_url":"https://avatars1.githubusercontent.com/u/11114165?v=4","gravatar_id":"","url":"https://api.github.com/users/shrids","html_url":"https://github.com/shrids","followers_url":"https://api.github.com/users/shrids/followers","following_url":"https://api.github.com/users/shrids/following{/other_user}","gists_url":"https://api.github.com/users/shrids/gists{/gist_id}","starred_url":"https://api.github.com/users/shrids/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shrids/subscriptions","organizations_url":"https://api.github.com/users/shrids/orgs","repos_url":"https://api.github.com/users/shrids/repos","events_url":"https://api.github.com/users/shrids/events{/privacy}","received_events_url":"https://api.github.com/users/shrids/received_events","type":"User","site_admin":false},{"login":"andreipaduroiu","id":14354377,"avatar_url":"https://avatars2.githubusercontent.com/u/14354377?v=4","gravatar_id":"","url":"https://api.github.com/users/andreipaduroiu","html_url":"https://github.com/andreipaduroiu","followers_url":"https://api.github.com/users/andreipaduroiu/followers","following_url":"https://api.github.com/users/andreipaduroiu/following{/other_user}","gists_url":"https://api.github.com/users/andreipaduroiu/gists{/gist_id}","starred_url":"https://api.github.com/users/andreipaduroiu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/andreipaduroiu/subscriptions","organizations_url":"https://api.github.com/users/andreipaduroiu/orgs","repos_url":"https://api.github.com/users/andreipaduroiu/repos","events_url":"https://api.github.com/users/andreipaduroiu/events{/privacy}","received_events_url":"https://api.github.com/users/andreipaduroiu/received_events","type":"User","site_admin":false}],"milestone":null,"comments":0,"created_at":"2018-04-27T20:58:54Z","updated_at":"2018-04-27T21:36:03Z","closed_at":null,"author_association":"COLLABORATOR","pull_request":{"url":"https://api.github.com/repos/pravega/pravega/pulls/2514","html_url":"https://github.com/pravega/pravega/pull/2514","diff_url":"https://github.com/pravega/pravega/pull/2514.diff","patch_url":"https://github.com/pravega/pravega/pull/2514.patch"},"body":"**Change log description**\r\nAdd support for versioned serialization (#1956) for the public facing java client objects.\r\n\r\n**Purpose of the change**\r\nCurrently rely on Java serialization for classes that are passed to the application and which need to be passed back. This forces users to depend on Java serialization which is less than ideal. \r\nAdditionally we need to support versioning of these objects, as they will by definition persist through client upgrades. \r\n\r\n**What the code does**\r\nTo achieve this a new pattern is introduced. On each of these classes there is a `toBytes()` method that will serialize the object. Additionally there is a `fromBytes()` method on the public interface that takes the serialized bytes and re-instantiates the the original object. \r\n\r\nThis fixes #2513, by using the same serialization framework developed to support the Server in #1956. This provides a way to modify the data going forward while preserving backwards compatibility. \r\n\r\nThis change does not yet address: Config files, or the ReaderGroupState. We may wish to change those over at a future time, but for now they remain Java serializable. \r\n\r\nIt should be noted that **This is a breaking change, and that client libraries with this code will not be compatible with serialized objects from previous versions of the client.**\r\n\r\n**How to verify it**\r\nThere are tests added to verify that each of the new serialization paths, round trips the data. \r\nExisting integration tests confirm that the objects that are no longer serializable don't affect the readerGroupState and the config objects.\r\n"},"comment":{"url":"https://api.github.com/repos/pravega/pravega/issues/comments/385100479","html_url":"https://github.com/pravega/pravega/pull/2514#issuecomment-385100479","issue_url":"https://api.github.com/repos/pravega/pravega/issues/2514","id":385100479,"user":{"login":"codecov[bot]","id":22429695,"avatar_url":"https://avatars2.githubusercontent.com/in/254?v=4","gravatar_id":"","url":"https://api.github.com/users/codecov%5Bbot%5D","html_url":"https://github.com/apps/codecov","followers_url":"https://api.github.com/users/codecov%5Bbot%5D/followers","following_url":"https://api.github.com/users/codecov%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/codecov%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/codecov%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/codecov%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/codecov%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/codecov%5Bbot%5D/repos","events_url":"https://api.github.com/users/codecov%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/codecov%5Bbot%5D/received_events","type":"Bot","site_admin":false},"created_at":"2018-04-27T21:36:03Z","updated_at":"2018-04-27T21:36:03Z","author_association":"NONE","body":"# [Codecov](https://codecov.io/gh/pravega/pravega/pull/2514?src=pr&el=h1) Report\n> Merging [#2514](https://codecov.io/gh/pravega/pravega/pull/2514?src=pr&el=desc) into [master](https://codecov.io/gh/pravega/pravega/commit/10f7a4559aea762232c01e831071f4723d68a91a?src=pr&el=desc) will **increase** coverage by `0.01%`.\n> The diff coverage is `66.84%`.\n\n[![Impacted file tree graph](https://codecov.io/gh/pravega/pravega/pull/2514/graphs/tree.svg?width=650&src=pr&token=6xOvaR0sIa&height=150)](https://codecov.io/gh/pravega/pravega/pull/2514?src=pr&el=tree)\n\n```diff\n@@             Coverage Diff              @@\n##             master    #2514      +/-   ##\n============================================\n+ Coverage     77.46%   77.48%   +0.01%     \n- Complexity     6564     6607      +43     \n============================================\n  Files           518      524       +6     \n  Lines         26262    26432     +170     \n  Branches       2478     2489      +11     \n============================================\n+ Hits          20345    20481     +136     \n- Misses         4458     4484      +26     \n- Partials       1459     1467       +8\n```\n\n\n| [Impacted Files](https://codecov.io/gh/pravega/pravega/pull/2514?src=pr&el=tree) | Coverage Δ | Complexity Δ | |\n|---|---|---|---|\n| [...src/main/java/io/pravega/client/stream/Stream.java](https://codecov.io/gh/pravega/pravega/pull/2514/diff?src=pr&el=tree#diff-Y2xpZW50L3NyYy9tYWluL2phdmEvaW8vcHJhdmVnYS9jbGllbnQvc3RyZWFtL1N0cmVhbS5qYXZh) | `88.88% <ø> (ø)` | `2 <0> (ø)` | :arrow_down: |\n| [...ga/client/stream/impl/ReaderGroupStateManager.java](https://codecov.io/gh/pravega/pravega/pull/2514/diff?src=pr&el=tree#diff-Y2xpZW50L3NyYy9tYWluL2phdmEvaW8vcHJhdmVnYS9jbGllbnQvc3RyZWFtL2ltcGwvUmVhZGVyR3JvdXBTdGF0ZU1hbmFnZXIuamF2YQ==) | `73.5% <ø> (ø)` | `50 <0> (ø)` | :arrow_down: |\n| [...ava/io/pravega/client/state/impl/RevisionImpl.java](https://codecov.io/gh/pravega/pravega/pull/2514/diff?src=pr&el=tree#diff-Y2xpZW50L3NyYy9tYWluL2phdmEvaW8vcHJhdmVnYS9jbGllbnQvc3RhdGUvaW1wbC9SZXZpc2lvbkltcGwuamF2YQ==) | `33.33% <0%> (-46.67%)` | `7 <0> (ø)` | |\n| [...rc/main/java/io/pravega/client/state/Revision.java](https://codecov.io/gh/pravega/pravega/pull/2514/diff?src=pr&el=tree#diff-Y2xpZW50L3NyYy9tYWluL2phdmEvaW8vcHJhdmVnYS9jbGllbnQvc3RhdGUvUmV2aXNpb24uamF2YQ==) | `0% <0%> (ø)` | `0 <0> (?)` | |\n| [...c/main/java/io/pravega/client/stream/Sequence.java](https://codecov.io/gh/pravega/pravega/pull/2514/diff?src=pr&el=tree#diff-Y2xpZW50L3NyYy9tYWluL2phdmEvaW8vcHJhdmVnYS9jbGllbnQvc3RyZWFtL1NlcXVlbmNlLmphdmE=) | `23.07% <0%> (-10.26%)` | `2 <0> (ø)` | |\n| [.../java/io/pravega/common/util/ByteArraySegment.java](https://codecov.io/gh/pravega/pravega/pull/2514/diff?src=pr&el=tree#diff-Y29tbW9uL3NyYy9tYWluL2phdmEvaW8vcHJhdmVnYS9jb21tb24vdXRpbC9CeXRlQXJyYXlTZWdtZW50LmphdmE=) | `80% <0%> (-3.34%)` | `21 <0> (ø)` | |\n| [...on/src/main/java/io/pravega/common/Exceptions.java](https://codecov.io/gh/pravega/pravega/pull/2514/diff?src=pr&el=tree#diff-Y29tbW9uL3NyYy9tYWluL2phdmEvaW8vcHJhdmVnYS9jb21tb24vRXhjZXB0aW9ucy5qYXZh) | `63.82% <0%> (-4.36%)` | `25 <0> (ø)` | |\n| [...controller/store/checkpoint/ZKCheckpointStore.java](https://codecov.io/gh/pravega/pravega/pull/2514/diff?src=pr&el=tree#diff-Y29udHJvbGxlci9zcmMvbWFpbi9qYXZhL2lvL3ByYXZlZ2EvY29udHJvbGxlci9zdG9yZS9jaGVja3BvaW50L1pLQ2hlY2twb2ludFN0b3JlLmphdmE=) | `93.86% <100%> (+0.07%)` | `34 <0> (ø)` | :arrow_down: |\n| [...c/main/java/io/pravega/client/stream/Position.java](https://codecov.io/gh/pravega/pravega/pull/2514/diff?src=pr&el=tree#diff-Y2xpZW50L3NyYy9tYWluL2phdmEvaW8vcHJhdmVnYS9jbGllbnQvc3RyZWFtL1Bvc2l0aW9uLmphdmE=) | `100% <100%> (ø)` | `1 <1> (?)` | |\n| [.../pravega/client/stream/impl/StreamCutInternal.java](https://codecov.io/gh/pravega/pravega/pull/2514/diff?src=pr&el=tree#diff-Y2xpZW50L3NyYy9tYWluL2phdmEvaW8vcHJhdmVnYS9jbGllbnQvc3RyZWFtL2ltcGwvU3RyZWFtQ3V0SW50ZXJuYWwuamF2YQ==) | `100% <100%> (ø)` | `2 <1> (+1)` | :arrow_up: |\n| ... and [32 more](https://codecov.io/gh/pravega/pravega/pull/2514/diff?src=pr&el=tree-more) | |\n\n------\n\n[Continue to review full report at Codecov](https://codecov.io/gh/pravega/pravega/pull/2514?src=pr&el=continue).\n> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)\n> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`\n> Powered by [Codecov](https://codecov.io/gh/pravega/pravega/pull/2514?src=pr&el=footer). Last update [10f7a45...2fa365c](https://codecov.io/gh/pravega/pravega/pull/2514?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).\n"}}
{"actor":{"display_login":"codecov"}}