Merge branch 'master' into no-more-upload-allowed

This commit is contained in:
Jack Robison 2017-02-15 22:39:26 -05:00 committed by GitHub
commit 80dd02483e
7 changed files with 40 additions and 27 deletions

View file

@ -1,5 +1,5 @@
[bumpversion] [bumpversion]
current_version = 0.8.3rc3 current_version = 0.8.3
commit = True commit = True
tag = True tag = True
parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)((?P<release>[a-z]+)(?P<candidate>\d+))? parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)((?P<release>[a-z]+)(?P<candidate>\d+))?

View file

@ -11,9 +11,10 @@ at anytime.
### Changed ### Changed
* Remove unused upload_allowed option * Remove unused upload_allowed option
## [0.8.3] - 2017-02-15
### Fixed ### Fixed
* Add better logging to help track down [#478](https://github.com/lbryio/lbry/issues/478) * Add better logging to help track down [#478](https://github.com/lbryio/lbry/issues/478)
* Catch UnknownNameErrors when resolving a name. [#479](https://github.com/lbryio/lbry/issues/479)
## [0.8.3rc3] - 2017-02-14 ## [0.8.3rc3] - 2017-02-14
@ -28,6 +29,7 @@ at anytime.
* mark peers as down if it fails download protocol * mark peers as down if it fails download protocol
* Made hash reannounce time to be adjustable to fix [#432](https://github.com/lbryio/lbry/issues/432) * Made hash reannounce time to be adjustable to fix [#432](https://github.com/lbryio/lbry/issues/432)
## [0.8.3rc0] - 2017-02-10 ## [0.8.3rc0] - 2017-02-10
### Changed ### Changed
* Convert EncryptedFileDownloader to inlineCallbacks * Convert EncryptedFileDownloader to inlineCallbacks

View file

@ -1,6 +1,6 @@
import logging import logging
__version__ = "0.8.3rc3" __version__ = "0.8.3"
version = tuple(__version__.split('.')) version = tuple(__version__.split('.'))
logging.getLogger(__name__).addHandler(logging.NullHandler()) logging.getLogger(__name__).addHandler(logging.NullHandler())

View file

@ -45,7 +45,7 @@ from lbrynet.core.Wallet import LBRYumWallet, SqliteStorage
from lbrynet.core.looping_call_manager import LoopingCallManager from lbrynet.core.looping_call_manager import LoopingCallManager
from lbrynet.core.server.BlobRequestHandler import BlobRequestHandlerFactory from lbrynet.core.server.BlobRequestHandler import BlobRequestHandlerFactory
from lbrynet.core.server.ServerProtocol import ServerProtocolFactory from lbrynet.core.server.ServerProtocol import ServerProtocolFactory
from lbrynet.core.Error import InsufficientFundsError from lbrynet.core.Error import InsufficientFundsError, UnknownNameError
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
@ -938,14 +938,14 @@ class Daemon(AuthJSONRPCServer):
fee_amount = 0.0 if fee is None else fee.amount fee_amount = 0.0 if fee is None else fee.amount
return data_cost + fee_amount return data_cost + fee_amount
@defer.inlineCallbacks
def get_est_cost_from_name(self, name): def get_est_cost_from_name(self, name):
""" """
Resolve a name and return the estimated stream cost Resolve a name and return the estimated stream cost
""" """
metadata = yield self._resolve_name(name)
d = self._resolve_name(name) cost = yield self._get_est_cost_from_metadata(metadata, name)
d.addCallback(self._get_est_cost_from_metadata, name) defer.returnValue(cost)
return d
def get_est_cost(self, name, size=None): def get_est_cost(self, name, size=None):
"""Get a cost estimate for a lbry stream, if size is not provided the """Get a cost estimate for a lbry stream, if size is not provided the
@ -1402,6 +1402,7 @@ class Daemon(AuthJSONRPCServer):
else: else:
return self._get_lbry_file(searchtype, value) return self._get_lbry_file(searchtype, value)
@defer.inlineCallbacks
def jsonrpc_resolve_name(self, name, force=False): def jsonrpc_resolve_name(self, name, force=False):
""" """
Resolve stream info from a LBRY uri Resolve stream info from a LBRY uri
@ -1409,15 +1410,20 @@ class Daemon(AuthJSONRPCServer):
Args: Args:
'name': name to look up, string, do not include lbry:// prefix 'name': name to look up, string, do not include lbry:// prefix
Returns: Returns:
metadata from name claim metadata from name claim or None if the name is not known
""" """
if not name: if not name:
return self._render_response(None) # TODO: seems like we should raise an error here
defer.returnValue(None)
d = self._resolve_name(name, force_refresh=force) try:
d.addCallback(self._render_response) metadata = yield self._resolve_name(name, force_refresh=force)
return d except UnknownNameError:
log.info('Name %s is not known', name)
defer.returnValue(None)
else:
defer.returnValue(metadata)
def jsonrpc_get_claim_info(self, **kwargs): def jsonrpc_get_claim_info(self, **kwargs):
""" """
@ -1617,6 +1623,7 @@ class Daemon(AuthJSONRPCServer):
""" """
return self.jsonrpc_stream_cost_estimate(**kwargs) return self.jsonrpc_stream_cost_estimate(**kwargs)
@defer.inlineCallbacks
def jsonrpc_stream_cost_estimate(self, name, size=None): def jsonrpc_stream_cost_estimate(self, name, size=None):
""" """
Get estimated cost for a lbry stream Get estimated cost for a lbry stream
@ -1627,10 +1634,8 @@ class Daemon(AuthJSONRPCServer):
Returns: Returns:
estimated cost estimated cost
""" """
cost = yield self.get_est_cost(name, size)
d = self.get_est_cost(name, size) defer.returnValue(cost)
d.addCallback(lambda r: self._render_response(r))
return d
@AuthJSONRPCServer.auth_required @AuthJSONRPCServer.auth_required
def jsonrpc_publish(self, name, bid, metadata, file_path=None, fee=None): def jsonrpc_publish(self, name, bid, metadata, file_path=None, fee=None):

View file

@ -92,7 +92,7 @@ def update_settings_from_args(args):
@defer.inlineCallbacks @defer.inlineCallbacks
def start_server_and_listen(launchui, use_auth, analytics_manager): def start_server_and_listen(launchui, use_auth, analytics_manager, max_tries=5):
"""The primary entry point for launching the daemon. """The primary entry point for launching the daemon.
Args: Args:
@ -102,13 +102,19 @@ def start_server_and_listen(launchui, use_auth, analytics_manager):
""" """
analytics_manager.send_server_startup() analytics_manager.send_server_startup()
log_support.configure_analytics_handler(analytics_manager) log_support.configure_analytics_handler(analytics_manager)
tries = 1
while tries < max_tries:
log.info('Making attempt %s / %s to startup', tries, max_tries)
try: try:
daemon_server = DaemonServer(analytics_manager) daemon_server = DaemonServer(analytics_manager)
yield daemon_server.start(use_auth, launchui) yield daemon_server.start(use_auth, launchui)
analytics_manager.send_server_startup_success() analytics_manager.send_server_startup_success()
break
except Exception as e: except Exception as e:
log.exception('Failed to startup') log.exception('Failed to startup')
analytics_manager.send_server_startup_error(str(e)) analytics_manager.send_server_startup_error(str(e))
tries += 1
else:
reactor.callFromThread(reactor.stop) reactor.callFromThread(reactor.stop)

View file

@ -1,5 +1,5 @@
[Desktop Entry] [Desktop Entry]
Version=0.8.3rc3 Version=0.8.3
Name=LBRY Name=LBRY
Comment=The world's first user-owned content marketplace Comment=The world's first user-owned content marketplace
Icon=lbry Icon=lbry

View file

@ -43,7 +43,7 @@ requires = [
'jsonrpc==1.2', 'jsonrpc==1.2',
'jsonrpclib==0.1.7', 'jsonrpclib==0.1.7',
'jsonschema==2.5.1', 'jsonschema==2.5.1',
'lbryum>=2.7.4', 'lbryum>=2.7.5',
'loggly-python-handler==1.0.0', 'loggly-python-handler==1.0.0',
'miniupnpc==1.9', 'miniupnpc==1.9',
'pbkdf2==1.3', 'pbkdf2==1.3',