{"action":"opened","issue":{"url":"https://api.github.com/repos/threefoldfoundation/rexplorer/issues/24","repository_url":"https://api.github.com/repos/threefoldfoundation/rexplorer","labels_url":"https://api.github.com/repos/threefoldfoundation/rexplorer/issues/24/labels{/name}","comments_url":"https://api.github.com/repos/threefoldfoundation/rexplorer/issues/24/comments","events_url":"https://api.github.com/repos/threefoldfoundation/rexplorer/issues/24/events","html_url":"https://github.com/threefoldfoundation/rexplorer/issues/24","id":354594766,"node_id":"MDU6SXNzdWUzNTQ1OTQ3NjY=","number":24,"title":"ensure consensus changes are only applied as a whole","user":{"login":"GlenDC","id":3900482,"node_id":"MDQ6VXNlcjM5MDA0ODI=","avatar_url":"https://avatars2.githubusercontent.com/u/3900482?v=4","gravatar_id":"","url":"https://api.github.com/users/GlenDC","html_url":"https://github.com/GlenDC","followers_url":"https://api.github.com/users/GlenDC/followers","following_url":"https://api.github.com/users/GlenDC/following{/other_user}","gists_url":"https://api.github.com/users/GlenDC/gists{/gist_id}","starred_url":"https://api.github.com/users/GlenDC/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GlenDC/subscriptions","organizations_url":"https://api.github.com/users/GlenDC/orgs","repos_url":"https://api.github.com/users/GlenDC/repos","events_url":"https://api.github.com/users/GlenDC/events{/privacy}","received_events_url":"https://api.github.com/users/GlenDC/received_events","type":"User","site_admin":false},"labels":[{"id":1018577244,"node_id":"MDU6TGFiZWwxMDE4NTc3MjQ0","url":"https://api.github.com/repos/threefoldfoundation/rexplorer/labels/type_bug","name":"type_bug","color":"fef2c0","default":false},{"id":1018577245,"node_id":"MDU6TGFiZWwxMDE4NTc3MjQ1","url":"https://api.github.com/repos/threefoldfoundation/rexplorer/labels/type_feature","name":"type_feature","color":"fef2c0","default":false}],"state":"open","locked":false,"assignee":{"login":"GlenDC","id":3900482,"node_id":"MDQ6VXNlcjM5MDA0ODI=","avatar_url":"https://avatars2.githubusercontent.com/u/3900482?v=4","gravatar_id":"","url":"https://api.github.com/users/GlenDC","html_url":"https://github.com/GlenDC","followers_url":"https://api.github.com/users/GlenDC/followers","following_url":"https://api.github.com/users/GlenDC/following{/other_user}","gists_url":"https://api.github.com/users/GlenDC/gists{/gist_id}","starred_url":"https://api.github.com/users/GlenDC/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GlenDC/subscriptions","organizations_url":"https://api.github.com/users/GlenDC/orgs","repos_url":"https://api.github.com/users/GlenDC/repos","events_url":"https://api.github.com/users/GlenDC/events{/privacy}","received_events_url":"https://api.github.com/users/GlenDC/received_events","type":"User","site_admin":false},"assignees":[{"login":"GlenDC","id":3900482,"node_id":"MDQ6VXNlcjM5MDA0ODI=","avatar_url":"https://avatars2.githubusercontent.com/u/3900482?v=4","gravatar_id":"","url":"https://api.github.com/users/GlenDC","html_url":"https://github.com/GlenDC","followers_url":"https://api.github.com/users/GlenDC/followers","following_url":"https://api.github.com/users/GlenDC/following{/other_user}","gists_url":"https://api.github.com/users/GlenDC/gists{/gist_id}","starred_url":"https://api.github.com/users/GlenDC/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GlenDC/subscriptions","organizations_url":"https://api.github.com/users/GlenDC/orgs","repos_url":"https://api.github.com/users/GlenDC/repos","events_url":"https://api.github.com/users/GlenDC/events{/privacy}","received_events_url":"https://api.github.com/users/GlenDC/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/threefoldfoundation/rexplorer/milestones/4","html_url":"https://github.com/threefoldfoundation/rexplorer/milestone/4","labels_url":"https://api.github.com/repos/threefoldfoundation/rexplorer/milestones/4/labels","id":3579257,"node_id":"MDk6TWlsZXN0b25lMzU3OTI1Nw==","number":4,"title":"v0.2.0","description":"* support the new transaction versions that ship with tfchain\r\n* support filters as a way to keep track of descriptions even for unlocked outputs;\r\n* make internal format more efficient;\r\n* support protobuf as encoding type;\r\n* ensure that a consensus change is either fully applied or not applied at all (previously an error in the middle of applying a consensus change would corrupt the redis DB;","creator":{"login":"GlenDC","id":3900482,"node_id":"MDQ6VXNlcjM5MDA0ODI=","avatar_url":"https://avatars2.githubusercontent.com/u/3900482?v=4","gravatar_id":"","url":"https://api.github.com/users/GlenDC","html_url":"https://github.com/GlenDC","followers_url":"https://api.github.com/users/GlenDC/followers","following_url":"https://api.github.com/users/GlenDC/following{/other_user}","gists_url":"https://api.github.com/users/GlenDC/gists{/gist_id}","starred_url":"https://api.github.com/users/GlenDC/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GlenDC/subscriptions","organizations_url":"https://api.github.com/users/GlenDC/orgs","repos_url":"https://api.github.com/users/GlenDC/repos","events_url":"https://api.github.com/users/GlenDC/events{/privacy}","received_events_url":"https://api.github.com/users/GlenDC/received_events","type":"User","site_admin":false},"open_issues":5,"closed_issues":1,"state":"open","created_at":"2018-08-17T16:10:18Z","updated_at":"2018-08-28T06:54:37Z","due_on":null,"closed_at":null},"comments":0,"created_at":"2018-08-28T06:54:37Z","updated_at":"2018-08-28T06:54:37Z","closed_at":null,"author_association":"COLLABORATOR","body":"Currently we return with an error as soon as an error happens, even if it's in the middle of a consensus change that is already partially applied (applied as in the Redis DB has already been modified with the partial content of the consensus change in question).\r\n\r\nA better approach would be where we keep track of all the changes we make, if do-able watch the keys while getting them, and only at the end, apply all changes at once, using the ACID mechanics Redis provides.\r\n\r\nThis would mean that we need to have an interface which:\r\n\r\n* for modification (delete/write) commands keeps track of that change purely in-memory;\r\n* for get commands checks first if we have an in-memory state for the value in question, if so return, if not get it actually from the redis-db, and again if possible and do-able watch it as well;\r\n\r\nThe watching is nice to have, but not as important, given that we assume we are the only writers to the RedisDB. It does however protect against multiple writers should that situation ever occur. However, as stated, we assume we are the only writers so this can be ignored for now I think, especially given that I do not think we can do it without making a new connection just for the watching (that and the commit in the end) which seems kinda expensive."}}
{"actor":{"display_login":"GlenDC"}}