@@ -34,6 +34,7 @@ def __init__(self, settings):
34
34
self .processes = {"matlab" : None , "xvfb" : None }
35
35
self .matlab_port = None
36
36
self .licensing = None
37
+ self .tasks = {}
37
38
self .logs = {
38
39
"matlab" : deque (maxlen = 200 ),
39
40
}
@@ -66,6 +67,14 @@ def __reset_and_delete_cached_licensing(self):
66
67
self .licensing = None
67
68
self .__delete_cached_licensing_file ()
68
69
70
+ async def __update_and_persist_licensing (self ):
71
+ successful_update = await self .update_entitlements ()
72
+ if successful_update :
73
+ self .persist_licensing ()
74
+ else :
75
+ self .__reset_and_delete_cached_licensing ()
76
+ return successful_update
77
+
69
78
async def init_licensing (self ):
70
79
"""Initialize licensing from environment variable or cached file.
71
80
@@ -122,12 +131,9 @@ async def init_licensing(self):
122
131
) - timedelta (hours = 1 )
123
132
124
133
if expiry_window > datetime .now (timezone .utc ):
125
- successful_update = await self .update_entitlements ()
134
+ successful_update = self .__update_and_persist_licensing ()
126
135
if successful_update :
127
136
logger .info ("Successful re-use of cached information." )
128
- self .persist_licensing ()
129
- else :
130
- self .__reset_and_delete_cached_licensing ()
131
137
else :
132
138
self .__reset_and_delete_cached_licensing ()
133
139
else :
@@ -198,8 +204,9 @@ async def set_licensing_mhlm(
198
204
"entitlement_id" : entitlement_id ,
199
205
}
200
206
201
- await self .update_entitlements ()
202
- self .persist_licensing ()
207
+ successful_update = self .__update_and_persist_licensing ()
208
+ if successful_update :
209
+ logger .info ("Login successful, persisting login information." )
203
210
204
211
except OnlineLicensingError as e :
205
212
self .error = e
@@ -445,16 +452,19 @@ async def start_matlab(self, restart=False):
445
452
self .processes ["matlab" ] = matlab
446
453
logger .debug (f"Started MATLAB (PID={ matlab .pid } )" )
447
454
448
- async def reader ():
455
+ async def matlab_stderr_reader ():
456
+ logger .info ("Starting task to save error logs from MATLAB" )
449
457
while not self .processes ["matlab" ].stderr .at_eof ():
458
+ logger .info ("Checking for any error logs from MATLAB to save..." )
450
459
line = await self .processes ["matlab" ].stderr .readline ()
451
460
if line is None :
452
461
break
462
+ logger .info ("Saving error logs from MATLAB." )
453
463
self .logs ["matlab" ].append (line )
454
464
await self .handle_matlab_output ()
455
465
456
466
loop = asyncio .get_running_loop ()
457
- loop .create_task (reader ())
467
+ self . tasks [ "matlab_stderr_reader" ] = loop .create_task (matlab_stderr_reader ())
458
468
459
469
async def stop_matlab (self ):
460
470
"""Terminate MATLAB."""
@@ -497,12 +507,15 @@ async def handle_matlab_output(self):
497
507
matlab = self .processes ["matlab" ]
498
508
499
509
# Wait for MATLAB process to exit
510
+ logger .info ("handle_matlab_output Waiting for MATLAB to exit..." )
500
511
await matlab .wait ()
501
512
502
513
rc = self .processes ["matlab" ].returncode
514
+ logger .info (f"handle_matlab_output MATLAB has exited with errorcode: { rc } " )
503
515
504
516
# Look for errors if MATLAB was not intentionally stopped and had an error code
505
517
if len (self .logs ["matlab" ]) > 0 and self .processes ["matlab" ].returncode != 0 :
518
+ logger .info (f"handle_matlab_output Some error was found!" )
506
519
err = None
507
520
logs = [log .decode ().rstrip () for log in self .logs ["matlab" ]]
508
521
0 commit comments