{"action":"created","issue":{"url":"https://api.github.com/repos/owncloud/core/issues/18721","labels_url":"https://api.github.com/repos/owncloud/core/issues/18721/labels{/name}","comments_url":"https://api.github.com/repos/owncloud/core/issues/18721/comments","events_url":"https://api.github.com/repos/owncloud/core/issues/18721/events","html_url":"https://github.com/owncloud/core/issues/18721","id":104096750,"number":18721,"title":"Non-disruptive Upgrades","user":{"login":"MTRichards","id":1818977,"avatar_url":"https://avatars.githubusercontent.com/u/1818977?v=3","gravatar_id":"","url":"https://api.github.com/users/MTRichards","html_url":"https://github.com/MTRichards","followers_url":"https://api.github.com/users/MTRichards/followers","following_url":"https://api.github.com/users/MTRichards/following{/other_user}","gists_url":"https://api.github.com/users/MTRichards/gists{/gist_id}","starred_url":"https://api.github.com/users/MTRichards/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MTRichards/subscriptions","organizations_url":"https://api.github.com/users/MTRichards/orgs","repos_url":"https://api.github.com/users/MTRichards/repos","events_url":"https://api.github.com/users/MTRichards/events{/privacy}","received_events_url":"https://api.github.com/users/MTRichards/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/owncloud/core/labels/enhancement%20-%20proposed","name":"enhancement - proposed","color":"FF9900"},{"url":"https://api.github.com/repos/owncloud/core/labels/feature:update","name":"feature:update","color":"d4c5f9"},{"url":"https://api.github.com/repos/owncloud/core/labels/overview","name":"overview","color":"fef2c0"}],"state":"open","locked":false,"assignee":{"login":"VicDeo","id":991300,"avatar_url":"https://avatars.githubusercontent.com/u/991300?v=3","gravatar_id":"","url":"https://api.github.com/users/VicDeo","html_url":"https://github.com/VicDeo","followers_url":"https://api.github.com/users/VicDeo/followers","following_url":"https://api.github.com/users/VicDeo/following{/other_user}","gists_url":"https://api.github.com/users/VicDeo/gists{/gist_id}","starred_url":"https://api.github.com/users/VicDeo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/VicDeo/subscriptions","organizations_url":"https://api.github.com/users/VicDeo/orgs","repos_url":"https://api.github.com/users/VicDeo/repos","events_url":"https://api.github.com/users/VicDeo/events{/privacy}","received_events_url":"https://api.github.com/users/VicDeo/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/owncloud/core/milestones/48","html_url":"https://github.com/owncloud/core/milestones/9.0-current","labels_url":"https://api.github.com/repos/owncloud/core/milestones/48/labels","id":1196845,"number":48,"title":"9.0-current","description":"","creator":{"login":"cmonteroluque","id":879976,"avatar_url":"https://avatars.githubusercontent.com/u/879976?v=3","gravatar_id":"","url":"https://api.github.com/users/cmonteroluque","html_url":"https://github.com/cmonteroluque","followers_url":"https://api.github.com/users/cmonteroluque/followers","following_url":"https://api.github.com/users/cmonteroluque/following{/other_user}","gists_url":"https://api.github.com/users/cmonteroluque/gists{/gist_id}","starred_url":"https://api.github.com/users/cmonteroluque/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cmonteroluque/subscriptions","organizations_url":"https://api.github.com/users/cmonteroluque/orgs","repos_url":"https://api.github.com/users/cmonteroluque/repos","events_url":"https://api.github.com/users/cmonteroluque/events{/privacy}","received_events_url":"https://api.github.com/users/cmonteroluque/received_events","type":"User","site_admin":false},"open_issues":552,"closed_issues":384,"state":"open","created_at":"2015-07-07T14:21:23Z","updated_at":"2015-11-18T17:16:50Z","due_on":"2016-02-09T05:00:00Z","closed_at":null},"comments":30,"created_at":"2015-08-31T17:32:30Z","updated_at":"2015-11-18T17:50:28Z","closed_at":null,"body":"Goal:\r\n* Upgrade NEVER leads to a non working ownCloud installation. (ownCloud should never be in a state where it is not working / can't be recovered)\r\n* Done very fast (1min) (long running steps should happen before or after asynchronously)\r\n* Works from CLI and web\r\n* Always tells the admin whats happening now, what happens next and how long it will take.\r\n* Offers roll-back\r\n\r\nApproach:\r\n* New isolated updater, all code files are located in /updater, no interaction with the rest of ownCloud. \r\n* No code, configuration, database or anything else used from core is required. (- included with normal ‘required’ to make it isolated)\r\n* Shipped with ownCloud core\r\n* Can be called by CLI or web (updater/update.php or  /updater)\r\n* Offer interactive or automatic mode (interactive recommended)\r\n* Offers to do a /data backup if possible\r\n* Offers to do a db backup if possible\r\n* Offers to do a full rollback if failed or offers a Retry if a steps fails temporarily.\r\n* Support the admin with cleaning caches/backup\r\n* Can detect failed app upgrades and can move failed apps into a ‘incompatible-apps’ folder\r\n* Included tipps and tricks and hints \r\n* Included links to documentation for more information\r\n* Upgrade steps should be split up into pre/post steps and optional/required steps. For example mimetype conversion can happen when an user requests his files instead of doing 16 hour queries on update.\r\n* ownCloud should check itself for integrity problems. So it ownCloud and the DB schema are unmodified or changed.\r\n* It should be possible to export schema migration statements to do the DB migration asynchronously.\r\nCurrently: On-the fly schema migration, diff\r\nWanted: Have predictable database upgrade changes, move to define the migration steps \r\n* DOES NEVER BREAK\r\n\r\nConcrete process:\r\n* tbd\r\n\r\n\r\nTodos:\r\n* Check how wordpress handles it\r\n* Check how Piwik handles it\r\n* Go through existing issues to see if we catch all problems\r\n* somehow make sure that the admin doesn't miss new config options  \r\n"},"comment":{"url":"https://api.github.com/repos/owncloud/core/issues/comments/157798643","html_url":"https://github.com/owncloud/core/issues/18721#issuecomment-157798643","issue_url":"https://api.github.com/repos/owncloud/core/issues/18721","id":157798643,"user":{"login":"DeepDiver1975","id":1005065,"avatar_url":"https://avatars.githubusercontent.com/u/1005065?v=3","gravatar_id":"","url":"https://api.github.com/users/DeepDiver1975","html_url":"https://github.com/DeepDiver1975","followers_url":"https://api.github.com/users/DeepDiver1975/followers","following_url":"https://api.github.com/users/DeepDiver1975/following{/other_user}","gists_url":"https://api.github.com/users/DeepDiver1975/gists{/gist_id}","starred_url":"https://api.github.com/users/DeepDiver1975/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DeepDiver1975/subscriptions","organizations_url":"https://api.github.com/users/DeepDiver1975/orgs","repos_url":"https://api.github.com/users/DeepDiver1975/repos","events_url":"https://api.github.com/users/DeepDiver1975/events{/privacy}","received_events_url":"https://api.github.com/users/DeepDiver1975/received_events","type":"User","site_admin":false},"created_at":"2015-11-18T17:50:28Z","updated_at":"2015-11-18T17:50:28Z","body":"The full list of files which are contained in a release are part of the signing mechanism.\r\nThis should give a good starting point."}}