1515from __future__ import annotations
1616
1717import asyncio
18+ from datetime import datetime
19+ from datetime import timedelta
20+ from datetime import timezone
1821import logging
1922import re
2023from typing import Tuple , TYPE_CHECKING
@@ -104,7 +107,9 @@ async def _perform_refresh(self) -> ConnectionInfo:
104107 ConnectionInfo: Result of the refresh operation.
105108 """
106109 self ._refresh_in_progress .set ()
107- logger .debug (f"['{ self ._instance_uri } ']: Entered _perform_refresh" )
110+ logger .debug (
111+ f"['{ self ._instance_uri } ']: Connection info refresh operation started"
112+ )
108113
109114 try :
110115 await self ._refresh_rate_limiter .acquire ()
@@ -115,10 +120,19 @@ async def _perform_refresh(self) -> ConnectionInfo:
115120 self ._name ,
116121 self ._keys ,
117122 )
123+ logger .debug (
124+ f"['{ self ._instance_uri } ']: Connection info refresh operation"
125+ " complete"
126+ )
127+ logger .debug (
128+ f"['{ self ._instance_uri } ']: Current certificate expiration = "
129+ f"{ connection_info .expiration .isoformat ()} "
130+ )
118131
119- except Exception :
132+ except Exception as e :
120133 logger .debug (
121- f"['{ self ._instance_uri } ']: Error occurred during _perform_refresh."
134+ f"['{ self ._instance_uri } ']: Connection info refresh operation"
135+ f" failed: { str (e )} "
122136 )
123137 raise
124138
@@ -153,7 +167,6 @@ async def _refresh_operation(self, delay: int) -> ConnectionInfo:
153167 refresh_task : asyncio .Task
154168 try :
155169 if delay > 0 :
156- logger .debug (f"['{ self ._instance_uri } ']: Entering sleep" )
157170 await asyncio .sleep (delay )
158171 refresh_task = asyncio .create_task (self ._perform_refresh ())
159172 refresh_result = await refresh_task
@@ -162,6 +175,11 @@ async def _refresh_operation(self, delay: int) -> ConnectionInfo:
162175 raise RefreshError (
163176 f"['{ self ._instance_uri } ']: Invalid refresh operation. Certficate appears to be expired."
164177 )
178+ except asyncio .CancelledError :
179+ logger .debug (
180+ f"['{ self ._instance_uri } ']: Scheduled refresh operation cancelled"
181+ )
182+ raise
165183 # bad refresh attempt
166184 except Exception :
167185 logger .info (
@@ -180,6 +198,12 @@ async def _refresh_operation(self, delay: int) -> ConnectionInfo:
180198 self ._current = refresh_task
181199 # calculate refresh delay based on certificate expiration
182200 delay = _seconds_until_refresh (refresh_result .expiration )
201+ logger .debug (
202+ f"['{ self ._instance_uri } ']: Connection info refresh operation"
203+ " scheduled for "
204+ f"{ (datetime .now (timezone .utc ) + timedelta (seconds = delay )).isoformat (timespec = 'seconds' )} "
205+ f"(now + { timedelta (seconds = delay )} )"
206+ )
183207 self ._next = self ._schedule_refresh (delay )
184208
185209 return refresh_result
@@ -207,9 +231,11 @@ async def close(self) -> None:
207231 """
208232 Cancel refresh tasks.
209233 """
210- logger .debug (f"['{ self ._instance_uri } ']: Waiting for _current to be cancelled" )
234+ logger .debug (
235+ f"['{ self ._instance_uri } ']: Canceling connection info refresh"
236+ " operation tasks"
237+ )
211238 self ._current .cancel ()
212- logger .debug (f"['{ self ._instance_uri } ']: Waiting for _next to be cancelled" )
213239 self ._next .cancel ()
214240 # gracefully wait for tasks to cancel
215241 tasks = asyncio .gather (self ._current , self ._next , return_exceptions = True )
0 commit comments