Rollback to previous version

Sometimes it might happen that there’s a need to rollback an performed upgrade of your installed instances.

In the below example we’ll upgrade an instance from 5.1.0 version to 5.2.0 and then rollback to 5.1.0 again.

Important

  • Please always make sure to have a backup of your Database

  • It’s also recommended to additionally backup your rhodecode.ini and vcsserver.ini configuration files, in case there’s some really custom configuration stored there.

  • Please read our release notes, and check Upgrade notes section for any additional information about important, or backward incompatible changes between releases.

Here’s our current installation, of 5.1.0 version:

$ ./rcstack -v
5.22.0
$ ./rcstack status
Running hostname: http://rhodecode.local

CONTAINER ID   NAMES                                  IMAGE                               STATUS                   PORTS
bfd375bd6fb3   rc_cluster_apps-celery-1               rhodecode/rhodecode-ce:5.1.0        Up 2 minutes
02deca05beda   rc_cluster_apps-celery-beat-1          rhodecode/rhodecode-ce:5.1.0        Up 2 minutes
e25335f717ab   rc_cluster_apps-rhodecode-1            rhodecode/rhodecode-ce:5.1.0        Up 2 minutes (healthy)
825040c8f310   rc_cluster_apps-sshd-1                 rhodecode/rhodecode-ce:5.1.0        Up 2 minutes (healthy)
3e2afccc5d78   rc_cluster_apps-svn-1                  rhodecode/rhodecode-ce:5.1.0        Up 2 minutes (healthy)
beb5e927b116   rc_cluster_apps-vcsserver-1            rhodecode/rhodecode-ce:5.1.0        Up 2 minutes (healthy)
9f78b0fa8cb7   rc_cluster_metrics-grafana-1           grafana/grafana:9.5.18              Up 3 minutes             3000/tcp
4d25f8d776e2   rc_cluster_metrics-loki-1              grafana/loki:2.9.8                  Up 3 minutes             3100/tcp
663eb2e5796b   rc_cluster_metrics-node-exporter-1     prom/node-exporter:v1.8.0           Up 3 minutes             9100/tcp
08a1a44a04e4   rc_cluster_metrics-prometheus-1        prom/prometheus:v2.51.2             Up 3 minutes             9090/tcp
5113b1ef25c6   rc_cluster_metrics-promtail-1          grafana/promtail:2.9.8              Up 3 minutes
39da8c645e3f   rc_cluster_metrics-statsd-exporter-1   prom/statsd-exporter:v0.26.1        Up 3 minutes (healthy)   9102/tcp, 9125/tcp, 9125/udp
4fa1573b0e7d   rc_cluster_router-traefik-1            traefik:v2.11.6                     Up 4 minutes             0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:3100->3100/tcp, :::3100->3100/tcp, 0.0.0.0:9022->9022/tcp, :::9022->9022/tcp
eed6cd70c3b5   rc_cluster_services-channelstream-1    channelstream/channelstream:0.7.1   Up 3 minutes (healthy)   8000/tcp
eb0ec9431300   rc_cluster_services-database-1         postgres:14.13                      Up 3 minutes (healthy)   5432/tcp
2859ca567851   rc_cluster_services-elasticsearch-1    elasticsearch:6.8.23                Up 3 minutes (healthy)   9200/tcp, 9300/tcp
28423cf32dc6   rc_cluster_services-nginx-errors-1     nginx:1.27.0                        Up 3 minutes             80/tcp
000cf8d38e29   rc_cluster_services-nginx-statics-1    nginx:1.27.0                        Up 3 minutes (healthy)   80/tcp
08106e123afe   rc_cluster_services-redis-1            redis:7.2.5                         Up 3 minutes (healthy)   6379/tcp

We’ll perform an upgrade of our rhodecode instances by running:

$ ./rcstack self-update
...
$ ./rcstack -v
5.23.0
$ ./rcstack stack-upgrade rhodecode
...
Upgrade to rhodecode/rhodecode-ce:5.2.0 completed

After the upgrade process finished, we check the status of our instances.

$ ./rcstack status
Running hostname: http://rhodecode.local

