Skip to content

Commit d3357f8

Browse files
authored
better exit code handling in migrations code (Netflix#303)
1 parent ffd8898 commit d3357f8

File tree

3 files changed

+24
-8
lines changed

3 files changed

+24
-8
lines changed

services/migration_service/api/utils.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
from . import version_dict, latest, \
44
make_goose_migration_template, make_goose_template
55
from services.migration_service.migration_config import db_conf
6+
import sys
67

78

89
class ApiUtils(object):
9-
1010
@staticmethod
1111
def list_migrations():
1212
migrations_list = list((version_dict.keys()))
@@ -54,10 +54,12 @@ async def get_latest_compatible_version():
5454
version = await ApiUtils.get_goose_version()
5555
return version_dict[version]
5656
else:
57+
print("Running initial migration..", file=sys.stderr)
5758
goose_version_cmd = make_goose_migration_template(db_conf.connection_string_url, 'up')
5859
p = Popen(goose_version_cmd, shell=True,
5960
close_fds=True)
60-
p.wait()
61+
if p.wait() != 0:
62+
raise Exception("Failed to run initial migration")
6163
return latest
6264

6365
@staticmethod

services/migration_service/get_virtual_env.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import os
2+
import sys
23
import requests
34
import socket
45
import time
@@ -27,10 +28,16 @@
2728
retry_count = retry_count - 1
2829
# continue
2930
s.close()
31+
if retry_count == 0:
32+
print("ran out of retries to get migration version, exiting")
33+
sys.exit(1)
3034
except Exception as e:
3135
print(e)
36+
sys.exit(1)
3237

3338
r = requests.get('http://localhost:{0}/version'.format(port))
39+
r.raise_for_status()
40+
3441
conf_file = open('/root/services/migration_service/config', 'w')
3542
print(r.text, file=conf_file)
3643
conf_file.close()

services/migration_service/run_script.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from subprocess import Popen
22
import os
3+
import sys
34

45

56
def setup_env(version_value: str):
@@ -26,7 +27,9 @@ def setup_env(version_value: str):
2627
close_fds=True
2728
)
2829

29-
get_env_version.wait()
30+
if get_env_version.wait() != 0:
31+
print("Failed to get env version", file=sys.stderr)
32+
sys.exit(1)
3033

3134
# read in version of metadata service to load
3235
version_value_file = open('/root/services/migration_service/config', 'r')
@@ -40,10 +43,14 @@ def setup_env(version_value: str):
4043
env=setup_env(version_value)
4144
)
4245

43-
metadata_server_process.wait()
44-
migration_server_process.wait()
46+
rc = metadata_server_process.wait()
47+
if rc != 0:
48+
print("Metadata server exited with non zero status")
49+
sys.exit(rc)
50+
rc = migration_server_process.wait()
51+
if rc != 0:
52+
print("Migration server exited with non zero status")
53+
sys.exit(rc)
4554
except Exception as e:
4655
print(e)
47-
finally:
48-
# should never be reached
49-
exit(1)
56+
sys.exit(1)

0 commit comments

Comments
 (0)