)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d9ba02f8500cfcc2f19e68265db1efcd52b98f4b","unresolved":false,"context_lines":[{"line_number":10,"context_line":"any more things. To remove the temptation, while cleaning up the"},{"line_number":11,"context_line":"codebase at the same time, we should remove the SoftDeleteMixin from"},{"line_number":12,"context_line":"NovaBase and only apply it to those models we want to be soft-deleted."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: If9200823f472fd3e9c32a8e61f235539ec7de8a5"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7a016987_9baf9c7c","line":13,"updated":"2015-05-21 22:11:29.000000000","message":"blueprint link?","commit_id":"464ab17499b68da7f673f46e4079f4ec811802da"}],"specs/liberty/approved/no-more-soft-delete.rst":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d9ba02f8500cfcc2f19e68265db1efcd52b98f4b","unresolved":false,"context_lines":[{"line_number":41,"context_line":"Project Priority"},{"line_number":42,"context_line":"----------------"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"No."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Proposed change"},{"line_number":47,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a016987_db075480","line":44,"updated":"2015-05-21 22:11:29.000000000","message":"Maybe - we\u0027re talking about it in the next hour.","commit_id":"464ab17499b68da7f673f46e4079f4ec811802da"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"e35b74553c304a7ebdd1af38d1f441adfbd3a357","unresolved":false,"context_lines":[{"line_number":41,"context_line":"Project Priority"},{"line_number":42,"context_line":"----------------"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"No."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Proposed change"},{"line_number":47,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a016987_0c7b6dc2","line":44,"in_reply_to":"7a016987_db075480","updated":"2015-05-22 06:00:06.000000000","message":"It made it, sweet!","commit_id":"464ab17499b68da7f673f46e4079f4ec811802da"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8689be87d0036ccd6c094f33e410331050e1755a","unresolved":false,"context_lines":[{"line_number":47,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"We only ever query deleted rows for FixedIp, Instance and InstanceTypes"},{"line_number":50,"context_line":"models. This spec proposes removing the SoftDeleteMixin from NovaBase and"},{"line_number":51,"context_line":"adding it to those specific models. A database migration is also proposed to"},{"line_number":52,"context_line":"remove the redundant columns."},{"line_number":53,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a016987_bb66d84e","line":50,"updated":"2015-05-21 22:13:48.000000000","message":"Yes, we want this.","commit_id":"464ab17499b68da7f673f46e4079f4ec811802da"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d9ba02f8500cfcc2f19e68265db1efcd52b98f4b","unresolved":false,"context_lines":[{"line_number":59,"context_line":"It could be argued that is too harsh on operators who are currently relying on"},{"line_number":60,"context_line":"some of those columns. We could initially remove the SoftDeleteMixin from"},{"line_number":61,"context_line":"NovaBase and add it back to these models, which are the only ones which are"},{"line_number":62,"context_line":"ever soft-deleted:"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"  AgentBuild"},{"line_number":65,"context_line":"  Aggregate"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a016987_bb31385c","line":62,"updated":"2015-05-21 22:11:29.000000000","message":"ha, is there anything that *isn\u0027t* in this list? :)","commit_id":"464ab17499b68da7f673f46e4079f4ec811802da"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"e35b74553c304a7ebdd1af38d1f441adfbd3a357","unresolved":false,"context_lines":[{"line_number":59,"context_line":"It could be argued that is too harsh on operators who are currently relying on"},{"line_number":60,"context_line":"some of those columns. We could initially remove the SoftDeleteMixin from"},{"line_number":61,"context_line":"NovaBase and add it back to these models, which are the only ones which are"},{"line_number":62,"context_line":"ever soft-deleted:"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"  AgentBuild"},{"line_number":65,"context_line":"  Aggregate"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a016987_8cd63d26","line":62,"in_reply_to":"7a016987_bb31385c","updated":"2015-05-22 06:00:06.000000000","message":"A few! I\u0027ve listed them in the next patchset, to be explicit.","commit_id":"464ab17499b68da7f673f46e4079f4ec811802da"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"af033f058b56746f2689ed7e0a83a67b0d2de25f","unresolved":false,"context_lines":[{"line_number":97,"context_line":"Data model impact"},{"line_number":98,"context_line":"-----------------"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"Changes which require modifications to the data model often have a wider impact"},{"line_number":101,"context_line":"on the system.  The community often has strong opinions on how the data model"},{"line_number":102,"context_line":"should be evolved, from both a functional and performance perspective. It is"},{"line_number":103,"context_line":"therefore important to capture and gain agreement as early as possible on any"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a016987_a78ec02b","line":100,"updated":"2015-05-21 17:03:35.000000000","message":"We seem to have fallen into template boilerplate land here?","commit_id":"464ab17499b68da7f673f46e4079f4ec811802da"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"af033f058b56746f2689ed7e0a83a67b0d2de25f","unresolved":false,"context_lines":[{"line_number":117,"context_line":"REST API impact"},{"line_number":118,"context_line":"---------------"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"Each API method which is either added or changed should have the following"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"* Specification for the method"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a016987_878184fd","line":120,"updated":"2015-05-21 17:03:35.000000000","message":"Ditto","commit_id":"464ab17499b68da7f673f46e4079f4ec811802da"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"e35b74553c304a7ebdd1af38d1f441adfbd3a357","unresolved":false,"context_lines":[{"line_number":117,"context_line":"REST API impact"},{"line_number":118,"context_line":"---------------"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"Each API method which is either added or changed should have the following"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"* Specification for the method"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a016987_cc579524","line":120,"in_reply_to":"7a016987_7bd3c0d5","updated":"2015-05-22 06:00:06.000000000","message":"This spec doesn\u0027t affect the instance table (my other one does I5dc3809c063e30a550e250e251dce52c546a4d85 ). Given the tables I want to remove SoftDeleteMixin from aren\u0027t queried, there should be no REST API impact.","commit_id":"464ab17499b68da7f673f46e4079f4ec811802da"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8689be87d0036ccd6c094f33e410331050e1755a","unresolved":false,"context_lines":[{"line_number":117,"context_line":"REST API impact"},{"line_number":118,"context_line":"---------------"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"Each API method which is either added or changed should have the following"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"* Specification for the method"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a016987_7bd3c0d5","line":120,"in_reply_to":"7a016987_878184fd","updated":"2015-05-21 22:13:48.000000000","message":"Need to dig into the --deleted option for showing instances and how we\u0027d handle that.  We could maybe fudge it by saying it\u0027s the same thing as if an operator did an archive/purge.  Or maybe there is a config option to have a timeframe before hard delete and people could set that to 0 to delete immediately, else something like 30 days for simple tenant usage.","commit_id":"464ab17499b68da7f673f46e4079f4ec811802da"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"af033f058b56746f2689ed7e0a83a67b0d2de25f","unresolved":false,"context_lines":[{"line_number":166,"context_line":"Security impact"},{"line_number":167,"context_line":"---------------"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Describe any potential security impact on the system.  Some of the items to"},{"line_number":170,"context_line":"consider include:"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"* Does this change touch sensitive data such as tokens, keys, or user data?"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a016987_47802cf5","line":169,"updated":"2015-05-21 17:03:35.000000000","message":"Ditto","commit_id":"464ab17499b68da7f673f46e4079f4ec811802da"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"b03c3343ff8fd31696b0b2d37017253e01955fd2","unresolved":false,"context_lines":[{"line_number":53,"context_line":"Finally, a database contraction will provided to remove the redundant columns."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"[need to check nova-manage but I can\u0027t find the source; if this change did"},{"line_number":56,"context_line":"break that a bit, how much does it matter?]"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Alternatives"},{"line_number":59,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a016987_8f150f9d","line":56,"updated":"2015-05-22 06:58:06.000000000","message":"Found it, nova/cmd/manage.py. From a quick look at the imports, it looks like it only does DB access using nova.db calls so it should have no additional impact.","commit_id":"361fc7588674ab69cdf738e17e75b3bbbe2f6620"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"64d4396fad173af9a86302c343ea50eba46847c3","unresolved":false,"context_lines":[{"line_number":13,"context_line":"There was widespread agreement at the YVR summit not to soft-delete any more"},{"line_number":14,"context_line":"things. To remove the temptation, while cleaning up the codebase at the same"},{"line_number":15,"context_line":"time, we should remove the SoftDeleteMixin from NovaBase and only apply it to"},{"line_number":16,"context_line":"those models we want to be soft-deleted."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Problem description"},{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5afe65bd_72d1ef56","line":16,"updated":"2015-06-04 05:37:08.000000000","message":"Thoughts on raising awareness of this spec on the ops ML? As this directly impacts operators","commit_id":"15f75dc1486fdde0fba2c0372a5ec218f4b951c9"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"6b25c42e09a8d0ea6dcc1699a5147e2544d055b3","unresolved":false,"context_lines":[{"line_number":13,"context_line":"There was widespread agreement at the YVR summit not to soft-delete any more"},{"line_number":14,"context_line":"things. To remove the temptation, while cleaning up the codebase at the same"},{"line_number":15,"context_line":"time, we should remove the SoftDeleteMixin from NovaBase and only apply it to"},{"line_number":16,"context_line":"those models we want to be soft-deleted."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Problem description"},{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5afe65bd_0f2969e6","line":16,"in_reply_to":"5afe65bd_72d1ef56","updated":"2015-06-04 10:42:38.000000000","message":"Yes, sounds good.","commit_id":"15f75dc1486fdde0fba2c0372a5ec218f4b951c9"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"46bb63cc8969ac6856a9903d605f478d56f59aa1","unresolved":false,"context_lines":[{"line_number":18,"context_line":"Problem description"},{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Soft deletion of rows imposes a management overhead, to later delete or"},{"line_number":22,"context_line":"archive those rows. It has also proved less necessary than initially imagined."},{"line_number":23,"context_line":"We would prefer additional soft-deletes were not added and so it does not make"},{"line_number":24,"context_line":"sense to automatically inherit the SoftDeleteMixin when inheriting from"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5afe65bd_88d5d7ba","line":21,"updated":"2015-06-01 16:50:28.000000000","message":"Useless comma here?","commit_id":"15f75dc1486fdde0fba2c0372a5ec218f4b951c9"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"6b25c42e09a8d0ea6dcc1699a5147e2544d055b3","unresolved":false,"context_lines":[{"line_number":18,"context_line":"Problem description"},{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Soft deletion of rows imposes a management overhead, to later delete or"},{"line_number":22,"context_line":"archive those rows. It has also proved less necessary than initially imagined."},{"line_number":23,"context_line":"We would prefer additional soft-deletes were not added and so it does not make"},{"line_number":24,"context_line":"sense to automatically inherit the SoftDeleteMixin when inheriting from"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5afe65bd_6abd6bb6","line":21,"in_reply_to":"5afe65bd_88d5d7ba","updated":"2015-06-04 10:42:38.000000000","message":"Done","commit_id":"15f75dc1486fdde0fba2c0372a5ec218f4b951c9"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"46bb63cc8969ac6856a9903d605f478d56f59aa1","unresolved":false,"context_lines":[{"line_number":49,"context_line":"According to a survey of db/sqlalchemy/api.py, we only ever query deleted rows"},{"line_number":50,"context_line":"for FixedIp, Instance and InstanceTypes models. This spec proposes removing"},{"line_number":51,"context_line":"the SoftDeleteMixin from NovaBase and re-adding it to only those specific"},{"line_number":52,"context_line":"models. The code will be updated so other tables are hard-deleted from."},{"line_number":53,"context_line":"Finally, a database contraction will provided to remove the redundant columns."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5afe65bd_a8d093ca","line":52,"updated":"2015-06-01 16:50:28.000000000","message":"This sentence isn\u0027t entirely clear to me. Maybe something like \"The code will be updated so that tables without the SoftDeleteMixin will use hard deletes\"?","commit_id":"15f75dc1486fdde0fba2c0372a5ec218f4b951c9"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"6b25c42e09a8d0ea6dcc1699a5147e2544d055b3","unresolved":false,"context_lines":[{"line_number":49,"context_line":"According to a survey of db/sqlalchemy/api.py, we only ever query deleted rows"},{"line_number":50,"context_line":"for FixedIp, Instance and InstanceTypes models. This spec proposes removing"},{"line_number":51,"context_line":"the SoftDeleteMixin from NovaBase and re-adding it to only those specific"},{"line_number":52,"context_line":"models. The code will be updated so other tables are hard-deleted from."},{"line_number":53,"context_line":"Finally, a database contraction will provided to remove the redundant columns."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5afe65bd_caab3f74","line":52,"in_reply_to":"5afe65bd_a8d093ca","updated":"2015-06-04 10:42:38.000000000","message":"Done","commit_id":"15f75dc1486fdde0fba2c0372a5ec218f4b951c9"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"46bb63cc8969ac6856a9903d605f478d56f59aa1","unresolved":false,"context_lines":[{"line_number":50,"context_line":"for FixedIp, Instance and InstanceTypes models. This spec proposes removing"},{"line_number":51,"context_line":"the SoftDeleteMixin from NovaBase and re-adding it to only those specific"},{"line_number":52,"context_line":"models. The code will be updated so other tables are hard-deleted from."},{"line_number":53,"context_line":"Finally, a database contraction will provided to remove the redundant columns."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Alternatives"},{"line_number":56,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5afe65bd_281a6318","line":53,"updated":"2015-06-01 16:50:28.000000000","message":"Missing a \u0027be\u0027 between \u0027will\u0027 and \u0027provided\u0027?","commit_id":"15f75dc1486fdde0fba2c0372a5ec218f4b951c9"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"6b25c42e09a8d0ea6dcc1699a5147e2544d055b3","unresolved":false,"context_lines":[{"line_number":50,"context_line":"for FixedIp, Instance and InstanceTypes models. This spec proposes removing"},{"line_number":51,"context_line":"the SoftDeleteMixin from NovaBase and re-adding it to only those specific"},{"line_number":52,"context_line":"models. The code will be updated so other tables are hard-deleted from."},{"line_number":53,"context_line":"Finally, a database contraction will provided to remove the redundant columns."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Alternatives"},{"line_number":56,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5afe65bd_8ab8a7c9","line":53,"in_reply_to":"5afe65bd_281a6318","updated":"2015-06-04 10:42:38.000000000","message":"Done","commit_id":"15f75dc1486fdde0fba2c0372a5ec218f4b951c9"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"728d2bbcc86c0bc04d6f6c19e5fe670b748fb64d","unresolved":false,"context_lines":[{"line_number":51,"context_line":"the SoftDeleteMixin from NovaBase and re-adding it to only those specific"},{"line_number":52,"context_line":"models. The code will be updated so other tables are hard-deleted from."},{"line_number":53,"context_line":"Finally, a database contraction will provided to remove the redundant columns."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Alternatives"},{"line_number":56,"context_line":"------------"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"5afe65bd_f2e83fe4","line":54,"updated":"2015-06-04 05:48:50.000000000","message":"So, I think this approach is quite brave. How about doing something like this instead:\n\n - remove the mixin from NovaBase, add it to _everything_\n - walk through each of the tables which has the mixin and do the removal / cleanup (columns dropped, right?) one table at a time\n - profit!","commit_id":"15f75dc1486fdde0fba2c0372a5ec218f4b951c9"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"6540f3347459d064bdf7d4a2b1f67ced1893f176","unresolved":false,"context_lines":[{"line_number":51,"context_line":"the SoftDeleteMixin from NovaBase and re-adding it to only those specific"},{"line_number":52,"context_line":"models. The code will be updated so other tables are hard-deleted from."},{"line_number":53,"context_line":"Finally, a database contraction will provided to remove the redundant columns."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Alternatives"},{"line_number":56,"context_line":"------------"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"5afe65bd_86a3faff","line":54,"in_reply_to":"5afe65bd_430f3437","updated":"2015-06-04 14:28:14.000000000","message":"hmm, so take a look, if the instance now always holds the flavor, I bet we don\u0027t need the soft delete query any more.\n\nHowever, I like the idea of adding the mixing directly, rather than in nova base as a start.\n\nMaybe this is what mikal said, but we could look to see if there are some obvious things we can stop soft deleting without anyone noticing.","commit_id":"15f75dc1486fdde0fba2c0372a5ec218f4b951c9"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"dd795cddac2b36a2d7f5e1940f16fffb7f8332a7","unresolved":false,"context_lines":[{"line_number":51,"context_line":"the SoftDeleteMixin from NovaBase and re-adding it to only those specific"},{"line_number":52,"context_line":"models. The code will be updated so other tables are hard-deleted from."},{"line_number":53,"context_line":"Finally, a database contraction will provided to remove the redundant columns."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Alternatives"},{"line_number":56,"context_line":"------------"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3afb71cf_01c65d16","line":54,"in_reply_to":"5afe65bd_86a3faff","updated":"2015-06-11 17:12:43.000000000","message":"My hope is that all of the things which are either never soft-deleted or queried for deleted rows can be deleted without anyone noticing. Those criteria proxy to \"Nova does not care\" as far as I can tell.\n\nIt\u0027s important to raise awareness of this spec on the operator\u0027s mailing list (as Joe said) to find out if operators critically depend on some of this data. In which case we would want to remove those columns still, but after a deprecation cycle. To my mind this is an implementation question though which can be tackled mainly during the review process.","commit_id":"15f75dc1486fdde0fba2c0372a5ec218f4b951c9"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"c41269b418d6649049ed7ffc50137da8329d8e33","unresolved":false,"context_lines":[{"line_number":51,"context_line":"the SoftDeleteMixin from NovaBase and re-adding it to only those specific"},{"line_number":52,"context_line":"models. The code will be updated so other tables are hard-deleted from."},{"line_number":53,"context_line":"Finally, a database contraction will provided to remove the redundant columns."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Alternatives"},{"line_number":56,"context_line":"------------"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"5afe65bd_430f3437","line":54,"in_reply_to":"5afe65bd_ca745f37","updated":"2015-06-04 14:26:15.000000000","message":"So... I am afraid I got the wrong end of the stick.\n\nWe can\u0027t just delete all this other columns, because people use them. We will actually need to phase these out really, with a deprecation period... sadly.\n\nTo be clear, operators are not relaying on the colums, they rely on the deleted data, sorry I am a massive pendant at times!\n\nI need to give this some more thought...","commit_id":"15f75dc1486fdde0fba2c0372a5ec218f4b951c9"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"6b25c42e09a8d0ea6dcc1699a5147e2544d055b3","unresolved":false,"context_lines":[{"line_number":51,"context_line":"the SoftDeleteMixin from NovaBase and re-adding it to only those specific"},{"line_number":52,"context_line":"models. The code will be updated so other tables are hard-deleted from."},{"line_number":53,"context_line":"Finally, a database contraction will provided to remove the redundant columns."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Alternatives"},{"line_number":56,"context_line":"------------"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"5afe65bd_ca745f37","line":54,"in_reply_to":"5afe65bd_f2e83fe4","updated":"2015-06-04 10:42:38.000000000","message":"As discussed with johnthetubaguy, this is a good idea but doesn\u0027t belong in the spec. I\u0027ll remember to do the first couple of removals one at a time, then if those go well, begin to batch them into small groups.","commit_id":"15f75dc1486fdde0fba2c0372a5ec218f4b951c9"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"410e5a23211d694feb45db55db702beb898d0b94","unresolved":false,"context_lines":[{"line_number":101,"context_line":"REST API impact"},{"line_number":102,"context_line":"---------------"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"None."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"Security impact"},{"line_number":107,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3afb71cf_3ce9771b","line":104,"updated":"2015-06-05 07:02:38.000000000","message":"Emm.....we have query parameter \u0027deleted\u0027 https://github.com/openstack/nova/blob/master/nova/api/openstack/compute/plugins/v3/servers.py#L307\n\nbetter to say what we plan to for it.","commit_id":"15f75dc1486fdde0fba2c0372a5ec218f4b951c9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5255628d3c4567d1f49152e46b051e335c076e31","unresolved":false,"context_lines":[{"line_number":101,"context_line":"REST API impact"},{"line_number":102,"context_line":"---------------"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"None."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"Security impact"},{"line_number":107,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3afb71cf_64bbb173","line":104,"in_reply_to":"3afb71cf_3ce9771b","updated":"2015-06-06 13:17:28.000000000","message":"I think what we said at the design summit was we\u0027d leave this alone, it just wouldn\u0027t return anything since we\u0027d actually be deleting things.  From what I remember there was some discussion about making that configurable, i.e. have an option that sets a limit for a cron to delete things, and if it\u0027s 0 that means delete immediately, otherwise delete after say a day/week/month.\n\nAlthough, reading more of the spec now, I see that it says we won\u0027t make this schema change for the instances table so the deleted param on the servers API extension would still work as normal.","commit_id":"15f75dc1486fdde0fba2c0372a5ec218f4b951c9"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"dd795cddac2b36a2d7f5e1940f16fffb7f8332a7","unresolved":false,"context_lines":[{"line_number":101,"context_line":"REST API impact"},{"line_number":102,"context_line":"---------------"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"None."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"Security impact"},{"line_number":107,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3afb71cf_618511ac","line":104,"in_reply_to":"3afb71cf_64bbb173","updated":"2015-06-11 17:12:43.000000000","message":"Matt is correct, I\u0027ve gone to some effort to review the API to find out what deleted data is needed to preserve the API untouched. This spec is only to remove columns which no-one should notice are gone.","commit_id":"15f75dc1486fdde0fba2c0372a5ec218f4b951c9"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"728d2bbcc86c0bc04d6f6c19e5fe670b748fb64d","unresolved":false,"context_lines":[{"line_number":121,"context_line":"Performance Impact"},{"line_number":122,"context_line":"------------------"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"The DB contraction may take a small amount of time to complete."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"Other deployer impact"},{"line_number":127,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5afe65bd_32b5b7ed","line":124,"updated":"2015-06-04 05:48:50.000000000","message":"I actually think this might be more expensive than we realize -- some of these tables might be quite large and we\u0027d be removing rows as well as columns. I suspect that means complete table re-write.\n\nIf there was some way we could let the operator decide when to do that work (perhaps a SpuriousDeleteMixin which can handle the columns either existing or not?) then that would be good.","commit_id":"15f75dc1486fdde0fba2c0372a5ec218f4b951c9"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"883608b3cbcbb8abd2875c724e2aacd8fbde1ca6","unresolved":false,"context_lines":[{"line_number":121,"context_line":"Performance Impact"},{"line_number":122,"context_line":"------------------"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"The DB contraction may take a small amount of time to complete."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"Other deployer impact"},{"line_number":127,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5afe65bd_69f57d55","line":124,"in_reply_to":"5afe65bd_32b5b7ed","updated":"2015-06-04 09:35:11.000000000","message":"You make a good point about having to remove rows as well. I\u0027ll investigate that SpuriousDeleteMixin idea.","commit_id":"15f75dc1486fdde0fba2c0372a5ec218f4b951c9"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"6b25c42e09a8d0ea6dcc1699a5147e2544d055b3","unresolved":false,"context_lines":[{"line_number":121,"context_line":"Performance Impact"},{"line_number":122,"context_line":"------------------"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"The DB contraction may take a small amount of time to complete."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"Other deployer impact"},{"line_number":127,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5afe65bd_2a0c133a","line":124,"in_reply_to":"5afe65bd_69f57d55","updated":"2015-06-04 10:42:38.000000000","message":"Discussed this in IRC, revising the spec.","commit_id":"15f75dc1486fdde0fba2c0372a5ec218f4b951c9"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"1fd1c469f237e9f0039a721e43222b49d55223ba","unresolved":false,"context_lines":[{"line_number":121,"context_line":"Performance Impact"},{"line_number":122,"context_line":"------------------"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"The DB contraction may take a small amount of time to complete."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"Other deployer impact"},{"line_number":127,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5afe65bd_e97cbfb6","line":124,"in_reply_to":"5afe65bd_69f57d55","updated":"2015-06-04 15:03:57.000000000","message":"Rows marked as soft deleted will definitely have to be removed first, as they rely on the deleted column for PK uniqueness. All of the indexes and FK constraints will also have to be changed to remove the dependence on the deleted columns, too.","commit_id":"15f75dc1486fdde0fba2c0372a5ec218f4b951c9"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b26b3b9df33b06c9b4b5b0e7fb5d7eba0496e85b","unresolved":false,"context_lines":[{"line_number":14,"context_line":"things. To remove the temptation, while cleaning up the codebase at the same"},{"line_number":15,"context_line":"time, we should remove the `SoftDeleteMixin` from NovaBase and only apply it to"},{"line_number":16,"context_line":"those models which are both soft-deleted at some point and which are queried"},{"line_number":17,"context_line":"for deleted rows."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Problem description"},{"line_number":20,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_f7af7192","line":17,"updated":"2015-06-12 13:33:36.000000000","message":"nit: just explain briefly the proposal, not the implementation details. Here, it\u0027s not necessary to talk about the mixin.","commit_id":"e8f3ddb64d4fc211061fb44cf1824cbea48f5d44"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"ec3df63a1b150934da652fd89fb8650f288af695","unresolved":false,"context_lines":[{"line_number":14,"context_line":"things. To remove the temptation, while cleaning up the codebase at the same"},{"line_number":15,"context_line":"time, we should remove the `SoftDeleteMixin` from NovaBase and only apply it to"},{"line_number":16,"context_line":"those models which are both soft-deleted at some point and which are queried"},{"line_number":17,"context_line":"for deleted rows."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Problem description"},{"line_number":20,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_07553a4f","line":17,"in_reply_to":"1af86dd1_f7af7192","updated":"2015-06-12 16:22:10.000000000","message":"Done","commit_id":"e8f3ddb64d4fc211061fb44cf1824cbea48f5d44"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b2ad8c00ef56235237f3f58eff9ba9cbc0200748","unresolved":false,"context_lines":[{"line_number":41,"context_line":"Project Priority"},{"line_number":42,"context_line":"----------------"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"No."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Proposed change"},{"line_number":47,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_d7547555","line":44,"updated":"2015-06-12 13:45:05.000000000","message":"s/No./None/","commit_id":"e8f3ddb64d4fc211061fb44cf1824cbea48f5d44"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"ec3df63a1b150934da652fd89fb8650f288af695","unresolved":false,"context_lines":[{"line_number":41,"context_line":"Project Priority"},{"line_number":42,"context_line":"----------------"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"No."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Proposed change"},{"line_number":47,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_c74e02c1","line":44,"in_reply_to":"1af86dd1_d7547555","updated":"2015-06-12 16:22:10.000000000","message":"Done","commit_id":"e8f3ddb64d4fc211061fb44cf1824cbea48f5d44"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b2ad8c00ef56235237f3f58eff9ba9cbc0200748","unresolved":false,"context_lines":[{"line_number":88,"context_line":"  InstanceAction              SnapshotIdMapping"},{"line_number":89,"context_line":"  InstanceActionEvent         TaskLog"},{"line_number":90,"context_line":"  InstanceIdMapping           VolumeIdMapping"},{"line_number":91,"context_line":"  Migration                   VolumeUsage"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"The Tag model already does not inherit `SoftDeleteMixin`."},{"line_number":94,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_d7b0f58d","line":91,"updated":"2015-06-12 13:45:05.000000000","message":"I\u0027m surprised that the Usage objects aren\u0027t read deleted by things like SimpleTenantUsage. You know those are excluded?","commit_id":"e8f3ddb64d4fc211061fb44cf1824cbea48f5d44"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b2ad8c00ef56235237f3f58eff9ba9cbc0200748","unresolved":false,"context_lines":[{"line_number":102,"context_line":"soft-deleted rows from tables which no longer have the `SoftDeleteMixin`. Two,"},{"line_number":103,"context_line":"an online DB contraction to drop the redundant `deleted` and `deleted_at`"},{"line_number":104,"context_line":"columns. The second should be reasonably quick but the first could take some"},{"line_number":105,"context_line":"time."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"To shorten the downtime window, operators may clean up these rows ahead of"},{"line_number":108,"context_line":"time. This will be documented in the release notes."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_777ee1af","line":105,"updated":"2015-06-12 13:45:05.000000000","message":"So this sounds like, under our current scheme, that we have a schema migration in M to drop the columns, and provide a cleanup tool to delete things in L, right?","commit_id":"e8f3ddb64d4fc211061fb44cf1824cbea48f5d44"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"ec3df63a1b150934da652fd89fb8650f288af695","unresolved":false,"context_lines":[{"line_number":102,"context_line":"soft-deleted rows from tables which no longer have the `SoftDeleteMixin`. Two,"},{"line_number":103,"context_line":"an online DB contraction to drop the redundant `deleted` and `deleted_at`"},{"line_number":104,"context_line":"columns. The second should be reasonably quick but the first could take some"},{"line_number":105,"context_line":"time."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"To shorten the downtime window, operators may clean up these rows ahead of"},{"line_number":108,"context_line":"time. This will be documented in the release notes."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_c7e5e2a8","line":105,"in_reply_to":"1af86dd1_777ee1af","updated":"2015-06-12 16:22:10.000000000","message":"Yes, that sounds right.","commit_id":"e8f3ddb64d4fc211061fb44cf1824cbea48f5d44"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b26b3b9df33b06c9b4b5b0e7fb5d7eba0496e85b","unresolved":false,"context_lines":[{"line_number":130,"context_line":"Performance Impact"},{"line_number":131,"context_line":"------------------"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"None."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"Other deployer impact"},{"line_number":136,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_f7865112","line":133,"updated":"2015-06-12 13:33:36.000000000","message":"Really ? How do you manage the transition when dropping the redundant cols ?","commit_id":"e8f3ddb64d4fc211061fb44cf1824cbea48f5d44"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b2ad8c00ef56235237f3f58eff9ba9cbc0200748","unresolved":false,"context_lines":[{"line_number":130,"context_line":"Performance Impact"},{"line_number":131,"context_line":"------------------"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"None."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"Other deployer impact"},{"line_number":136,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_7755c11b","line":133,"in_reply_to":"1af86dd1_f7865112","updated":"2015-06-12 13:45:05.000000000","message":"If we stop soft-deleting now, provide a tool to delete deleted stuff in batches (a la migrate-flavor-data) then I think the performance impact is negligible.","commit_id":"e8f3ddb64d4fc211061fb44cf1824cbea48f5d44"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"ec3df63a1b150934da652fd89fb8650f288af695","unresolved":false,"context_lines":[{"line_number":130,"context_line":"Performance Impact"},{"line_number":131,"context_line":"------------------"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"None."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"Other deployer impact"},{"line_number":136,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_aae4eb3a","line":133,"in_reply_to":"1af86dd1_f7865112","updated":"2015-06-12 16:22:10.000000000","message":"added some text about this","commit_id":"e8f3ddb64d4fc211061fb44cf1824cbea48f5d44"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b26b3b9df33b06c9b4b5b0e7fb5d7eba0496e85b","unresolved":false,"context_lines":[{"line_number":164,"context_line":"* Update code so that only those tables are soft-deleted."},{"line_number":165,"context_line":"* Update tests."},{"line_number":166,"context_line":"* Produce DB contraction to cleanup `deleted` and `deleted_at` columns."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"Dependencies"},{"line_number":169,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":170,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_f702d16e","line":167,"updated":"2015-06-12 13:33:36.000000000","message":"Mmm, shouldn\u0027t we also drop the shadow tables related to the ones which no longer have the SoftDeleteMixin ?","commit_id":"e8f3ddb64d4fc211061fb44cf1824cbea48f5d44"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"ec3df63a1b150934da652fd89fb8650f288af695","unresolved":false,"context_lines":[{"line_number":164,"context_line":"* Update code so that only those tables are soft-deleted."},{"line_number":165,"context_line":"* Update tests."},{"line_number":166,"context_line":"* Produce DB contraction to cleanup `deleted` and `deleted_at` columns."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"Dependencies"},{"line_number":169,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":170,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_6abf13d1","line":167,"in_reply_to":"1af86dd1_8daa6e18","updated":"2015-06-12 16:22:10.000000000","message":"I\u0027ve added some text.","commit_id":"e8f3ddb64d4fc211061fb44cf1824cbea48f5d44"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b2ad8c00ef56235237f3f58eff9ba9cbc0200748","unresolved":false,"context_lines":[{"line_number":164,"context_line":"* Update code so that only those tables are soft-deleted."},{"line_number":165,"context_line":"* Update tests."},{"line_number":166,"context_line":"* Produce DB contraction to cleanup `deleted` and `deleted_at` columns."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"Dependencies"},{"line_number":169,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":170,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_f7165154","line":167,"in_reply_to":"1af86dd1_f702d16e","updated":"2015-06-12 13:45:05.000000000","message":"This is a good point. I wonder if we should first drop all the shadow tables before we embark on dropping soft deletes. Didn\u0027t we say that we were going to do that?\n\nRegardless, even if just for the affected tables here, I would think an early work item of \"stop doing anything with shadow tables, delete shadow tables outright\" would be good.","commit_id":"e8f3ddb64d4fc211061fb44cf1824cbea48f5d44"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"065a5e22b8864c0ecc75c4dae7dbcc4051caebc6","unresolved":false,"context_lines":[{"line_number":164,"context_line":"* Update code so that only those tables are soft-deleted."},{"line_number":165,"context_line":"* Update tests."},{"line_number":166,"context_line":"* Produce DB contraction to cleanup `deleted` and `deleted_at` columns."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"Dependencies"},{"line_number":169,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":170,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_8daa6e18","line":167,"in_reply_to":"1af86dd1_f7165154","updated":"2015-06-12 14:33:50.000000000","message":"+1 on dropping the shadow tables.\n\nBefore dropping the columns, though, you will have to purge any deleted rows, and update any indexes which include deleted to provide uniqueness.","commit_id":"e8f3ddb64d4fc211061fb44cf1824cbea48f5d44"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"065a5e22b8864c0ecc75c4dae7dbcc4051caebc6","unresolved":false,"context_lines":[{"line_number":184,"context_line":"must be documented in the release notes."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"It must be made clear to operators that the affected tables will no longer bear"},{"line_number":187,"context_line":"the `deleted` and `deleted_at` columns."},{"line_number":188,"context_line":""},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_4d18f684","line":187,"updated":"2015-06-12 14:33:50.000000000","message":"If the documentation refers to retrieving data to optionally include soft deleted rows, this will have to be updated to remove that reference.","commit_id":"e8f3ddb64d4fc211061fb44cf1824cbea48f5d44"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b2ad8c00ef56235237f3f58eff9ba9cbc0200748","unresolved":false,"context_lines":[{"line_number":198,"context_line":"Query review"},{"line_number":199,"context_line":"------------"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"These are the queries which read deleted rows:"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"* FixedIp - fixed_ip_disassociate."},{"line_number":204,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_322bd784","line":201,"updated":"2015-06-12 13:45:05.000000000","message":"They read deleted rows because of some higher-level thing asking them to, right? Are they all actually used for deleted stuff? Can you briefly list the high-level thing here as well?","commit_id":"e8f3ddb64d4fc211061fb44cf1824cbea48f5d44"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"065a5e22b8864c0ecc75c4dae7dbcc4051caebc6","unresolved":false,"context_lines":[{"line_number":263,"context_line":"API review"},{"line_number":264,"context_line":"----------"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"The API has been reviewed and these are the only tables which are"},{"line_number":267,"context_line":"soft-deleted from::"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"  AgentBuild                  InstanceMetadata"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_ad5bea53","line":266,"updated":"2015-06-12 14:33:50.000000000","message":"How does this change the API as seen by the API caller? Are there options for soft-deleting, or options for including soft-deleted rows in the output? If so, these need to be documented.","commit_id":"e8f3ddb64d4fc211061fb44cf1824cbea48f5d44"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"f121b3d22b2f33f6fc4c3fc54ec95fb24ab5c43d","unresolved":false,"context_lines":[{"line_number":95,"context_line":"-----------------"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"The `deleted` and `deleted_at` columns will be removed from all tables other"},{"line_number":98,"context_line":"than FixedIp, Instance and InstanceTypes."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"To achieve this, two migrations are necessary. One, a data migration to drop"},{"line_number":101,"context_line":"soft-deleted rows from tables which no longer have the `SoftDeleteMixin`. Two,"}],"source_content_type":"text/x-rst","patch_set":10,"id":"ba3cc151_834f0e91","line":98,"updated":"2015-07-09 09:26:42.000000000","message":"I have one little question. How we will remove \u0027deleted\u0027 and \u0027deleted_at\u0027 columns if we can\u0027t do subtractive operations in migrations? https://review.openstack.org/#/c/197349/\n\nP.S. I\u0027m totally agree with you thank we need to remove soft deleted from some tables. I just wanted to say that specified patch will block you work.","commit_id":"f15cd2b220db5c2fab78a72cbfc2e6924c031357"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"d4fe7ccf0e6912df6bd958d4afc7eb30655c72c0","unresolved":false,"context_lines":[{"line_number":95,"context_line":"-----------------"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"The `deleted` and `deleted_at` columns will be removed from all tables other"},{"line_number":98,"context_line":"than FixedIp, Instance and InstanceTypes."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"To achieve this, two migrations are necessary. One, a data migration to drop"},{"line_number":101,"context_line":"soft-deleted rows from tables which no longer have the `SoftDeleteMixin`. Two,"}],"source_content_type":"text/x-rst","patch_set":10,"id":"ba3cc151_6333ea14","line":98,"in_reply_to":"ba3cc151_834f0e91","updated":"2015-07-09 09:27:45.000000000","message":"agree with you that*","commit_id":"f15cd2b220db5c2fab78a72cbfc2e6924c031357"}]}
