fix reflector client: only set completed when server says so

This commit is contained in:
Victor Shyba 2021-05-20 18:53:35 -03:00
parent 352bf69409
commit 1437871d88
2 changed files with 4 additions and 4 deletions

View file

@ -372,9 +372,6 @@ class ManagedStream(ManagedDownloadSource):
protocol.transport.close() protocol.transport.close()
self.uploading_to_reflector = False self.uploading_to_reflector = False
if not self.fully_reflected.is_set():
self.fully_reflected.set()
await self.blob_manager.storage.update_reflected_stream(self.sd_hash, f"{host}:{port}")
return sent return sent
async def update_content_claim(self, claim_info: Optional[typing.Dict] = None): async def update_content_claim(self, claim_info: Optional[typing.Dict] = None):

View file

@ -63,13 +63,16 @@ class TestReflector(AsyncioTestCase):
if partial_needs: if partial_needs:
self.assertFalse(self.stream.is_fully_reflected) self.assertFalse(self.stream.is_fully_reflected)
send_more = await self.stream.upload_to_reflector('127.0.0.1', 5566) send_more = await self.stream.upload_to_reflector('127.0.0.1', 5566)
self.assertGreater(0, len(send_more)) self.assertGreater(len(send_more), 0)
sent.extend(send_more) sent.extend(send_more)
sent.append(self.stream.sd_hash)
self.assertSetEqual( self.assertSetEqual(
set(sent), set(sent),
set(map(lambda b: b.blob_hash, set(map(lambda b: b.blob_hash,
self.stream.descriptor.blobs[:-1] + [self.blob_manager.get_blob(self.stream.sd_hash)])) self.stream.descriptor.blobs[:-1] + [self.blob_manager.get_blob(self.stream.sd_hash)]))
) )
send_more = await self.stream.upload_to_reflector('127.0.0.1', 5566)
self.assertEqual(len(send_more), 0)
self.assertTrue(self.stream.is_fully_reflected) self.assertTrue(self.stream.is_fully_reflected)
server_sd_blob = self.server_blob_manager.get_blob(self.stream.sd_hash) server_sd_blob = self.server_blob_manager.get_blob(self.stream.sd_hash)
self.assertTrue(server_sd_blob.get_is_verified()) self.assertTrue(server_sd_blob.get_is_verified())