|
28 | 28 | from google.cloud.spanner_v1._opentelemetry_tracing import ( |
29 | 29 | add_span_event, |
30 | 30 | get_current_span, |
| 31 | + trace_call, |
31 | 32 | ) |
32 | 33 | from warnings import warn |
33 | 34 |
|
@@ -237,29 +238,41 @@ def bind(self, database): |
237 | 238 | session_template=Session(creator_role=self.database_role), |
238 | 239 | ) |
239 | 240 |
|
240 | | - returned_session_count = 0 |
241 | | - while not self._sessions.full(): |
242 | | - request.session_count = requested_session_count - self._sessions.qsize() |
| 241 | + observability_options = getattr(self._database, "observability_options", None) |
| 242 | + with trace_call( |
| 243 | + "CloudSpanner.FixedPool.BatchCreateSessions", |
| 244 | + observability_options=observability_options, |
| 245 | + ) as span: |
| 246 | + returned_session_count = 0 |
| 247 | + while not self._sessions.full(): |
| 248 | + request.session_count = requested_session_count - self._sessions.qsize() |
| 249 | + add_span_event( |
| 250 | + span, |
| 251 | + f"Creating {request.session_count} sessions", |
| 252 | + span_event_attributes, |
| 253 | + ) |
| 254 | + resp = api.batch_create_sessions( |
| 255 | + request=request, |
| 256 | + metadata=metadata, |
| 257 | + ) |
| 258 | + |
| 259 | + add_span_event( |
| 260 | + span, |
| 261 | + "Created sessions", |
| 262 | + dict(count=len(resp.session)), |
| 263 | + ) |
| 264 | + |
| 265 | + for session_pb in resp.session: |
| 266 | + session = self._new_session() |
| 267 | + session._session_id = session_pb.name.split("/")[-1] |
| 268 | + self._sessions.put(session) |
| 269 | + returned_session_count += 1 |
| 270 | + |
243 | 271 | add_span_event( |
244 | 272 | span, |
245 | | - f"Creating {request.session_count} sessions", |
| 273 | + f"Requested for {requested_session_count} sessions, returned {returned_session_count}", |
246 | 274 | span_event_attributes, |
247 | 275 | ) |
248 | | - resp = api.batch_create_sessions( |
249 | | - request=request, |
250 | | - metadata=metadata, |
251 | | - ) |
252 | | - for session_pb in resp.session: |
253 | | - session = self._new_session() |
254 | | - session._session_id = session_pb.name.split("/")[-1] |
255 | | - self._sessions.put(session) |
256 | | - returned_session_count += 1 |
257 | | - |
258 | | - add_span_event( |
259 | | - span, |
260 | | - f"Requested for {requested_session_count} sessions, returned {returned_session_count}", |
261 | | - span_event_attributes, |
262 | | - ) |
263 | 276 |
|
264 | 277 | def get(self, timeout=None): |
265 | 278 | """Check a session out from the pool. |
@@ -550,25 +563,30 @@ def bind(self, database): |
550 | 563 | span_event_attributes, |
551 | 564 | ) |
552 | 565 |
|
553 | | - returned_session_count = 0 |
554 | | - while created_session_count < self.size: |
555 | | - resp = api.batch_create_sessions( |
556 | | - request=request, |
557 | | - metadata=metadata, |
558 | | - ) |
559 | | - for session_pb in resp.session: |
560 | | - session = self._new_session() |
561 | | - session._session_id = session_pb.name.split("/")[-1] |
562 | | - self.put(session) |
563 | | - returned_session_count += 1 |
| 566 | + observability_options = getattr(self._database, "observability_options", None) |
| 567 | + with trace_call( |
| 568 | + "CloudSpanner.PingingPool.BatchCreateSessions", |
| 569 | + observability_options=observability_options, |
| 570 | + ) as span: |
| 571 | + returned_session_count = 0 |
| 572 | + while created_session_count < self.size: |
| 573 | + resp = api.batch_create_sessions( |
| 574 | + request=request, |
| 575 | + metadata=metadata, |
| 576 | + ) |
| 577 | + for session_pb in resp.session: |
| 578 | + session = self._new_session() |
| 579 | + session._session_id = session_pb.name.split("/")[-1] |
| 580 | + self.put(session) |
| 581 | + returned_session_count += 1 |
564 | 582 |
|
565 | | - created_session_count += len(resp.session) |
| 583 | + created_session_count += len(resp.session) |
566 | 584 |
|
567 | | - add_span_event( |
568 | | - current_span, |
569 | | - f"Requested for {requested_session_count} sessions, return {returned_session_count}", |
570 | | - span_event_attributes, |
571 | | - ) |
| 585 | + add_span_event( |
| 586 | + span, |
| 587 | + f"Requested for {requested_session_count} sessions, returned {returned_session_count}", |
| 588 | + span_event_attributes, |
| 589 | + ) |
572 | 590 |
|
573 | 591 | def get(self, timeout=None): |
574 | 592 | """Check a session out from the pool. |
|
0 commit comments