001f3a7bfe
It was discovered that default= on a Column definition in a schema migration will attempt to update the table with the provided value, instead of just translating on read, which is often the assumption. The Instance.hidden=False change introduced in Train[1] used such a default on the new column, which caused at least one real-world deployment to time out rewriting the instances table due to size. Apparently SQLAlchemy-migrate also does not consider such a timeout to be a failure and proceeds on. The end result is that some existing instances in the database have hidden=NULL values, and the DB model layer does not convert those to hidden=False when we read/query them, causing those instances to be excluded from the API list view. This change alters the 399 schema migration to remove the default=False specification. This does not actually change the schema, but /will/ prevent users who have not yet upgraded to Train from rewriting the table. This change also makes the instance_get_all_by_filters() code handle hidden specially, including false and NULL in a query for non-hidden instances. A future change should add a developer trap test to ensure that future migrations do not add default= values to new columns to avoid this situation in the future. [1] Iaffb27bd8c562ba120047c04bb62619c0864f594 Change-Id: Iace3f653b42c20887b40ee0105c8e9a4edeff1f7 Closes-Bug: #1862205
20 lines
814 B
YAML
20 lines
814 B
YAML
---
|
|
upgrade:
|
|
- |
|
|
Upgrading to Train on a deployment with a large database may hit
|
|
`bug 1862205`_, which results in instance records left in a bad
|
|
state, and manifests as instances not being shown in list
|
|
operations. Users upgrading to Train for the first time will
|
|
definitely want to apply a version which includes this fix. Users
|
|
already on Train should upgrade to a version including this fix to
|
|
ensure the problem is addressed.
|
|
|
|
.. _bug 1862205: https://launchpad.net/bugs/1862205
|
|
fixes:
|
|
- |
|
|
A fix for serious `bug 1862205`_ is provided which addresses both
|
|
the performance aspect of schema migration 399, as well as the
|
|
potential fallout for cases where this migration silently fails
|
|
and leaves large numbers of instances hidden from view from the
|
|
API.
|