{"action":"created","issue":{"url":"https://api.github.com/repos/openwrt/luci/issues/1769","repository_url":"https://api.github.com/repos/openwrt/luci","labels_url":"https://api.github.com/repos/openwrt/luci/issues/1769/labels{/name}","comments_url":"https://api.github.com/repos/openwrt/luci/issues/1769/comments","events_url":"https://api.github.com/repos/openwrt/luci/issues/1769/events","html_url":"https://github.com/openwrt/luci/pull/1769","id":317903707,"number":1769,"title":"UCI apply/rollback workflow","user":{"login":"jow-","id":2528802,"avatar_url":"https://avatars2.githubusercontent.com/u/2528802?v=4","gravatar_id":"","url":"https://api.github.com/users/jow-","html_url":"https://github.com/jow-","followers_url":"https://api.github.com/users/jow-/followers","following_url":"https://api.github.com/users/jow-/following{/other_user}","gists_url":"https://api.github.com/users/jow-/gists{/gist_id}","starred_url":"https://api.github.com/users/jow-/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jow-/subscriptions","organizations_url":"https://api.github.com/users/jow-/orgs","repos_url":"https://api.github.com/users/jow-/repos","events_url":"https://api.github.com/users/jow-/events{/privacy}","received_events_url":"https://api.github.com/users/jow-/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":35,"created_at":"2018-04-26T07:10:54Z","updated_at":"2018-04-29T20:32:00Z","closed_at":null,"author_association":"CONTRIBUTOR","pull_request":{"url":"https://api.github.com/repos/openwrt/luci/pulls/1769","html_url":"https://github.com/openwrt/luci/pull/1769","diff_url":"https://github.com/openwrt/luci/pull/1769.diff","patch_url":"https://github.com/openwrt/luci/pull/1769.patch"},"body":"Switch to rpcd based uci apply/rollback workflow which helps to avoid soft-\r\nbricking devices by requiring an explicit confirmation call after config\r\napply.\r\n\r\nWhen a user now clicks \"Save & Apply\", LuCI first issues a call to uci apply\r\nwhich commits and reloads configuration, then goes into a polling countdown\r\nmode where it repeatedly attempts to call uci confirm.\r\n\r\nIf the committed configuration is sane, the confirm call will go through and\r\ncancel rpcd's pending rollback timer.\r\n\r\nIf the configuration change leads to a loss of connectivity (e.g. due to bad\r\nfirewall rules or similar), the rollback mechanism will kick in after the\r\ntimeout and revert configuration files and pending changes to the pre-apply\r\nstate.\r\n\r\nIn order to cover such rare cases where a lost of connectivity is expected\r\nand desired, the user is offered an \"unchecked\" apply option after timing\r\nout, which allows committing and applying the changes anyway, without the\r\nextra safety checks.\r\n\r\nAs a consequence of this change, the luci-reload mechanism is now completely\r\nunsused since rpcd uses ubus config reload signals to reload affected\r\nservices, which means that only procd-enabled services will receive proper\r\nreload treatment with the new workflow.\r\n\r\nSince this change is rather invasive and only tested with Firefox and my APU so far, I'd like to have some more testing coverage before merging it. Cc @hnyman @dibdot"},"comment":{"url":"https://api.github.com/repos/openwrt/luci/issues/comments/385279319","html_url":"https://github.com/openwrt/luci/pull/1769#issuecomment-385279319","issue_url":"https://api.github.com/repos/openwrt/luci/issues/1769","id":385279319,"user":{"login":"jow-","id":2528802,"avatar_url":"https://avatars2.githubusercontent.com/u/2528802?v=4","gravatar_id":"","url":"https://api.github.com/users/jow-","html_url":"https://github.com/jow-","followers_url":"https://api.github.com/users/jow-/followers","following_url":"https://api.github.com/users/jow-/following{/other_user}","gists_url":"https://api.github.com/users/jow-/gists{/gist_id}","starred_url":"https://api.github.com/users/jow-/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jow-/subscriptions","organizations_url":"https://api.github.com/users/jow-/orgs","repos_url":"https://api.github.com/users/jow-/repos","events_url":"https://api.github.com/users/jow-/events{/privacy}","received_events_url":"https://api.github.com/users/jow-/received_events","type":"User","site_admin":false},"created_at":"2018-04-29T20:32:00Z","updated_at":"2018-04-29T20:32:00Z","author_association":"CONTRIBUTOR","body":"Great to hear. Try increasing the 2000ms grace wait interval until the rollback confirm kicks in to something like 5000ms, maybe the confirm happens too early now, before the services even got restarted.\n\nRegards,\nJo\n\n\n"}}
{"actor":{"display_login":"jow-"}}