{"action":"created","issue":{"url":"https://api.github.com/repos/paritytech/parity-ethereum/issues/9085","repository_url":"https://api.github.com/repos/paritytech/parity-ethereum","labels_url":"https://api.github.com/repos/paritytech/parity-ethereum/issues/9085/labels{/name}","comments_url":"https://api.github.com/repos/paritytech/parity-ethereum/issues/9085/comments","events_url":"https://api.github.com/repos/paritytech/parity-ethereum/issues/9085/events","html_url":"https://github.com/paritytech/parity-ethereum/pull/9085","id":339793643,"node_id":"MDExOlB1bGxSZXF1ZXN0MjAwMzU4Mjg2","number":9085,"title":"Unify engine error to reject blocks","user":{"login":"sorpaas","id":6277322,"node_id":"MDQ6VXNlcjYyNzczMjI=","avatar_url":"https://avatars3.githubusercontent.com/u/6277322?v=4","gravatar_id":"","url":"https://api.github.com/users/sorpaas","html_url":"https://github.com/sorpaas","followers_url":"https://api.github.com/users/sorpaas/followers","following_url":"https://api.github.com/users/sorpaas/following{/other_user}","gists_url":"https://api.github.com/users/sorpaas/gists{/gist_id}","starred_url":"https://api.github.com/users/sorpaas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sorpaas/subscriptions","organizations_url":"https://api.github.com/users/sorpaas/orgs","repos_url":"https://api.github.com/users/sorpaas/repos","events_url":"https://api.github.com/users/sorpaas/events{/privacy}","received_events_url":"https://api.github.com/users/sorpaas/received_events","type":"User","site_admin":false},"labels":[{"id":309708192,"node_id":"MDU6TGFiZWwzMDk3MDgxOTI=","url":"https://api.github.com/repos/paritytech/parity-ethereum/labels/A8-looksgood%20%F0%9F%A6%84","name":"A8-looksgood 🦄","color":"C0E7CC","default":false},{"id":441816407,"node_id":"MDU6TGFiZWw0NDE4MTY0MDc=","url":"https://api.github.com/repos/paritytech/parity-ethereum/labels/M4-core%20%E2%9B%93","name":"M4-core ⛓","color":"F5FCE6","default":false}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/paritytech/parity-ethereum/milestones/22","html_url":"https://github.com/paritytech/parity-ethereum/milestone/22","labels_url":"https://api.github.com/repos/paritytech/parity-ethereum/milestones/22/labels","id":3153051,"node_id":"MDk6TWlsZXN0b25lMzE1MzA1MQ==","number":22,"title":"2.1","description":"","creator":{"login":"5chdn","id":15729797,"node_id":"MDQ6VXNlcjE1NzI5Nzk3","avatar_url":"https://avatars3.githubusercontent.com/u/15729797?v=4","gravatar_id":"","url":"https://api.github.com/users/5chdn","html_url":"https://github.com/5chdn","followers_url":"https://api.github.com/users/5chdn/followers","following_url":"https://api.github.com/users/5chdn/following{/other_user}","gists_url":"https://api.github.com/users/5chdn/gists{/gist_id}","starred_url":"https://api.github.com/users/5chdn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/5chdn/subscriptions","organizations_url":"https://api.github.com/users/5chdn/orgs","repos_url":"https://api.github.com/users/5chdn/repos","events_url":"https://api.github.com/users/5chdn/events{/privacy}","received_events_url":"https://api.github.com/users/5chdn/received_events","type":"User","site_admin":false},"open_issues":9,"closed_issues":473,"state":"open","created_at":"2018-03-01T09:29:12Z","updated_at":"2018-09-13T12:21:01Z","due_on":"2018-09-17T07:00:00Z","closed_at":null},"comments":2,"created_at":"2018-07-10T11:00:46Z","updated_at":"2018-09-13T12:42:51Z","closed_at":"2018-07-16T11:53:55Z","author_association":"MEMBER","pull_request":{"url":"https://api.github.com/repos/paritytech/parity-ethereum/pulls/9085","html_url":"https://github.com/paritytech/parity-ethereum/pull/9085","diff_url":"https://github.com/paritytech/parity-ethereum/pull/9085.diff","patch_url":"https://github.com/paritytech/parity-ethereum/pull/9085.patch"},"body":"Currently in our code, we have several places that deal with engine errors with different behavior. On engine error:\r\n\r\n* If `on_new_block` fails, blocks are *rejected* if it's imported externally.\r\n* If `on_new_block` fails, the client *panics* if it's created internally.\r\n* If `on_close_block` fails, the error is *ignored* and we print a warning.\r\n\r\nI think the *rejected* behavior is the most reasonable. So this PR changes all three cases to rejecting blocks.\r\n\r\n* If we ignore the error and only print a warning, it might be ignored by the node operator as well. It may end up making the chain not having the same best block, which is bad.\r\n* In some cases, a consensus failure might be recoverable. For example, we might have a certain combination of transactions that cause `on_close_block` to fail on a consensus smart contract. In that case, if *rejected* behavior is used, node operators may be able to push/replace transactions and cause the current node to create a new valid block, without bringing down the node."},"comment":{"url":"https://api.github.com/repos/paritytech/parity-ethereum/issues/comments/420992726","html_url":"https://github.com/paritytech/parity-ethereum/pull/9085#issuecomment-420992726","issue_url":"https://api.github.com/repos/paritytech/parity-ethereum/issues/9085","id":420992726,"node_id":"MDEyOklzc3VlQ29tbWVudDQyMDk5MjcyNg==","user":{"login":"debris","id":2613714,"node_id":"MDQ6VXNlcjI2MTM3MTQ=","avatar_url":"https://avatars2.githubusercontent.com/u/2613714?v=4","gravatar_id":"","url":"https://api.github.com/users/debris","html_url":"https://github.com/debris","followers_url":"https://api.github.com/users/debris/followers","following_url":"https://api.github.com/users/debris/following{/other_user}","gists_url":"https://api.github.com/users/debris/gists{/gist_id}","starred_url":"https://api.github.com/users/debris/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/debris/subscriptions","organizations_url":"https://api.github.com/users/debris/orgs","repos_url":"https://api.github.com/users/debris/repos","events_url":"https://api.github.com/users/debris/events{/privacy}","received_events_url":"https://api.github.com/users/debris/received_events","type":"User","site_admin":false},"created_at":"2018-09-13T12:42:51Z","updated_at":"2018-09-13T12:42:51Z","author_association":"MEMBER","body":"it is not"}}
{"actor":{"display_login":"debris"}}