CONTAINER ID   NAMES                                  IMAGE                               STATUS                    PORTS
6cbdfb7d2f13   rc_cluster_apps-celery-1               rhodecode/rhodecode-ce:5.2.0        Up 18 seconds
94553c2ecf5d   rc_cluster_apps-celery-beat-1          rhodecode/rhodecode-ce:5.2.0        Up 16 seconds
d6b5ef17a013   rc_cluster_apps-rhodecode-3            rhodecode/rhodecode-ce:5.2.0        Up 50 seconds (unhealthy)
f84d8f6f5a1b   rc_cluster_apps-sshd-2                 rhodecode/rhodecode-ce:5.2.0        Up 33 seconds (unhealthy)
ea7eb18733ca   rc_cluster_apps-svn-2                  rhodecode/rhodecode-ce:5.2.0        Up 26 seconds (healthy)
04b365eeca78   rc_cluster_apps-vcsserver-3            rhodecode/rhodecode-ce:5.2.0        Up 58 seconds (healthy)
9f78b0fa8cb7   rc_cluster_metrics-grafana-1           grafana/grafana:9.5.18              Up 6 minutes              3000/tcp
4d25f8d776e2   rc_cluster_metrics-loki-1              grafana/loki:2.9.8                  Up 6 minutes              3100/tcp
663eb2e5796b   rc_cluster_metrics-node-exporter-1     prom/node-exporter:v1.8.0           Up 6 minutes              9100/tcp
08a1a44a04e4   rc_cluster_metrics-prometheus-1        prom/prometheus:v2.51.2             Up 6 minutes              9090/tcp
5113b1ef25c6   rc_cluster_metrics-promtail-1          grafana/promtail:2.9.8              Up 6 minutes
39da8c645e3f   rc_cluster_metrics-statsd-exporter-1   prom/statsd-exporter:v0.26.1        Up 6 minutes (healthy)    9102/tcp, 9125/tcp, 9125/udp
4fa1573b0e7d   rc_cluster_router-traefik-1            traefik:v2.11.6                     Up 8 minutes              0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:3100->3100/tcp, :::3100->3100/tcp, 0.0.0.0:9022->9022/tcp, :::9022->9022/tcp
eed6cd70c3b5   rc_cluster_services-channelstream-1    channelstream/channelstream:0.7.1   Up 7 minutes (healthy)    8000/tcp
eb0ec9431300   rc_cluster_services-database-1         postgres:14.13                      Up 7 minutes (healthy)    5432/tcp
2859ca567851   rc_cluster_services-elasticsearch-1    elasticsearch:6.8.23                Up 7 minutes (healthy)    9200/tcp, 9300/tcp
28423cf32dc6   rc_cluster_services-nginx-errors-1     nginx:1.27.0                        Up 7 minutes              80/tcp
000cf8d38e29   rc_cluster_services-nginx-statics-1    nginx:1.27.0                        Up 7 minutes (healthy)    80/tcp
08106e123afe   rc_cluster_services-redis-1            redis:7.2.5                         Up 7 minutes (healthy)    6379/tcp

We found out that there are some unhealthy containers. Here’s how we can rollback our installation back to 5.1.0 version.

  • Set the image to 5.1.0 from 5.2.0, and set rcstack back to 5.22.0

$ ./rcstack cli set-image 5.1.0
$ ./rcstack self-update --force --cli-revision=v5.22.0 --docker-revision=v5.22.0

RhodeCode Guarantees that bugfix releases, e.g 5.2.0 -> 5.2.1 won’t have any backward incompatible database changes. In such cases the rollback process would be finished.

In our example we did a two major release upgrade. I.e 5.1.0 -> 5.2.0 It means we have to also restore our database from before the upgrade. After this has been done, the last step should be to start our instances again.

  • Stop and start whole stack and let previous image be used

$ ./rcstack stack all down && ./rcstack stack all up -d

Status command will show us that our instances are back in the 5.1.0 version.

$ ./rcstack status
Running hostname: http://rhodecode.local

CONTAINER ID   NAMES                                  IMAGE                               STATUS                   PORTS
bfd375bd6fb3   rc_cluster_apps-celery-1               rhodecode/rhodecode-ce:5.1.0        Up 2 minutes
02deca05beda   rc_cluster_apps-celery-beat-1          rhodecode/rhodecode-ce:5.1.0        Up 2 minutes
e25335f717ab   rc_cluster_apps-rhodecode-1            rhodecode/rhodecode-ce:5.1.0        Up 2 minutes (healthy)
825040c8f310   rc_cluster_apps-sshd-1                 rhodecode/rhodecode-ce:5.1.0        Up 2 minutes (healthy)
3e2afccc5d78   rc_cluster_apps-svn-1                  rhodecode/rhodecode-ce:5.1.0        Up 2 minutes (healthy)
beb5e927b116   rc_cluster_apps-vcsserver-1            rhodecode/rhodecode-ce:5.1.0        Up 2 minutes (healthy)
9f78b0fa8cb7   rc_cluster_metrics-grafana-1           grafana/grafana:9.5.18              Up 3 minutes             3000/tcp
4d25f8d776e2   rc_cluster_metrics-loki-1              grafana/loki:2.9.8                  Up 3 minutes             3100/tcp
663eb2e5796b   rc_cluster_metrics-node-exporter-1     prom/node-exporter:v1.8.0           Up 3 minutes             9100/tcp
08a1a44a04e4   rc_cluster_metrics-prometheus-1        prom/prometheus:v2.51.2             Up 3 minutes             9090/tcp
5113b1ef25c6   rc_cluster_metrics-promtail-1          grafana/promtail:2.9.8              Up 3 minutes
39da8c645e3f   rc_cluster_metrics-statsd-exporter-1   prom/statsd-exporter:v0.26.1        Up 3 minutes (healthy)   9102/tcp, 9125/tcp, 9125/udp
4fa1573b0e7d   rc_cluster_router-traefik-1            traefik:v2.11.6                     Up 4 minutes             0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:3100->3100/tcp, :::3100->3100/tcp, 0.0.0.0:9022->9022/tcp, :::9022->9022/tcp
eed6cd70c3b5   rc_cluster_services-channelstream-1    channelstream/channelstream:0.7.1   Up 3 minutes (healthy)   8000/tcp
eb0ec9431300   rc_cluster_services-database-1         postgres:14.13                      Up 3 minutes (healthy)   5432/tcp
2859ca567851   rc_cluster_services-elasticsearch-1    elasticsearch:6.8.23                Up 3 minutes (healthy)   9200/tcp, 9300/tcp
28423cf32dc6   rc_cluster_services-nginx-errors-1     nginx:1.27.0                        Up 3 minutes             80/tcp
000cf8d38e29   rc_cluster_services-nginx-statics-1    nginx:1.27.0                        Up 3 minutes (healthy)   80/tcp
08106e123afe   rc_cluster_services-redis-1            redis:7.2.5                         Up 3 minutes (healthy)   6379/tcp