Skip to content

Commit 0ba5a90

Browse files
authored
Merge pull request #39 from simvue-io/error_handling_offline
Handle API errors properly in the offline sender
2 parents 2599192 + c954a43 commit 0ba5a90

File tree

3 files changed

+29
-22
lines changed

3 files changed

+29
-22
lines changed

bin/simvue_sender

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,6 @@ if __name__ == "__main__":
2424
try:
2525
sender()
2626
except Exception as err:
27-
logger.error('Exception running sender: %s', str(err))
27+
logger.critical('Exception running sender: %s', str(err))
2828

2929
remove_file(lockfile)

simvue/run.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ def __enter__(self):
164164
def __exit__(self, type, value, traceback):
165165
logger.debug('Automatically closing run %s in status %s', self._name, self._status)
166166

167-
if self._name and self._status == 'running':
167+
if (self._name or self._mode == 'offline') and self._status == 'running':
168168
if self._shutdown_event is not None:
169169
self._shutdown_event.set()
170170
if not type:

simvue/sender.py

Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,10 @@ def sender():
9898
run_init = get_json(f"{current}/run.json")
9999
start_time = os.path.getctime(f"{current}/run.json")
100100

101-
logger.info('Considering run with name %s and id %s', run_init['name'], id)
101+
if run_init['name']:
102+
logger.info('Considering run with name %s and id %s', run_init['name'], id)
103+
else:
104+
logger.info('Considering run with no name yet and id %s', id)
102105

103106
remote = Remote(run_init['name'], id, suppress_errors=True)
104107

@@ -110,9 +113,13 @@ def sender():
110113
name = None
111114
if not os.path.isfile(created_file):
112115
name = remote.create_run(run_init)
113-
logger.info('Creating run with name %s', run_init['name'])
114-
run_init = add_name(name, run_init, f"{current}/run.json")
115-
create_file(created_file)
116+
if name:
117+
logger.info('Creating run with name %s', name)
118+
run_init = add_name(name, run_init, f"{current}/run.json")
119+
create_file(created_file)
120+
else:
121+
logger.error('Failure creating run')
122+
continue
116123

117124
if status == 'running':
118125
# Check for recent heartbeat
@@ -160,40 +167,40 @@ def sender():
160167
logger.info('Sending metrics for run %s', run_init['name'])
161168
data = get_json(record, name)
162169
update_name(run_init['name'], data)
163-
remote.send_metrics(msgpack.packb(data, use_bin_type=True))
164-
rename = True
170+
if remote.send_metrics(msgpack.packb(data, use_bin_type=True)):
171+
rename = True
165172

166173
# Handle events
167174
if '/events-' in record:
168175
logger.info('Sending events for run %s', run_init['name'])
169176
data = get_json(record, name)
170177
update_name(run_init['name'], data)
171-
remote.send_event(msgpack.packb(data, use_bin_type=True))
172-
rename = True
178+
if remote.send_event(msgpack.packb(data, use_bin_type=True)):
179+
rename = True
173180

174181
# Handle updates
175182
if '/update-' in record:
176183
logger.info('Sending update for run %s', run_init['name'])
177-
remote.update(get_json(record, name), run_init['name'])
178-
rename = True
184+
if remote.update(get_json(record, name), run_init['name']):
185+
rename = True
179186

180187
# Handle folders
181188
if '/folder-' in record:
182189
logger.info('Sending folder details for run %s', run_init['name'])
183-
remote.set_folder_details(get_json(record, name), run_init['name'])
184-
rename = True
190+
if remote.set_folder_details(get_json(record, name), run_init['name']):
191+
rename = True
185192

186193
# Handle alerts
187194
if '/alert-' in record:
188195
logger.info('Sending alert details for run %s', run_init['name'])
189-
remote.add_alert(get_json(record, name), run_init['name'])
190-
rename = True
196+
if remote.add_alert(get_json(record, name), run_init['name']):
197+
rename = True
191198

192199
# Handle files
193200
if '/file-' in record:
194201
logger.info('Saving file for run %s', run_init['name'])
195-
remote.save_file(get_json(record, name), run_init['name'])
196-
rename = True
202+
if remote.save_file(get_json(record, name), run_init['name']):
203+
rename = True
197204

198205
# Rename processed files
199206
if rename:
@@ -203,11 +210,11 @@ def sender():
203210
# If the status is completed and there were no updates, the run must have completely finished
204211
if updates == 0 and status in ('completed', 'failed', 'terminated'):
205212
logger.info('Finished sending run %s', run_init['name'])
206-
create_file(f"{current}/sent")
207-
remove_file(f"{current}/{status}")
208213
data = {'name': run_init['name'], 'status': status}
209-
remote.update(data)
210-
cleanup = True
214+
if remote.update(data):
215+
create_file(f"{current}/sent")
216+
remove_file(f"{current}/{status}")
217+
cleanup = True
211218
elif updates == 0 and status == 'lost':
212219
logger.info('Finished sending run %s as it was lost', run_init['name'])
213220
create_file(f"{current}/sent")

0 commit comments

Comments
 (0)