From 3978d64056bbc2d96912fc0be34ec1c928e95794 Mon Sep 17 00:00:00 2001 From: Victor Shyba Date: Mon, 6 Dec 2021 11:07:55 -0300 Subject: [PATCH] keep same node id between runs --- scripts/dht_node.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/scripts/dht_node.py b/scripts/dht_node.py index 1c96e5458..8a5e18561 100644 --- a/scripts/dht_node.py +++ b/scripts/dht_node.py @@ -2,6 +2,7 @@ import asyncio import argparse import logging import csv +import os.path from io import StringIO from typing import Optional from aiohttp import web @@ -96,6 +97,16 @@ class SimpleMetrics: async def main(host: str, port: int, db_file_path: str, bootstrap_node: Optional[str], prometheus_port: int): loop = asyncio.get_event_loop() conf = Config() + if not db_file_path.startswith(':memory:'): + node_id_file_path = db_file_path + 'node_id' + if os.path.exists(node_id_file_path): + with open(node_id_file_path, 'rb') as node_id_file: + node_id = node_id_file.read() + else: + with open(node_id_file_path, 'wb') as node_id_file: + node_id = generate_id() + node_id_file.write(node_id) + storage = SQLiteStorage(conf, db_file_path, loop, loop.time) if bootstrap_node: nodes = bootstrap_node.split(':') @@ -104,13 +115,14 @@ async def main(host: str, port: int, db_file_path: str, bootstrap_node: Optional nodes = conf.known_dht_nodes await storage.open() node = Node( - loop, PeerManager(loop), generate_id(), port, port, 3333, None, + loop, PeerManager(loop), node_id, port, port, 3333, None, storage=storage ) if prometheus_port > 0: metrics = SimpleMetrics(prometheus_port, node) await metrics.start() node.start(host, nodes) + log.info("Peer with id %s started", node_id.hex()) while True: await asyncio.sleep(10) PEERS.labels('main').set(len(node.protocol.routing_table.get_peers()))