@@ -46,7 +46,7 @@ class DatabaseSessionsManager(object):
46
46
47
47
def __init__ (self , database , pool ):
48
48
self ._database = database
49
- self ._logger = database .logger
49
+ self ._logger = None # Lazy initialization to avoid triggering database.logger during __init__
50
50
51
51
# The session pool manages non-multiplexed sessions, and
52
52
# will only be used if multiplexed sessions are not enabled.
@@ -64,6 +64,13 @@ def __init__(self, database, pool):
64
64
self ._multiplexed_session_lock = threading .Lock ()
65
65
self ._is_multiplexed_sessions_disabled_event = threading .Event ()
66
66
67
+ @property
68
+ def logger (self ):
69
+ """Get the logger, initializing it lazily to avoid triggering database.logger during __init__."""
70
+ if self ._logger is None :
71
+ self ._logger = self ._database .logger
72
+ return self ._logger
73
+
67
74
def get_session (self , transaction_type : TransactionType ) -> Session :
68
75
"""Returns a session for the given transaction type from the database session manager.
69
76
:rtype: :class:`~google.cloud.spanner_v1.session.Session`
@@ -157,7 +164,7 @@ def _build_multiplexed_session(self) -> Session:
157
164
158
165
session .create ()
159
166
160
- self ._logger .info ("Created multiplexed session." )
167
+ self .logger .info ("Created multiplexed session." )
161
168
162
169
return session
163
170
@@ -169,12 +176,12 @@ def _disable_multiplexed_sessions(self) -> None:
169
176
self ._multiplexed_session .delete ()
170
177
except Exception as exc : # noqa: BLE001
171
178
# Keep the client alive; best-effort cleanup.
172
- self ._logger .warning (
179
+ self .logger .warning (
173
180
"Failed to delete multiplexed session during disable: %s" , exc
174
181
)
175
182
self ._multiplexed_session = None
176
183
self ._is_multiplexed_sessions_disabled_event .set ()
177
- self ._database .session_options .disable_multiplexed (self ._logger )
184
+ self ._database .session_options .disable_multiplexed (self .logger )
178
185
179
186
def _build_maintenance_thread (self ) -> threading .Thread :
180
187
"""Builds and returns a multiplexed session maintenance thread for
@@ -241,7 +248,7 @@ def _maintain_multiplexed_session(session_manager_ref) -> None:
241
248
try :
242
249
session_manager ._multiplexed_session .delete ()
243
250
except Exception as exc : # noqa: BLE001
244
- session_manager ._logger .warning (
251
+ session_manager .logger .warning (
245
252
"Failed to delete multiplexed session during refresh: %s" , exc
246
253
)
247
254
0 commit comments