{"action":"opened","issue":{"url":"https://api.github.com/repos/CorfuDB/CorfuDB/issues/266","repository_url":"https://api.github.com/repos/CorfuDB/CorfuDB","labels_url":"https://api.github.com/repos/CorfuDB/CorfuDB/issues/266/labels{/name}","comments_url":"https://api.github.com/repos/CorfuDB/CorfuDB/issues/266/comments","events_url":"https://api.github.com/repos/CorfuDB/CorfuDB/issues/266/events","html_url":"https://github.com/CorfuDB/CorfuDB/issues/266","id":186766764,"number":266,"title":"Allow multiple custom serializers","user":{"login":"Maithem","id":7818642,"avatar_url":"https://avatars.githubusercontent.com/u/7818642?v=3","gravatar_id":"","url":"https://api.github.com/users/Maithem","html_url":"https://github.com/Maithem","followers_url":"https://api.github.com/users/Maithem/followers","following_url":"https://api.github.com/users/Maithem/following{/other_user}","gists_url":"https://api.github.com/users/Maithem/gists{/gist_id}","starred_url":"https://api.github.com/users/Maithem/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Maithem/subscriptions","organizations_url":"https://api.github.com/users/Maithem/orgs","repos_url":"https://api.github.com/users/Maithem/repos","events_url":"https://api.github.com/users/Maithem/events{/privacy}","received_events_url":"https://api.github.com/users/Maithem/received_events","type":"User","site_admin":false},"labels":[{"id":57187519,"url":"https://api.github.com/repos/CorfuDB/CorfuDB/labels/enhancement","name":"enhancement","color":"84b6eb","default":true}],"state":"open","locked":false,"assignee":{"login":"Maithem","id":7818642,"avatar_url":"https://avatars.githubusercontent.com/u/7818642?v=3","gravatar_id":"","url":"https://api.github.com/users/Maithem","html_url":"https://github.com/Maithem","followers_url":"https://api.github.com/users/Maithem/followers","following_url":"https://api.github.com/users/Maithem/following{/other_user}","gists_url":"https://api.github.com/users/Maithem/gists{/gist_id}","starred_url":"https://api.github.com/users/Maithem/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Maithem/subscriptions","organizations_url":"https://api.github.com/users/Maithem/orgs","repos_url":"https://api.github.com/users/Maithem/repos","events_url":"https://api.github.com/users/Maithem/events{/privacy}","received_events_url":"https://api.github.com/users/Maithem/received_events","type":"User","site_admin":false},"assignees":[{"login":"Maithem","id":7818642,"avatar_url":"https://avatars.githubusercontent.com/u/7818642?v=3","gravatar_id":"","url":"https://api.github.com/users/Maithem","html_url":"https://github.com/Maithem","followers_url":"https://api.github.com/users/Maithem/followers","following_url":"https://api.github.com/users/Maithem/following{/other_user}","gists_url":"https://api.github.com/users/Maithem/gists{/gist_id}","starred_url":"https://api.github.com/users/Maithem/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Maithem/subscriptions","organizations_url":"https://api.github.com/users/Maithem/orgs","repos_url":"https://api.github.com/users/Maithem/repos","events_url":"https://api.github.com/users/Maithem/events{/privacy}","received_events_url":"https://api.github.com/users/Maithem/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/CorfuDB/CorfuDB/milestones/1","html_url":"https://github.com/CorfuDB/CorfuDB/milestones/v1.0%20Release","labels_url":"https://api.github.com/repos/CorfuDB/CorfuDB/milestones/1/labels","id":2048118,"number":1,"title":"v1.0 Release","description":"This is the feature complete milestone for version 1.0.\r\n\r\n1.       Check pointing / disaster recovery\r\n2.       Security for Corfu (> TLS 1.1 and AAA)\r\n3.       Runtime Metrics/Stats\r\n4.       Corfu command line interface\r\n5.       Range indexes \r\n6.       Failure Detector\r\n7.       Lifecycle Management\r\n8.       Data checksum","creator":{"login":"no2chem","id":6496984,"avatar_url":"https://avatars.githubusercontent.com/u/6496984?v=3","gravatar_id":"","url":"https://api.github.com/users/no2chem","html_url":"https://github.com/no2chem","followers_url":"https://api.github.com/users/no2chem/followers","following_url":"https://api.github.com/users/no2chem/following{/other_user}","gists_url":"https://api.github.com/users/no2chem/gists{/gist_id}","starred_url":"https://api.github.com/users/no2chem/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/no2chem/subscriptions","organizations_url":"https://api.github.com/users/no2chem/orgs","repos_url":"https://api.github.com/users/no2chem/repos","events_url":"https://api.github.com/users/no2chem/events{/privacy}","received_events_url":"https://api.github.com/users/no2chem/received_events","type":"User","site_admin":false},"open_issues":13,"closed_issues":9,"state":"open","created_at":"2016-10-04T22:17:52Z","updated_at":"2016-11-02T10:43:58Z","due_on":"2017-01-31T00:00:00Z","closed_at":null},"comments":0,"created_at":"2016-11-02T10:43:58Z","updated_at":"2016-11-02T10:43:58Z","closed_at":null,"body":"Once the custom serializer is set, it cannot be changed, its almost like a global static variable. Initially, we made this decision to safeguard from dynamically changing the custom serializer once it is set. Since the SMR can use this serialize bad things can happen if the serializer changes. \r\n\r\nThis can be really annoying, think of test code where in the @Before method, it tries to setup a serializer.\r\nOnly the first invocation will set it and the subsequent ones will need to handle a Runtime Exception.\r\n\r\nFirst of all, I think this is a structural problem, we should refactor the code in a way where we allow for multiple custom serializers. In the mean time, I think we should remove this check:\r\nhttps://github.com/CorfuDB/CorfuDB/blob/f1cd5d96c186fca299286a63240fd6ae3c5a2c5e/src/main/java/org/corfudb/util/serializer/SerializerType.java#L25\r\n\r\nand leave it to the discretion of the consumer until we do that refactor.\r\n\r\n"}}
{"actor":{"display_login":"Maithem"}}