From 8f24c727623861fc5b7c75c6e8628cc660d6fac1 Mon Sep 17 00:00:00 2001 From: Konstantine Tsafatinos Date: Sun, 25 Jun 2023 17:21:25 -0400 Subject: [PATCH 1/4] add ipfs reconnect before publishing if not connected to peers --- skynet/dgpu/daemon.py | 2 +- skynet/dgpu/network.py | 6 ++++++ skynet/ipfs/docker.py | 9 +++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/skynet/dgpu/daemon.py b/skynet/dgpu/daemon.py index 216a800..bf7c176 100644 --- a/skynet/dgpu/daemon.py +++ b/skynet/dgpu/daemon.py @@ -66,7 +66,7 @@ class SkynetDGPUDaemon: resp = await self.conn.begin_work(rid) if 'code' in resp: - logging.info(f'probably beign worked on already... skip.') + logging.info(f'probably being worked on already... skip.') else: try: diff --git a/skynet/dgpu/network.py b/skynet/dgpu/network.py index 466dc59..dc6362f 100644 --- a/skynet/dgpu/network.py +++ b/skynet/dgpu/network.py @@ -211,6 +211,12 @@ class SkynetGPUConnector: img = Image.open(io.BytesIO(raw_img)) img.save(f'ipfs-docker-staging/image.png') + # check for connections to peers, reconnect if none + peers = self.ipfs_node.check_connect() + if peers == "": + self.ipfs_node.connect( + '/ip4/169.197.140.154/tcp/4001/p2p/12D3KooWKWogLFNEcNNMKnzU7Snrnuj84RZdMBg3sLiQSQc51oEv') + ipfs_hash = self.ipfs_node.add('image.png') self.ipfs_node.pin(ipfs_hash) diff --git a/skynet/ipfs/docker.py b/skynet/ipfs/docker.py index 8158d2e..f13a596 100644 --- a/skynet/ipfs/docker.py +++ b/skynet/ipfs/docker.py @@ -38,6 +38,15 @@ class IPFSDocker: assert ec == 0 + def check_connect(self): + ec, out = self._container.exec_run( + ['ipfs', 'swarm', 'peers']) + if ec != 0: + logging.error(out) + assert ec == 0 + + return out + @cm def open_ipfs_node(name='skynet-ipfs'): From acd8ba91e50cd2237d11232f7172f1243086d72e Mon Sep 17 00:00:00 2001 From: Konstantine Tsafatinos Date: Mon, 26 Jun 2023 09:59:32 -0400 Subject: [PATCH 2/4] change ipfs reconnect logic, use config vars --- skynet/dgpu/network.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/skynet/dgpu/network.py b/skynet/dgpu/network.py index dc6362f..976f862 100644 --- a/skynet/dgpu/network.py +++ b/skynet/dgpu/network.py @@ -212,10 +212,9 @@ class SkynetGPUConnector: img.save(f'ipfs-docker-staging/image.png') # check for connections to peers, reconnect if none - peers = self.ipfs_node.check_connect() - if peers == "": - self.ipfs_node.connect( - '/ip4/169.197.140.154/tcp/4001/p2p/12D3KooWKWogLFNEcNNMKnzU7Snrnuj84RZdMBg3sLiQSQc51oEv') + peers = self.ipfs_node.check_connect().splitlines() + if self.ipfs_url not in peers: + self.ipfs_node.connect(self.ipfs_url) ipfs_hash = self.ipfs_node.add('image.png') From f8c744e6b47e4596f51df703c204694aac2d1a30 Mon Sep 17 00:00:00 2001 From: Konstantine Tsafatinos Date: Mon, 26 Jun 2023 12:38:26 -0400 Subject: [PATCH 3/4] add error logging to ipfs add func --- skynet/ipfs/docker.py | 2 ++ 1 file changed, 2 insertions(+) mode change 100644 => 100755 skynet/ipfs/docker.py diff --git a/skynet/ipfs/docker.py b/skynet/ipfs/docker.py old mode 100644 new mode 100755 index f13a596..b6cd6d5 --- a/skynet/ipfs/docker.py +++ b/skynet/ipfs/docker.py @@ -21,6 +21,8 @@ class IPFSDocker: def add(self, file: str) -> str: ec, out = self._container.exec_run( ['ipfs', 'add', '-w', f'/export/{file}', '-Q']) + if ec != 0: + logging.error(out) assert ec == 0 return out.decode().rstrip() From 6a6bdaab0dcb0e3cc04e980313ec41e3ce288dbf Mon Sep 17 00:00:00 2001 From: Konstantine Tsafatinos Date: Mon, 26 Jun 2023 12:43:00 -0400 Subject: [PATCH 4/4] update check_connect to return list of peers --- skynet/dgpu/network.py | 4 ++-- skynet/ipfs/docker.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/skynet/dgpu/network.py b/skynet/dgpu/network.py index 976f862..5309122 100644 --- a/skynet/dgpu/network.py +++ b/skynet/dgpu/network.py @@ -211,8 +211,8 @@ class SkynetGPUConnector: img = Image.open(io.BytesIO(raw_img)) img.save(f'ipfs-docker-staging/image.png') - # check for connections to peers, reconnect if none - peers = self.ipfs_node.check_connect().splitlines() + # check peer connections, reconnect to skynet gateway if not + peers = self.ipfs_node.check_connect() if self.ipfs_url not in peers: self.ipfs_node.connect(self.ipfs_url) diff --git a/skynet/ipfs/docker.py b/skynet/ipfs/docker.py index b6cd6d5..851bb12 100755 --- a/skynet/ipfs/docker.py +++ b/skynet/ipfs/docker.py @@ -47,7 +47,7 @@ class IPFSDocker: logging.error(out) assert ec == 0 - return out + return out.splitlines() @cm