verify streams only after migration

This commit is contained in:
Victor Shyba 2018-05-08 16:49:17 -03:00
parent b3bf193188
commit df735252e5
2 changed files with 14 additions and 12 deletions

View file

@ -244,7 +244,7 @@ class Daemon(AuthJSONRPCServer):
yield self._start_analytics()
yield add_lbry_file_to_sd_identifier(self.sd_identifier)
yield self._setup_stream_identifier()
yield self._setup_lbry_file_manager()
yield self._setup_lbry_file_manager(verify_streams=migrated)
yield self._setup_query_handlers()
yield self._setup_server()
log.info("Starting balance: " + str(self.session.wallet.get_balance()))
@ -512,11 +512,11 @@ class Daemon(AuthJSONRPCServer):
defer.returnValue(migrated)
@defer.inlineCallbacks
def _setup_lbry_file_manager(self):
def _setup_lbry_file_manager(self, verify_streams):
log.info('Starting the file manager')
self.startup_status = STARTUP_STAGES[3]
self.lbry_file_manager = EncryptedFileManager(self.session, self.sd_identifier)
yield self.lbry_file_manager.setup()
yield self.lbry_file_manager.setup(verify_streams)
log.info('Done setting up file manager')
def _start_analytics(self):

View file

@ -42,9 +42,9 @@ class EncryptedFileManager(object):
self.lbry_file_reflector = task.LoopingCall(self.reflect_lbry_files)
@defer.inlineCallbacks
def setup(self):
def setup(self, verify_streams=False):
yield self._add_to_sd_identifier()
yield self._start_lbry_files()
yield self._start_lbry_files(verify_streams)
log.info("Started file manager")
def get_lbry_file_status(self, lbry_file):
@ -97,7 +97,7 @@ class EncryptedFileManager(object):
)
@defer.inlineCallbacks
def _start_lbry_file(self, file_info, payment_rate_manager):
def _start_lbry_file(self, file_info, payment_rate_manager, verify_stream):
lbry_file = self._get_lbry_file(
file_info['row_id'], file_info['stream_hash'], payment_rate_manager, file_info['sd_hash'],
file_info['key'], file_info['stream_name'], file_info['file_name'], file_info['download_directory'],
@ -105,10 +105,12 @@ class EncryptedFileManager(object):
)
yield lbry_file.get_claim_info()
try:
# verify the stream is valid (we might have downloaded an invalid stream
# in the past when the validation check didn't work)
stream_info = yield get_sd_info(self.storage, file_info['stream_hash'], include_blobs=True)
validate_descriptor(stream_info)
# verify if the stream is valid (we might have downloaded an invalid stream
# in the past when the validation check didn't work. This runs after every
# migration to ensure blobs migrated from that past version gets verified)
if verify_stream:
stream_info = yield get_sd_info(self.storage, file_info['stream_hash'], include_blobs=True)
validate_descriptor(stream_info)
except InvalidStreamDescriptorError as err:
log.warning("Stream for descriptor %s is invalid (%s), cleaning it up",
lbry_file.sd_hash, err.message)
@ -126,7 +128,7 @@ class EncryptedFileManager(object):
log.warning("Failed to start %i", file_info.get('rowid'))
@defer.inlineCallbacks
def _start_lbry_files(self):
def _start_lbry_files(self, verify_streams):
files = yield self.session.storage.get_all_lbry_files()
b_prm = self.session.base_payment_rate_manager
payment_rate_manager = NegotiatedPaymentRateManager(b_prm, self.session.blob_tracker)
@ -134,7 +136,7 @@ class EncryptedFileManager(object):
log.info("Starting %i files", len(files))
dl = []
for file_info in files:
dl.append(self._start_lbry_file(file_info, payment_rate_manager))
dl.append(self._start_lbry_file(file_info, payment_rate_manager, verify_streams))
yield defer.DeferredList(dl)