2
0
mirror of https://github.com/xcat2/confluent.git synced 2024-11-22 09:32:21 +00:00

Change strategy for stale data protection

Rather than assuming a global state, have the generator react to
GeneratorExit and clean itself up.
This commit is contained in:
Jarrod Johnson 2017-02-15 10:58:08 -05:00
parent 2dcdfe58c3
commit f3cfe4ee26

View File

@ -27,8 +27,6 @@ import confluent.tlvdata as tlvdata
SO_PASSCRED = 16
inflight = False
def _parseserver(string):
if ']:' in string:
server, port = string[1:].split(']:')
@ -228,23 +226,19 @@ def send_request(operation, path, server, parameters=None):
:param server: The socket to send data over
:param parameters: Parameters if any to send along with the request
"""
global inflight
if inflight:
# calling code failed to complete a transaction, flush and discard
# their unused data
result = tlvdata.recv(server)
while '_requestdone' not in result:
result = tlvdata.recv(server)
inflight = True
payload = {'operation': operation, 'path': path}
if parameters is not None:
payload['parameters'] = parameters
tlvdata.send(server, payload)
result = tlvdata.recv(server)
while '_requestdone' not in result:
yield result
try:
yield result
except GeneratorExit:
while '_requestdone' not in result:
result = tlvdata.recv(server)
raise
result = tlvdata.recv(server)
inflight = False