|
18 | 18 |
|
19 | 19 | import dataclasses |
20 | 20 | import functools |
| 21 | +import logging |
| 22 | + |
| 23 | +logger = logging.getLogger(__name__) |
21 | 24 | import math |
22 | 25 | import threading |
23 | 26 | import uuid |
@@ -157,25 +160,31 @@ def _on_start_execution(self, change: dict[str, Any]): |
157 | 160 |
|
158 | 161 | def run_execution(): |
159 | 162 | try: |
| 163 | + self._error_message = None |
160 | 164 | if self.is_deferred_mode: |
161 | | - self.is_deferred_mode = False |
162 | 165 | if self._deferred_dataframe is not None: |
163 | 166 | result = self._deferred_dataframe.execute() |
164 | 167 | if isinstance(result, bigframes.series.Series): |
165 | 168 | df = result.to_frame() |
166 | | - else: |
| 169 | + elif isinstance(result, bigframes.dataframe.DataFrame): |
167 | 170 | df = result |
| 171 | + else: |
| 172 | + raise TypeError( |
| 173 | + f"Unexpected result type: {type(result)}" |
| 174 | + ) |
168 | 175 | self._dataframe, _ = df._process_display_df() |
169 | 176 | self._initialize_from_dataframe() |
| 177 | + self.is_deferred_mode = False |
170 | 178 | elif self._dataframe is not None: |
171 | 179 | self._dataframe, _ = self._dataframe._process_display_df() |
172 | 180 | self._initialize_from_dataframe() |
| 181 | + self.is_deferred_mode = False |
173 | 182 | elif not self.is_deferred_mode and self._dataframe is not None: |
174 | 183 | self._initial_load() |
175 | 184 | except Exception as e: |
| 185 | + logger.warning(f"Error in background execution: {e}") |
176 | 186 | self._error_message = str(e) |
177 | 187 | finally: |
178 | | - self.is_deferred_mode = False |
179 | 188 | self.start_execution = False |
180 | 189 |
|
181 | 190 | self._execution_thread = threading.Thread(target=run_execution, daemon=True) |
|
0 commit comments