Skip to content

Commit 55eb624

Browse files
authored
Fix interactive environment clean up failure at atexit. (#38526)
* Fix interactive environment clean up failure at atexit. * Fix failed tests. * Formatting.
1 parent 26c6ec7 commit 55eb624

1 file changed

Lines changed: 15 additions & 7 deletions

File tree

sdks/python/apache_beam/runners/interactive/cache_manager.py

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
import base64
2121
import collections
22+
import logging
2223
import os
2324
import tempfile
2425
from urllib.parse import quote
@@ -29,9 +30,12 @@
2930
from apache_beam.io import filesystems
3031
from apache_beam.io import textio
3132
from apache_beam.io import tfrecordio
33+
from apache_beam.options.pipeline_options import PipelineOptions
3234
from apache_beam.testing import test_stream
3335
from apache_beam.transforms import combiners
3436

37+
_LOGGER = logging.getLogger(__name__)
38+
3539

3640
class CacheManager(object):
3741
"""Abstract class for caching PCollections.
@@ -286,13 +290,17 @@ def raw_source(self, *labels):
286290
return self._reader_class(self._glob_path(*labels))
287291

288292
def cleanup(self):
289-
if self._cache_dir.startswith('gs://'):
290-
from apache_beam.io.gcp import gcsfilesystem
291-
from apache_beam.options.pipeline_options import PipelineOptions
292-
fs = gcsfilesystem.GCSFileSystem(PipelineOptions())
293-
fs.delete([self._cache_dir + '/full/'])
294-
elif filesystems.FileSystems.exists(self._cache_dir):
295-
filesystems.FileSystems.delete([self._cache_dir])
293+
try:
294+
if self._cache_dir.startswith('gs://'):
295+
# Import GCP dependencies only when needed.
296+
from apache_beam.io.gcp import gcsfilesystem
297+
fs = gcsfilesystem.GCSFileSystem(PipelineOptions())
298+
fs.delete([self._cache_dir + '/full/'])
299+
elif filesystems.FileSystems.exists(self._cache_dir):
300+
filesystems.FileSystems.delete([self._cache_dir])
301+
except Exception as e:
302+
_LOGGER.warning(
303+
'Failed to clean up cache directory %s: %s', self._cache_dir, e)
296304
self._saved_pcoders = {}
297305

298306
def _glob_path(self, *labels):

0 commit comments

Comments
 (0)