From 0674b482235e18a51eb23354e104bc99fdea4692 Mon Sep 17 00:00:00 2001 From: jobevers Date: Sat, 11 Feb 2017 13:47:45 -0600 Subject: [PATCH 01/22] record traceback in error event --- CHANGELOG.md | 4 ++++ lbrynet/analytics/events.py | 1 + lbrynet/analytics/logging_handler.py | 3 +++ 3 files changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e7b50de93..3d3adc461 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,10 @@ at anytime. ### Changed * Remove unused upload_allowed option +### Fixed + * add misssing traceback to logging + + ## [0.8.3] - 2017-02-15 ### Fixed * Get lbry files with pending claims diff --git a/lbrynet/analytics/events.py b/lbrynet/analytics/events.py index a15c5c50b..2c4eb498d 100644 --- a/lbrynet/analytics/events.py +++ b/lbrynet/analytics/events.py @@ -67,6 +67,7 @@ class Events(object): 'module': log_record.module, 'lineno': log_record.lineno, 'name': log_record.name, + 'traceback': log_record.exc_text, } return self._event('Error', properties) diff --git a/lbrynet/analytics/logging_handler.py b/lbrynet/analytics/logging_handler.py index 14dbf2e28..e7bdb4ac9 100644 --- a/lbrynet/analytics/logging_handler.py +++ b/lbrynet/analytics/logging_handler.py @@ -8,4 +8,7 @@ class Handler(logging.Handler): logging.Handler.__init__(self, level) def emit(self, record): + # We need to call format to ensure that record.message and + # record.exc_text attributes are populated + self.format(record) self.manager.send_error(record) From 23f2a423720f53c527113d3690d813922bf90858 Mon Sep 17 00:00:00 2001 From: jobevers Date: Fri, 17 Feb 2017 14:37:21 -0600 Subject: [PATCH 02/22] =?UTF-8?q?Bump=20version:=200.8.3=20=E2=86=92=200.8?= =?UTF-8?q?.4rc0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .bumpversion.cfg | 2 +- CHANGELOG.md | 2 ++ lbrynet/__init__.py | 2 +- packaging/ubuntu/lbry.desktop | 2 +- 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 2ebd2237e..388956a1a 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.8.3 +current_version = 0.8.4rc0 commit = True tag = True parse = (?P\d+)\.(?P\d+)\.(?P\d+)((?P[a-z]+)(?P\d+))? diff --git a/CHANGELOG.md b/CHANGELOG.md index 3d3adc461..73b95feb4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,8 @@ can and probably will change functionality and break backwards compatability at anytime. ## [Unreleased] + +## [0.8.4rc0] - 2017-02-17 ### Changed * Remove unused upload_allowed option diff --git a/lbrynet/__init__.py b/lbrynet/__init__.py index ff1864805..4240b82c7 100644 --- a/lbrynet/__init__.py +++ b/lbrynet/__init__.py @@ -1,6 +1,6 @@ import logging -__version__ = "0.8.3" +__version__ = "0.8.4rc0" version = tuple(__version__.split('.')) logging.getLogger(__name__).addHandler(logging.NullHandler()) diff --git a/packaging/ubuntu/lbry.desktop b/packaging/ubuntu/lbry.desktop index b91a27951..23cbecc07 100644 --- a/packaging/ubuntu/lbry.desktop +++ b/packaging/ubuntu/lbry.desktop @@ -1,5 +1,5 @@ [Desktop Entry] -Version=0.8.3 +Version=0.8.4rc0 Name=LBRY Comment=The world's first user-owned content marketplace Icon=lbry From 5bf5a7d0b1f5670d8f97fd75b82f681523a06c5a Mon Sep 17 00:00:00 2001 From: jobevers Date: Fri, 17 Feb 2017 14:39:37 -0600 Subject: [PATCH 03/22] =?UTF-8?q?Bump=20version:=200.8.4rc0=20=E2=86=92=20?= =?UTF-8?q?0.8.4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .bumpversion.cfg | 2 +- CHANGELOG.md | 2 ++ lbrynet/__init__.py | 2 +- packaging/ubuntu/lbry.desktop | 2 +- 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 388956a1a..365679223 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.8.4rc0 +current_version = 0.8.4 commit = True tag = True parse = (?P\d+)\.(?P\d+)\.(?P\d+)((?P[a-z]+)(?P\d+))? diff --git a/CHANGELOG.md b/CHANGELOG.md index 73b95feb4..10eaef63a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,8 @@ at anytime. ## [Unreleased] +## [0.8.4] - 2017-02-17 + ## [0.8.4rc0] - 2017-02-17 ### Changed * Remove unused upload_allowed option diff --git a/lbrynet/__init__.py b/lbrynet/__init__.py index 4240b82c7..d2be7762e 100644 --- a/lbrynet/__init__.py +++ b/lbrynet/__init__.py @@ -1,6 +1,6 @@ import logging -__version__ = "0.8.4rc0" +__version__ = "0.8.4" version = tuple(__version__.split('.')) logging.getLogger(__name__).addHandler(logging.NullHandler()) diff --git a/packaging/ubuntu/lbry.desktop b/packaging/ubuntu/lbry.desktop index 23cbecc07..57acdc14b 100644 --- a/packaging/ubuntu/lbry.desktop +++ b/packaging/ubuntu/lbry.desktop @@ -1,5 +1,5 @@ [Desktop Entry] -Version=0.8.4rc0 +Version=0.8.4 Name=LBRY Comment=The world's first user-owned content marketplace Icon=lbry From ab46a339137fa7e2f07a864f66223fb2f0cab1c7 Mon Sep 17 00:00:00 2001 From: Jack Robison Date: Sat, 18 Feb 2017 14:07:07 -0500 Subject: [PATCH 04/22] fix missing download button --- lbrynet/lbrynet_daemon/Daemon.py | 34 +++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/lbrynet/lbrynet_daemon/Daemon.py b/lbrynet/lbrynet_daemon/Daemon.py index 2589d3887..c6a375e7e 100644 --- a/lbrynet/lbrynet_daemon/Daemon.py +++ b/lbrynet/lbrynet_daemon/Daemon.py @@ -1058,7 +1058,7 @@ class Daemon(AuthJSONRPCServer): defer.returnValue(lbry_file) except Exception as err: # TODO: do something with the error, don't return None when a file isn't found - defer.returnValue(None) + defer.returnValue(False) def _get_lbry_files(self): def safe_get(sd_hash): @@ -1466,22 +1466,34 @@ class Daemon(AuthJSONRPCServer): def jsonrpc_file_get(self, **kwargs): """ - Get a file + Get a file, if no matching file exists returns False Args: 'name': get file by lbry uri, 'sd_hash': get file by the hash in the name claim, 'file_name': get file by its name in the downloads folder, Returns: - 'completed': bool - 'file_name': string - 'key': hex string - 'points_paid': float - 'stopped': bool - 'stream_hash': base 58 string - 'stream_name': string - 'suggested_file_name': string - 'sd_hash': string + 'completed': bool, + 'file_name': str, + 'download_directory': str, + 'points_paid': float, + 'stopped': bool, + 'stream_hash': str (hex), + 'stream_name': str, + 'suggested_file_name': str, + 'sd_hash': str (hex), + 'lbry_uri': str, + 'txid': str (b58), + 'claim_id': str (b58), + 'download_path': str, + 'mime_type': str, + 'key': str (hex), + 'total_bytes': int, + 'written_bytes': int, + 'code': str, + 'message': str + 'metadata': Metadata dict if claim is valid, otherwise status str + } """ d = self._get_deferred_for_lbry_file(kwargs) d.addCallback(lambda r: self._render_response(r)) From 59750843d405fa04c072d3a742cfb36ffaa41a96 Mon Sep 17 00:00:00 2001 From: Jack Robison Date: Sat, 18 Feb 2017 14:16:48 -0500 Subject: [PATCH 05/22] update changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 10eaef63a..f9af44b9a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,8 @@ can and probably will change functionality and break backwards compatability at anytime. ## [Unreleased] +### Fixed + * Fix result expected by ui from file_get for missing files ## [0.8.4] - 2017-02-17 From d2e1eeb61e8e270d903936eb9c153a35ba6eed66 Mon Sep 17 00:00:00 2001 From: Jack Robison Date: Sat, 18 Feb 2017 14:26:57 -0500 Subject: [PATCH 06/22] =?UTF-8?q?Bump=20version:=200.8.4=20=E2=86=92=200.8?= =?UTF-8?q?.5rc0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .bumpversion.cfg | 3 +-- CHANGELOG.md | 1 + lbrynet/__init__.py | 2 +- packaging/ubuntu/lbry.desktop | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 365679223..0378da0cd 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.8.4 +current_version = 0.8.5rc0 commit = True tag = True parse = (?P\d+)\.(?P\d+)\.(?P\d+)((?P[a-z]+)(?P\d+))? @@ -20,6 +20,5 @@ values = [bumpversion:file:CHANGELOG.md] search = [Unreleased] replace = [Unreleased] - \#\# [{new_version}] - {now:%Y-%m-%d} diff --git a/CHANGELOG.md b/CHANGELOG.md index f9af44b9a..961466f9e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ can and probably will change functionality and break backwards compatability at anytime. ## [Unreleased] +\#\# [0.8.5rc0] - 2017-02-18 ### Fixed * Fix result expected by ui from file_get for missing files diff --git a/lbrynet/__init__.py b/lbrynet/__init__.py index d2be7762e..2988b0aa5 100644 --- a/lbrynet/__init__.py +++ b/lbrynet/__init__.py @@ -1,6 +1,6 @@ import logging -__version__ = "0.8.4" +__version__ = "0.8.5rc0" version = tuple(__version__.split('.')) logging.getLogger(__name__).addHandler(logging.NullHandler()) diff --git a/packaging/ubuntu/lbry.desktop b/packaging/ubuntu/lbry.desktop index 57acdc14b..4742b3ef1 100644 --- a/packaging/ubuntu/lbry.desktop +++ b/packaging/ubuntu/lbry.desktop @@ -1,5 +1,5 @@ [Desktop Entry] -Version=0.8.4 +Version=0.8.5rc0 Name=LBRY Comment=The world's first user-owned content marketplace Icon=lbry From 29ff39fdc92dbb4bfddc5b2266ba282871251eb6 Mon Sep 17 00:00:00 2001 From: Jack Robison Date: Sat, 18 Feb 2017 14:50:39 -0500 Subject: [PATCH 07/22] =?UTF-8?q?Bump=20version:=200.8.5rc0=20=E2=86=92=20?= =?UTF-8?q?0.8.5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .bumpversion.cfg | 2 +- CHANGELOG.md | 1 + lbrynet/__init__.py | 2 +- packaging/ubuntu/lbry.desktop | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 0378da0cd..1ae3372a6 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.8.5rc0 +current_version = 0.8.5 commit = True tag = True parse = (?P\d+)\.(?P\d+)\.(?P\d+)((?P[a-z]+)(?P\d+))? diff --git a/CHANGELOG.md b/CHANGELOG.md index 961466f9e..5079cb3e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ can and probably will change functionality and break backwards compatability at anytime. ## [Unreleased] +\#\# [0.8.5] - 2017-02-18 \#\# [0.8.5rc0] - 2017-02-18 ### Fixed * Fix result expected by ui from file_get for missing files diff --git a/lbrynet/__init__.py b/lbrynet/__init__.py index 2988b0aa5..fe820169e 100644 --- a/lbrynet/__init__.py +++ b/lbrynet/__init__.py @@ -1,6 +1,6 @@ import logging -__version__ = "0.8.5rc0" +__version__ = "0.8.5" version = tuple(__version__.split('.')) logging.getLogger(__name__).addHandler(logging.NullHandler()) diff --git a/packaging/ubuntu/lbry.desktop b/packaging/ubuntu/lbry.desktop index 4742b3ef1..311bb94b8 100644 --- a/packaging/ubuntu/lbry.desktop +++ b/packaging/ubuntu/lbry.desktop @@ -1,5 +1,5 @@ [Desktop Entry] -Version=0.8.5rc0 +Version=0.8.5 Name=LBRY Comment=The world's first user-owned content marketplace Icon=lbry From 76b4b1e939ad1565b933fd9294d0e2479c046a70 Mon Sep 17 00:00:00 2001 From: Jack Robison Date: Sat, 18 Feb 2017 14:59:40 -0500 Subject: [PATCH 08/22] Update CHANGELOG.md --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5079cb3e6..81cc210ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,8 +8,8 @@ can and probably will change functionality and break backwards compatability at anytime. ## [Unreleased] -\#\# [0.8.5] - 2017-02-18 -\#\# [0.8.5rc0] - 2017-02-18 +## [0.8.5] - 2017-02-18 +## [0.8.5rc0] - 2017-02-18 ### Fixed * Fix result expected by ui from file_get for missing files From c6e614ebec109f7fcdb061f5e44a4fd8c897417b Mon Sep 17 00:00:00 2001 From: Jack Robison Date: Sun, 19 Feb 2017 19:17:25 -0500 Subject: [PATCH 09/22] fix get() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -get_file_by_sd_hash raises NoSuchSDHash if there is no file, which otherwise doesn’t get trapped -remove unnecessary try/except around _DownloadNameHelper.__init__ -don’t delete self.waiting_on[name] --- lbrynet/lbrynet_daemon/Daemon.py | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/lbrynet/lbrynet_daemon/Daemon.py b/lbrynet/lbrynet_daemon/Daemon.py index c6a375e7e..e046725c0 100644 --- a/lbrynet/lbrynet_daemon/Daemon.py +++ b/lbrynet/lbrynet_daemon/Daemon.py @@ -820,17 +820,13 @@ class Daemon(AuthJSONRPCServer): """ timeout = timeout if timeout is not None else conf.settings['download_timeout'] - try: - helper = _DownloadNameHelper(self, name, timeout, download_directory, file_name, - wait_for_write) - except Exception as err: - log.exception(err) - raise err + helper = _DownloadNameHelper(self, name, timeout, download_directory, file_name, + wait_for_write) if not stream_info: self.waiting_on[name] = True stream_info = yield self._resolve_name(name) - del self.waiting_on[name] + lbry_file = yield helper.setup_stream(stream_info) sd_hash, file_path = yield helper.wait_or_get_stream(stream_info, lbry_file) defer.returnValue((sd_hash, file_path)) @@ -2562,10 +2558,7 @@ def get_version_from_tag(tag): def get_sd_hash(stream_info): if not stream_info: return None - try: - return stream_info['sources']['lbry_sd_hash'] - except KeyError: - return stream_info.get('stream_hash') + return stream_info['sources']['lbry_sd_hash'] class _DownloadNameHelper(object): @@ -2584,7 +2577,7 @@ class _DownloadNameHelper(object): @defer.inlineCallbacks def setup_stream(self, stream_info): sd_hash = get_sd_hash(stream_info) - lbry_file = yield self.daemon._get_lbry_file_by_sd_hash(sd_hash) + lbry_file = yield self.daemon._get_lbry_file(FileID.SD_HASH, sd_hash) if self._does_lbry_file_exists(lbry_file): defer.returnValue(lbry_file) else: From e2f97ba0b4e67e6a008c19b05473f759fbdc94eb Mon Sep 17 00:00:00 2001 From: Jack Robison Date: Sun, 19 Feb 2017 19:22:21 -0500 Subject: [PATCH 10/22] get file by stream hash --- lbrynet/lbrynet_daemon/Daemon.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/lbrynet/lbrynet_daemon/Daemon.py b/lbrynet/lbrynet_daemon/Daemon.py index e046725c0..df88aaa29 100644 --- a/lbrynet/lbrynet_daemon/Daemon.py +++ b/lbrynet/lbrynet_daemon/Daemon.py @@ -108,6 +108,7 @@ class FileID: NAME = 'name' SD_HASH = 'sd_hash' FILE_NAME = 'file_name' + STREAM_HASH = 'stream_hash' # TODO add login credentials in a conf file @@ -1026,6 +1027,12 @@ class Daemon(AuthJSONRPCServer): return lbry_file raise Exception("File %s not found" % file_name) + def _find_lbry_file_by_stream_hash(self, stream_hash): + for lbry_file in self.lbry_file_manager.lbry_files: + if lbry_file.stream_hash == stream_hash: + return lbry_file + raise NoSuchStreamHash(stream_hash) + @defer.inlineCallbacks def _get_lbry_file_by_uri(self, name): try: @@ -1046,6 +1053,11 @@ class Daemon(AuthJSONRPCServer): lbry_file = yield self._get_lbry_file_by_file_name(file_name) defer.returnValue(lbry_file) + @defer.inlineCallbacks + def _get_lbry_file_by_stream_hash(self, stream_hash): + lbry_file = yield self._find_lbry_file_by_stream_hash(stream_hash) + defer.returnValue(lbry_file) + @defer.inlineCallbacks def _get_lbry_file(self, search_by, val, return_json=True): helper = _GetFileHelper(self, search_by, val, return_json) @@ -1468,6 +1480,7 @@ class Daemon(AuthJSONRPCServer): 'name': get file by lbry uri, 'sd_hash': get file by the hash in the name claim, 'file_name': get file by its name in the downloads folder, + 'stream_hash': get file by its stream hash Returns: 'completed': bool, 'file_name': str, @@ -1578,6 +1591,7 @@ class Daemon(AuthJSONRPCServer): 'stream_hash': hex string 'path': path of download """ + timeout = timeout if timeout is not None else self.download_timeout download_directory = download_directory or self.download_directory sd_hash = get_sd_hash(stream_info) @@ -2740,6 +2754,8 @@ class _GetFileHelper(object): return self.daemon._get_lbry_file_by_sd_hash(self.val) elif self.search_by == FileID.FILE_NAME: return self.daemon._get_lbry_file_by_file_name(self.val) + elif self.search_by == FileID.STREAM_HASH: + return self.daemon._get_lbry_file_by_stream_hash(self.val) raise Exception('{} is not a valid search operation'.format(self.search_by)) def _get_json(self, lbry_file): @@ -2873,7 +2889,7 @@ def report_bug_to_slack(message, installation_id, platform_name, app_version): def get_lbry_file_search_value(search_fields): - for searchtype in (FileID.SD_HASH, FileID.NAME, FileID.FILE_NAME): + for searchtype in (FileID.SD_HASH, FileID.NAME, FileID.FILE_NAME, FileID.STREAM_HASH): value = search_fields.get(searchtype) if value: return searchtype, value From d0b64ef2557afa5a92907cac4dbb955880c59add Mon Sep 17 00:00:00 2001 From: Jack Robison Date: Sun, 19 Feb 2017 19:26:48 -0500 Subject: [PATCH 11/22] don't return blob timeout error from get_availability --- lbrynet/lbrynet_daemon/Daemon.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lbrynet/lbrynet_daemon/Daemon.py b/lbrynet/lbrynet_daemon/Daemon.py index df88aaa29..1ff3009b3 100644 --- a/lbrynet/lbrynet_daemon/Daemon.py +++ b/lbrynet/lbrynet_daemon/Daemon.py @@ -2508,7 +2508,11 @@ class Daemon(AuthJSONRPCServer): blob_hashes = [blob.blob_hash for blob in blobs] if need_sd_blob: # we don't want to use self._download_descriptor here because it would create a stream - sd_blob = yield self._download_blob(sd_hash, timeout=sd_timeout) + try: + sd_blob = yield self._download_blob(sd_hash, timeout=sd_timeout) + except Exception as err: + response = yield self._render_response(0.0) + defer.returnValue(response) decoded = read_sd_blob(sd_blob) blob_hashes = [blob.get("blob_hash") for blob in decoded['blobs'] if blob.get("blob_hash")] From b18679af536d30310fc9c2e36dce34ab7eff209a Mon Sep 17 00:00:00 2001 From: Jack Robison Date: Sun, 19 Feb 2017 19:27:01 -0500 Subject: [PATCH 12/22] debug log --- lbrynet/core/client/DHTPeerFinder.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lbrynet/core/client/DHTPeerFinder.py b/lbrynet/core/client/DHTPeerFinder.py index 7970a194a..19b3ac39a 100644 --- a/lbrynet/core/client/DHTPeerFinder.py +++ b/lbrynet/core/client/DHTPeerFinder.py @@ -40,7 +40,7 @@ class DHTPeerFinder(object): def find_peers_for_blob(self, blob_hash, timeout=None): def _trigger_timeout(): if not finished_deferred.called: - log.warning("Peer search for %s timed out", short_hash(blob_hash)) + log.debug("Peer search for %s timed out", short_hash(blob_hash)) finished_deferred.cancel() bin_hash = binascii.unhexlify(blob_hash) From 55f4e2939ad687443ca4f1295b045d75bc05cdbf Mon Sep 17 00:00:00 2001 From: Jack Robison Date: Sun, 19 Feb 2017 19:32:51 -0500 Subject: [PATCH 13/22] update changelog --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 81cc210ed..b34e94307 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,11 +8,20 @@ can and probably will change functionality and break backwards compatability at anytime. ## [Unreleased] +### Changed + * Add `file_get` by stream hash +### + * Fix unhandled error in `get` + * Fix sd blob timeout handling in `get_availability`, return 0.0 + + ## [0.8.5] - 2017-02-18 + ## [0.8.5rc0] - 2017-02-18 ### Fixed * Fix result expected by ui from file_get for missing files + ## [0.8.4] - 2017-02-17 ## [0.8.4rc0] - 2017-02-17 From 450ac7aa577bd33bf421e4420b8adf3c64366a81 Mon Sep 17 00:00:00 2001 From: Jack Robison Date: Sun, 19 Feb 2017 19:50:30 -0500 Subject: [PATCH 14/22] =?UTF-8?q?Bump=20version:=200.8.5=20=E2=86=92=200.8?= =?UTF-8?q?.6rc0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .bumpversion.cfg | 2 +- CHANGELOG.md | 1 + lbrynet/__init__.py | 2 +- packaging/ubuntu/lbry.desktop | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 1ae3372a6..7a79b1831 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.8.5 +current_version = 0.8.6rc0 commit = True tag = True parse = (?P\d+)\.(?P\d+)\.(?P\d+)((?P[a-z]+)(?P\d+))? diff --git a/CHANGELOG.md b/CHANGELOG.md index b34e94307..43162e2b2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ can and probably will change functionality and break backwards compatability at anytime. ## [Unreleased] +\#\# [0.8.6rc0] - 2017-02-19 ### Changed * Add `file_get` by stream hash ### diff --git a/lbrynet/__init__.py b/lbrynet/__init__.py index fe820169e..b41e17270 100644 --- a/lbrynet/__init__.py +++ b/lbrynet/__init__.py @@ -1,6 +1,6 @@ import logging -__version__ = "0.8.5" +__version__ = "0.8.6rc0" version = tuple(__version__.split('.')) logging.getLogger(__name__).addHandler(logging.NullHandler()) diff --git a/packaging/ubuntu/lbry.desktop b/packaging/ubuntu/lbry.desktop index 311bb94b8..ef4f4b46c 100644 --- a/packaging/ubuntu/lbry.desktop +++ b/packaging/ubuntu/lbry.desktop @@ -1,5 +1,5 @@ [Desktop Entry] -Version=0.8.5 +Version=0.8.6rc0 Name=LBRY Comment=The world's first user-owned content marketplace Icon=lbry From 37b2297fb7856ace2b3aab71a1ebfa3bd5603976 Mon Sep 17 00:00:00 2001 From: Jack Robison Date: Sun, 19 Feb 2017 19:50:41 -0500 Subject: [PATCH 15/22] =?UTF-8?q?Bump=20version:=200.8.6rc0=20=E2=86=92=20?= =?UTF-8?q?0.8.6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .bumpversion.cfg | 2 +- CHANGELOG.md | 1 + lbrynet/__init__.py | 2 +- packaging/ubuntu/lbry.desktop | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 7a79b1831..0693a5f94 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.8.6rc0 +current_version = 0.8.6 commit = True tag = True parse = (?P\d+)\.(?P\d+)\.(?P\d+)((?P[a-z]+)(?P\d+))? diff --git a/CHANGELOG.md b/CHANGELOG.md index 43162e2b2..35182d916 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ can and probably will change functionality and break backwards compatability at anytime. ## [Unreleased] +\#\# [0.8.6] - 2017-02-19 \#\# [0.8.6rc0] - 2017-02-19 ### Changed * Add `file_get` by stream hash diff --git a/lbrynet/__init__.py b/lbrynet/__init__.py index b41e17270..67fa5618e 100644 --- a/lbrynet/__init__.py +++ b/lbrynet/__init__.py @@ -1,6 +1,6 @@ import logging -__version__ = "0.8.6rc0" +__version__ = "0.8.6" version = tuple(__version__.split('.')) logging.getLogger(__name__).addHandler(logging.NullHandler()) diff --git a/packaging/ubuntu/lbry.desktop b/packaging/ubuntu/lbry.desktop index ef4f4b46c..5431b0ed5 100644 --- a/packaging/ubuntu/lbry.desktop +++ b/packaging/ubuntu/lbry.desktop @@ -1,5 +1,5 @@ [Desktop Entry] -Version=0.8.6rc0 +Version=0.8.6 Name=LBRY Comment=The world's first user-owned content marketplace Icon=lbry From c85226d5a67921a11cf7bca5317f09df598402cb Mon Sep 17 00:00:00 2001 From: Alex Grintsvayg Date: Mon, 20 Feb 2017 00:21:13 -0500 Subject: [PATCH 16/22] stop showing deprecated commands in cli help --- lbrynet/lbrynet_daemon/Daemon.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lbrynet/lbrynet_daemon/Daemon.py b/lbrynet/lbrynet_daemon/Daemon.py index 1ff3009b3..c65465005 100644 --- a/lbrynet/lbrynet_daemon/Daemon.py +++ b/lbrynet/lbrynet_daemon/Daemon.py @@ -1397,7 +1397,10 @@ class Daemon(AuthJSONRPCServer): Returns: list """ - return self._render_response(sorted(self.callable_methods.keys())) + return self._render_response(sorted( + [command for command in self.callable_methods.keys() + if 'DEPRECATED' not in getattr(self, "jsonrpc_" + command).__doc__] + )) def jsonrpc_get_balance(self): """ From 5737d26ffeb068ca3a8ae08f344020df35fc7f82 Mon Sep 17 00:00:00 2001 From: Kay Kurokawa Date: Thu, 16 Feb 2017 13:48:21 -0500 Subject: [PATCH 17/22] dummy hash announcer requires hash_queue_size() function --- lbrynet/core/HashAnnouncer.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lbrynet/core/HashAnnouncer.py b/lbrynet/core/HashAnnouncer.py index 841f685b6..5453eed15 100644 --- a/lbrynet/core/HashAnnouncer.py +++ b/lbrynet/core/HashAnnouncer.py @@ -11,5 +11,8 @@ class DummyHashAnnouncer(object): def add_supplier(self, *args): pass + def hash_queue_size(self): + return 0 + def immediate_announce(self, *args): pass From 7e2fad23971b55f901fe73bbb1569878223b8f42 Mon Sep 17 00:00:00 2001 From: Kay Kurokawa Date: Thu, 16 Feb 2017 13:48:21 -0500 Subject: [PATCH 18/22] dummy hash announcer requires hash_queue_size() function --- lbrynet/core/HashAnnouncer.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lbrynet/core/HashAnnouncer.py b/lbrynet/core/HashAnnouncer.py index 841f685b6..5453eed15 100644 --- a/lbrynet/core/HashAnnouncer.py +++ b/lbrynet/core/HashAnnouncer.py @@ -11,5 +11,8 @@ class DummyHashAnnouncer(object): def add_supplier(self, *args): pass + def hash_queue_size(self): + return 0 + def immediate_announce(self, *args): pass From 30c7559d3a558b8a84311cc3ec3b5548154512ac Mon Sep 17 00:00:00 2001 From: Kay Kurokawa Date: Thu, 9 Feb 2017 11:22:23 -0500 Subject: [PATCH 19/22] adding reactor.callLater as a utils function --- CHANGELOG.md | 1 + lbrynet/core/utils.py | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 35182d916..65fb03666 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ at anytime. \#\# [0.8.6rc0] - 2017-02-19 ### Changed * Add `file_get` by stream hash + * Add utils.call_later to replace reactor.callLater ### * Fix unhandled error in `get` * Fix sd blob timeout handling in `get_availability`, return 0.0 diff --git a/lbrynet/core/utils.py b/lbrynet/core/utils.py index 76d542b36..a581ebd15 100644 --- a/lbrynet/core/utils.py +++ b/lbrynet/core/utils.py @@ -45,6 +45,13 @@ def datetime_obj(*args, **kwargs): return datetime.datetime(*args, **kwargs) +def call_later(delay, func, *args, **kwargs): + # Import here to ensure that it gets called after installing a reator + # see: http://twistedmatrix.com/documents/current/core/howto/choosing-reactor.html + from twisted.internet import reactor + return reactor.callLater(delay, func, *args, **kwargs) + + def generate_id(num=None): h = get_lbry_hash_obj() if num is not None: From c27fe7af31ec95c46965b38036fe7aee9eb0effc Mon Sep 17 00:00:00 2001 From: Kay Kurokawa Date: Thu, 16 Feb 2017 16:25:57 -0500 Subject: [PATCH 20/22] use utils.call_later in ConnectionManager --- lbrynet/core/client/ConnectionManager.py | 7 +++---- tests/unit/core/client/test_ConnectionManager.py | 8 +++++--- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/lbrynet/core/client/ConnectionManager.py b/lbrynet/core/client/ConnectionManager.py index bb06a645b..2bbce9164 100644 --- a/lbrynet/core/client/ConnectionManager.py +++ b/lbrynet/core/client/ConnectionManager.py @@ -5,7 +5,7 @@ from lbrynet import interfaces from lbrynet import conf from lbrynet.core.client.ClientProtocol import ClientProtocolFactory from lbrynet.core.Error import InsufficientFundsError - +from lbrynet.core import utils log = logging.getLogger(__name__) @@ -19,7 +19,6 @@ class PeerConnectionHandler(object): class ConnectionManager(object): implements(interfaces.IConnectionManager) - callLater = reactor.callLater MANAGE_CALL_INTERVAL_SEC = 1 def __init__(self, downloader, rate_limiter, @@ -54,7 +53,7 @@ class ConnectionManager(object): def start(self): log.debug("%s starting", self._get_log_name()) self._start() - self._next_manage_call = self.callLater(0, self.manage) + self._next_manage_call = utils.call_later(0, self.manage) return defer.succeed(True) @@ -156,7 +155,7 @@ class ConnectionManager(object): self._manage_deferred.callback(None) self._manage_deferred = None if not self.stopped and schedule_next_call: - self._next_manage_call = self.callLater(self.MANAGE_CALL_INTERVAL_SEC, self.manage) + self._next_manage_call = utils.call_later(self.MANAGE_CALL_INTERVAL_SEC, self.manage) def _rank_request_creator_connections(self): """Returns an ordered list of our request creators, ranked according diff --git a/tests/unit/core/client/test_ConnectionManager.py b/tests/unit/core/client/test_ConnectionManager.py index 0aee113d3..81d69429e 100644 --- a/tests/unit/core/client/test_ConnectionManager.py +++ b/tests/unit/core/client/test_ConnectionManager.py @@ -3,7 +3,7 @@ import time import logging from lbrynet.core import log_support -from lbrynet.core.client.ConnectionManager import ConnectionManager +#from lbrynet.core.client.ConnectionManager import ConnectionManager from lbrynet.core.client.ClientRequest import ClientRequest from lbrynet.core.server.ServerProtocol import ServerProtocol from lbrynet.core.RateLimiter import RateLimiter @@ -16,6 +16,7 @@ from twisted.internet import defer, reactor, task from twisted.internet.task import deferLater from twisted.internet.protocol import Protocol, ServerFactory from lbrynet import conf +from lbrynet.core import utils from lbrynet.interfaces import IQueryHandlerFactory, IQueryHandler, IRequestCreator from zope.interface import implements @@ -122,11 +123,12 @@ class TestIntegrationConnectionManager(unittest.TestCase): self.downloader = MocDownloader() self.rate_limiter = RateLimiter() self.primary_request_creator = MocRequestCreator([self.TEST_PEER]) + self.clock = task.Clock() + utils.call_later = self.clock.callLater + from lbrynet.core.client.ConnectionManager import ConnectionManager self.connection_manager = ConnectionManager(self.downloader, self.rate_limiter, [self.primary_request_creator], []) - self.clock = task.Clock() - self.connection_manager.callLater = self.clock.callLater self.connection_manager._start() self.server_port = None From 3522f9af7d511c12f90f29c4219fccff892993e3 Mon Sep 17 00:00:00 2001 From: Kay Kurokawa Date: Thu, 16 Feb 2017 16:26:20 -0500 Subject: [PATCH 21/22] use utils.call_later in DHTHash Announcer --- lbrynet/core/server/DHTHashAnnouncer.py | 9 ++++----- tests/unit/core/server/test_DHTHashAnnouncer.py | 7 +++---- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/lbrynet/core/server/DHTHashAnnouncer.py b/lbrynet/core/server/DHTHashAnnouncer.py index a68a97d0f..69e5123aa 100644 --- a/lbrynet/core/server/DHTHashAnnouncer.py +++ b/lbrynet/core/server/DHTHashAnnouncer.py @@ -3,14 +3,13 @@ import collections import logging import time -from twisted.internet import defer, reactor - +from twisted.internet import defer +from lbrynet.core import utils log = logging.getLogger(__name__) class DHTHashAnnouncer(object): - callLater = reactor.callLater ANNOUNCE_CHECK_INTERVAL = 60 CONCURRENT_ANNOUNCERS = 5 @@ -26,7 +25,7 @@ class DHTHashAnnouncer(object): def run_manage_loop(self): if self.peer_port is not None: self._announce_available_hashes() - self.next_manage_call = self.callLater(self.ANNOUNCE_CHECK_INTERVAL, self.run_manage_loop) + self.next_manage_call = utils.call_later(self.ANNOUNCE_CHECK_INTERVAL, self.run_manage_loop) def stop(self): log.info("Stopping %s", self) @@ -79,7 +78,7 @@ class DHTHashAnnouncer(object): log.debug('Announcing blob %s to dht', h) d = self.dht_node.announceHaveBlob(binascii.unhexlify(h), self.peer_port) d.chainDeferred(announce_deferred) - d.addBoth(lambda _: self.callLater(0, announce)) + d.addBoth(lambda _: utils.call_later(0, announce)) else: self._concurrent_announcers -= 1 diff --git a/tests/unit/core/server/test_DHTHashAnnouncer.py b/tests/unit/core/server/test_DHTHashAnnouncer.py index c6bb05967..fdeea9664 100644 --- a/tests/unit/core/server/test_DHTHashAnnouncer.py +++ b/tests/unit/core/server/test_DHTHashAnnouncer.py @@ -2,9 +2,7 @@ import os import binascii from twisted.trial import unittest from twisted.internet import defer,task -from lbrynet.core.server.DHTHashAnnouncer import DHTHashAnnouncer,DHTHashSupplier -from lbrynet.core.utils import random_string -from lbrynet.core import log_support +from lbrynet.core import log_support, utils class MocDHTNode(object): @@ -35,8 +33,9 @@ class DHTHashAnnouncerTest(unittest.TestCase): self.blobs_to_announce.append(binascii.b2a_hex(os.urandom(32))) self.clock = task.Clock() self.dht_node = MocDHTNode() + utils.call_later = self.clock.callLater + from lbrynet.core.server.DHTHashAnnouncer import DHTHashAnnouncer,DHTHashSupplier self.announcer = DHTHashAnnouncer(self.dht_node, peer_port=3333) - self.announcer.callLater = self.clock.callLater self.supplier = MocSupplier(self.blobs_to_announce) self.announcer.add_supplier(self.supplier) From 847a79f526eea0e6711cf1a0a16f3a48691949cf Mon Sep 17 00:00:00 2001 From: jobevers Date: Mon, 20 Feb 2017 21:37:50 -0600 Subject: [PATCH 22/22] use union merge on CHANGELOG.md http://krlmlr.github.io/using-gitattributes-to-avoid-merge-conflicts/ --- .gitattributes | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..ef9566b29 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +/CHANGELOG.md merge=union \ No newline at end of file