Merge pull request #2840 from lbryio/status_returns_server_features
`status` command returns features available of currently connected wallet server, including trending algorithm
This commit is contained in:
commit
75a1cc0d33
6 changed files with 14 additions and 3 deletions
|
@ -121,6 +121,7 @@ class WalletComponent(Component):
|
||||||
connected = f"{addr_and_port[0]}:{addr_and_port[1]}"
|
connected = f"{addr_and_port[0]}:{addr_and_port[1]}"
|
||||||
result = {
|
result = {
|
||||||
'connected': connected,
|
'connected': connected,
|
||||||
|
'connected_features': self.wallet_manager.ledger.network.server_features,
|
||||||
'servers': [
|
'servers': [
|
||||||
{
|
{
|
||||||
'host': session.server[0],
|
'host': session.server[0],
|
||||||
|
|
|
@ -162,6 +162,7 @@ class Network:
|
||||||
self.ledger = ledger
|
self.ledger = ledger
|
||||||
self.session_pool = SessionPool(network=self, timeout=self.config.get('connect_timeout', 6))
|
self.session_pool = SessionPool(network=self, timeout=self.config.get('connect_timeout', 6))
|
||||||
self.client: Optional[ClientSession] = None
|
self.client: Optional[ClientSession] = None
|
||||||
|
self.server_features = None
|
||||||
self._switch_task: Optional[asyncio.Task] = None
|
self._switch_task: Optional[asyncio.Task] = None
|
||||||
self.running = False
|
self.running = False
|
||||||
self.remote_height: int = 0
|
self.remote_height: int = 0
|
||||||
|
@ -189,17 +190,20 @@ class Network:
|
||||||
while self.running:
|
while self.running:
|
||||||
if self.is_connected:
|
if self.is_connected:
|
||||||
await self.client.on_disconnected.first
|
await self.client.on_disconnected.first
|
||||||
|
self.server_features = None
|
||||||
self.client = None
|
self.client = None
|
||||||
continue
|
continue
|
||||||
self.client = await self.session_pool.wait_for_fastest_session()
|
self.client = await self.session_pool.wait_for_fastest_session()
|
||||||
log.info("Switching to SPV wallet server: %s:%d", *self.client.server)
|
log.info("Switching to SPV wallet server: %s:%d", *self.client.server)
|
||||||
try:
|
try:
|
||||||
|
self.server_features = await self.get_server_features()
|
||||||
self._update_remote_height((await self.subscribe_headers(),))
|
self._update_remote_height((await self.subscribe_headers(),))
|
||||||
self._on_connected_controller.add(True)
|
self._on_connected_controller.add(True)
|
||||||
log.info("Subscribed to headers: %s:%d", *self.client.server)
|
log.info("Subscribed to headers: %s:%d", *self.client.server)
|
||||||
except (asyncio.TimeoutError, ConnectionError):
|
except (asyncio.TimeoutError, ConnectionError):
|
||||||
log.info("Switching to %s:%d timed out, closing and retrying.", *self.client.server)
|
log.info("Switching to %s:%d timed out, closing and retrying.", *self.client.server)
|
||||||
self.client.synchronous_close()
|
self.client.synchronous_close()
|
||||||
|
self.server_features = None
|
||||||
self.client = None
|
self.client = None
|
||||||
|
|
||||||
async def start(self):
|
async def start(self):
|
||||||
|
|
|
@ -866,7 +866,7 @@ class LBRYLevelDB(LevelDB):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
path = os.path.join(self.env.db_dir, 'claims.db')
|
path = os.path.join(self.env.db_dir, 'claims.db')
|
||||||
trending = []
|
trending = []
|
||||||
for algorithm_name in set(self.env.default('TRENDING_ALGORITHMS', 'zscore').split(' ')):
|
for algorithm_name in self.env.trending_algorithms:
|
||||||
if algorithm_name in TRENDING_ALGORITHMS:
|
if algorithm_name in TRENDING_ALGORITHMS:
|
||||||
trending.append(TRENDING_ALGORITHMS[algorithm_name])
|
trending.append(TRENDING_ALGORITHMS[algorithm_name])
|
||||||
self.sql = SQLDB(
|
self.sql = SQLDB(
|
||||||
|
|
|
@ -37,6 +37,7 @@ class Env:
|
||||||
self.obsolete(['UTXO_MB', 'HIST_MB', 'NETWORK'])
|
self.obsolete(['UTXO_MB', 'HIST_MB', 'NETWORK'])
|
||||||
self.db_dir = self.required('DB_DIRECTORY')
|
self.db_dir = self.required('DB_DIRECTORY')
|
||||||
self.db_engine = self.default('DB_ENGINE', 'leveldb')
|
self.db_engine = self.default('DB_ENGINE', 'leveldb')
|
||||||
|
self.trending_algorithms = list(set(self.default('TRENDING_ALGORITHMS', 'zscore').split(' ')))
|
||||||
self.max_query_workers = self.integer('MAX_QUERY_WORKERS', None)
|
self.max_query_workers = self.integer('MAX_QUERY_WORKERS', None)
|
||||||
self.individual_tag_indexes = self.boolean('INDIVIDUAL_TAG_INDEXES', True)
|
self.individual_tag_indexes = self.boolean('INDIVIDUAL_TAG_INDEXES', True)
|
||||||
self.track_metrics = self.boolean('TRACK_METRICS', False)
|
self.track_metrics = self.boolean('TRACK_METRICS', False)
|
||||||
|
|
|
@ -863,6 +863,7 @@ class LBRYElectrumX(SessionBase):
|
||||||
'donation_address': env.donation_address,
|
'donation_address': env.donation_address,
|
||||||
'daily_fee': env.daily_fee,
|
'daily_fee': env.daily_fee,
|
||||||
'hash_function': 'sha256',
|
'hash_function': 'sha256',
|
||||||
|
'trending_algorithm': env.trending_algorithms[0]
|
||||||
}
|
}
|
||||||
|
|
||||||
async def server_features_async(self):
|
async def server_features_async(self):
|
||||||
|
|
|
@ -30,7 +30,9 @@ class NetworkTests(IntegrationTestCase):
|
||||||
'payment_address': '',
|
'payment_address': '',
|
||||||
'donation_address': '',
|
'donation_address': '',
|
||||||
'daily_fee': '0',
|
'daily_fee': '0',
|
||||||
'server_version': lbry.__version__}, await self.ledger.network.get_server_features())
|
'server_version': lbry.__version__,
|
||||||
|
'trending_algorithm': 'zscore',
|
||||||
|
}, await self.ledger.network.get_server_features())
|
||||||
await self.conductor.spv_node.stop()
|
await self.conductor.spv_node.stop()
|
||||||
payment_address, donation_address = await self.account.get_addresses(limit=2)
|
payment_address, donation_address = await self.account.get_addresses(limit=2)
|
||||||
await self.conductor.spv_node.start(
|
await self.conductor.spv_node.start(
|
||||||
|
@ -54,7 +56,9 @@ class NetworkTests(IntegrationTestCase):
|
||||||
'payment_address': payment_address,
|
'payment_address': payment_address,
|
||||||
'donation_address': donation_address,
|
'donation_address': donation_address,
|
||||||
'daily_fee': '42',
|
'daily_fee': '42',
|
||||||
'server_version': lbry.__version__}, await self.ledger.network.get_server_features())
|
'server_version': lbry.__version__,
|
||||||
|
'trending_algorithm': 'zscore',
|
||||||
|
}, await self.ledger.network.get_server_features())
|
||||||
|
|
||||||
|
|
||||||
class ReconnectTests(IntegrationTestCase):
|
class ReconnectTests(IntegrationTestCase):
|
||||||
|
|
Loading…
Add table
Reference in a new issue