Skip to content

Commit 825c234

Browse files
authored
Handle running adb from unwritable directory (#634)
* create class to detach file handler if unable to open * formatting * switch tests to run on only 'gcp' to fix errors during tests
1 parent 1cf034f commit 825c234

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

.github/workflows/pr.yaml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,7 @@ jobs:
99
run_test:
1010

1111
runs-on:
12-
- self-hosted
13-
- deployer
12+
- gcp
1413

1514
steps:
1615

aperturedb/__init__.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,30 @@
4747
os.environ["ADB_LOG_FILE"]) == 0 else os.environ["ADB_LOG_FILE"]
4848

4949
if error_file_name is not None:
50+
# detachable file handler allows program to run from working directory
51+
# without write access; adb is a use case for this.
52+
class DetachableFileHandler(logging.FileHandler):
53+
def __init__(self, file_path, delay=False):
54+
super().__init__(file_path, delay=delay)
55+
56+
def emit(self, record):
57+
try:
58+
super().emit(record)
59+
except PermissionError as pErr:
60+
for h in logger.handlers[:]:
61+
if h == self:
62+
logger.removeHandler(h)
63+
break
64+
logging.warning(
65+
f"Unable to write to {self.baseFilename}, removing file logging")
66+
5067
error_file_tmpl = Template(error_file_name)
5168
template_items = {
5269
# python isodate has ':', not valid in files in windows.
5370
"now": str(datetime.datetime.now().isoformat()).replace(':', ''),
5471
"node": str(platform.node())
5572
}
56-
error_file_handler = logging.FileHandler(error_file_tmpl.safe_substitute(
73+
error_file_handler = DetachableFileHandler(error_file_tmpl.safe_substitute(
5774
**template_items), delay=True)
5875
error_file_handler.setFormatter(formatter)
5976
error_file_handler.setLevel(log_file_level)

0 commit comments

Comments
 (0)