Github user marcaurele commented on the issue:
https://github.com/apache/cloudstack/pull/1768
I'll try to make my point clearer with a better use case. Let say you were
running version ACS 4.4.2 and wish to upgrade to 4.7.1. After installing the
4.7.1, when ACS starts for the first time you will execute SQL scripts in that
order (case A):
```
schema-442to450.sql -----> schema-442to450-cleanup.sql
| | |
v | v
schema-450to451.sql | schema-450to451-cleanup.sql
| | |
v | v
schema-451to452.sql | schema-451to452-cleanup.sql
| | |
v | v
schema-452to460.sql | schema-452to460-cleanup.sql
| | |
v | v
schema-460to461.sql | schema-460to461-cleanup.sql
| | |
v | v
schema-461to470.sql | schema-461to470-cleanup.sql
| | |
v | v
schema-470to471.sql >---- schema-470to471-cleanup.sql
```
But if you would have updated to each versions, one after the other, you
would have run those scripts in that order (case B):
```
schema-442to450.sql -----> schema-442to450-cleanup.sql
|
--------------------------
|
v
schema-450to451.sql -----> schema-450to451-cleanup.sql
|
--------------------------
|
v
schema-451to452.sql -----> schema-451to452-cleanup.sql
|
--------------------------
|
v
schema-452to460.sql -----> schema-452to460-cleanup.sql
|
--------------------------
|
v
schema-460to461.sql -----> schema-460to461-cleanup.sql
|
--------------------------
|
v
schema-461to470.sql -----> schema-461to470-cleanup.sql
|
--------------------------
|
v
schema-470to471.sql -----> schema-470to471-cleanup.sql
```
Since **case B** is that most developer would expect when fixing bugs and
doing changes, but **case A** is the most common case of production upgrade, I
wanted to correct the algorithm so that everyone will follow the same route
(case B).
Most `-cleanup.sql` scripts are either empty or only updating the
`configuration` table, so it's safe. There is only one possible problematic
script:
https://github.com/apache/cloudstack/blob/master/setup/db/db/schema-481to490-cleanup.sql
today. This one does change views, which IMO was a mistake to put in the
cleanup script file, it should have gone into `schema-481to490.sql` (@rhtyd ?).
Leaving the mechanism as it is today would leave people with a possible bug
while upgrading from any version prior to 4.9.0 *if* any future SQL script was
to change the views modified inside `schema-481to490-cleanup.sql` because of
scenario case A. Did I lost people there?
Any comment @remibergsma @DaanHoogland @syed @nvazquez ?
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---