mirror of
https://github.com/xcat2/confluent.git
synced 2024-11-25 19:10:10 +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:
parent
2dcdfe58c3
commit
f3cfe4ee26
@ -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
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user