Skip to content

Commit 4a0ae4f

Browse files
Merge pull request #221 from ghjm/framed_message_fix
Fix file buffers so work.py interface can function as intended Reviewed-by: https://github.com/apps/ansible-zuul
2 parents eefe50a + 8faa601 commit 4a0ae4f

2 files changed

Lines changed: 8 additions & 5 deletions

File tree

receptor/messages/framed.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -109,9 +109,8 @@ def __init__(self, fp, length=0, min_chunk=2 ** 12, max_chunk=2 ** 20):
109109
self._max_chunk = max_chunk
110110

111111
@classmethod
112-
def from_temp(cls, dir=None, delete=False):
113-
# return cls(tempfile.NamedTemporaryFile(dir=dir, delete=delete))
114-
return cls(tempfile.SpooledTemporaryFile(dir=dir, max_size=2 ** 12))
112+
def from_temp(cls, dir=None, delete=True):
113+
return cls(tempfile.NamedTemporaryFile(dir=dir, delete=delete))
115114

116115
@classmethod
117116
def from_buffer(cls, buffered_io, dir=None, delete=False):
@@ -120,15 +119,15 @@ def from_buffer(cls, buffered_io, dir=None, delete=False):
120119
return cls(fp=buffered_io, length=buffered_io.getbuffer().nbytes)
121120

122121
@classmethod
123-
def from_data(cls, raw_data, dir=None, delete=False):
122+
def from_data(cls, raw_data, dir=None, delete=True):
124123
if isinstance(raw_data, str):
125124
raw_data = raw_data.encode()
126125
fbb = cls.from_temp(dir=dir, delete=delete)
127126
fbb.write(raw_data)
128127
return fbb
129128

130129
@classmethod
131-
def from_dict(cls, raw_data, dir=None, delete=False):
130+
def from_dict(cls, raw_data, dir=None, delete=True):
132131
try:
133132
d = json.dumps(raw_data).encode("utf-8")
134133
except Exception as e:
@@ -173,6 +172,9 @@ def readall(self):
173172
finally:
174173
self.fp.seek(pos)
175174

175+
def flush(self):
176+
self.fp.flush()
177+
176178
def __len__(self):
177179
return self.length
178180

receptor/work.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ def resolve_payload_input(self, payload_type, payload):
7171
payload.seek(0)
7272
return payload
7373
elif payload_type == FILE_PAYLOAD:
74+
payload.flush()
7475
return payload.name
7576
return payload.readall()
7677

0 commit comments

Comments
 (0)