Skip to content

Commit 7d7e5a5

Browse files
committed
Retry deleting tempfile
For whatever reason, I get PERMISSION_DENIED errors when unlinking (on Windows) occasionally. Retry the operation to mitigate.
1 parent 8c656ff commit 7d7e5a5

File tree

1 file changed

+26
-1
lines changed

1 file changed

+26
-1
lines changed

linter.py

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from contextlib import contextmanager
22
import os
33
import tempfile
4+
import time
45

56
from SublimeLinter.lint import PythonLinter
67
from SublimeLinter.lint.linter import TransientError
@@ -52,7 +53,31 @@ def _make_temp_file(self, filename, code):
5253
try:
5354
yield temp_filename
5455
finally:
55-
os.remove(temp_filename)
56+
self._retry(
57+
3,
58+
"removing '{}'".format(temp_filename),
59+
lambda: os.unlink(temp_filename)
60+
)
61+
62+
def _retry(self, times, tag, fn):
63+
for i in range(times):
64+
try:
65+
fn()
66+
except Exception:
67+
if i < times - 1:
68+
self.logger.info(
69+
"{} failed: "
70+
"will retry after sleeping for {} second(s)"
71+
.format(tag, 2**i)
72+
)
73+
time.sleep(2**i)
74+
else:
75+
self.logger.warning("{} failed".format(tag))
76+
raise
77+
else:
78+
if i > 0:
79+
self.logger.info("{} succeeded after {} retry".format(tag, i))
80+
break
5681

5782
@property
5883
def plugin_name(self):

0 commit comments

Comments
 (0)