summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAAGaming <aa@mail.catvibers.me>2022-07-15 10:34:47 -0400
committerAAGaming <aa@mail.catvibers.me>2022-07-15 10:34:47 -0400
commit162d1b561b37fa26aab0c37800ffee3dca878b5a (patch)
tree3aaaaadc82d1cd229f45da5ab2590fb601a22926
parentba824fc921cd31b676a5317e05a92c683eaa7238 (diff)
downloaddecky-loader-162d1b561b37fa26aab0c37800ffee3dca878b5a.tar.gz
decky-loader-162d1b561b37fa26aab0c37800ffee3dca878b5a.zip
fix lockup in _open_socket_if_not_exists, probably fix ci prereleases
-rw-r--r--.github/workflows/build.yml26
-rw-r--r--backend/plugin.py35
2 files changed, 40 insertions, 21 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index fb80e630..28a3377f 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -104,16 +104,30 @@ jobs:
with:
name: PluginLoader
path: dist
+
+ - name: Get tag 🏷️
+ id: old_tag
+ uses: rafarlopes/get-latest-pre-release-tag-action@v1
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ repository: 'decky-loader'
+
+ - name: Prepare tag ⚙️
+ id: ready_tag
+ run: |
+ echo ::set-output name=${${{ jobs.old_tag.outputs.tag }}#"-pre"}
- name: Bump version ⏫
id: tag_version
- uses: mathieudutour/github-tag-action@v6.0
+ uses: anothrNick/github-tag-action@1.39.0
if: ${{ github.event_name == 'workflow_dispatch' }}
with:
- github_token: ${{ secrets.GITHUB_TOKEN }}
- dry_run: true
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ WITH_V: true
+ INITIAL_VERSION: ${{ jobs.ready_tag.outputs.name }}
- - name: Push tag ⏫
+ - name: Push tag 📤
uses: rickstaa/action-create-tag@v1.3.2
if: ${{ steps.tag_version.outputs.new_tag && github.event_name == 'workflow_dispatch' }}
with:
@@ -130,14 +144,14 @@ jobs:
prerelease: true
generate_release_notes: true
- - name: Bump prerelease
+ - name: Bump prerelease ⏫
id: bump
if: ${{ github.event_name == 'schedule' }}
run: |
git_hash=$(git rev-parse --short "$GITHUB_SHA")
echo ::set-output new_tag="nightly-$git_hash"
- - name: Push tag ⏫
+ - name: Push tag 📤
uses: rickstaa/action-create-tag@v1.3.2
if: ${{ github.event_name == 'schedule' }}
with:
diff --git a/backend/plugin.py b/backend/plugin.py
index 11c94a05..0a8a2901 100644
--- a/backend/plugin.py
+++ b/backend/plugin.py
@@ -78,12 +78,17 @@ class PluginWrapper:
async def _open_socket_if_not_exists(self):
if not self.reader:
- while True:
+ retries = 0
+ while retries < 10:
try:
self.reader, self.writer = await open_unix_connection(self.socket_addr)
- break
+ return True
except:
- await sleep(0)
+ await sleep(2)
+ retries += 1
+ return False
+ else:
+ return True
def start(self):
if self.passive:
@@ -95,21 +100,21 @@ class PluginWrapper:
if self.passive:
return
async def _(self):
- await self._open_socket_if_not_exists()
- self.writer.write((dumps({"stop": True})+"\n").encode("utf-8"))
- await self.writer.drain()
- self.writer.close()
+ if await self._open_socket_if_not_exists():
+ self.writer.write((dumps({"stop": True})+"\n").encode("utf-8"))
+ await self.writer.drain()
+ self.writer.close()
get_event_loop().create_task(_(self))
async def execute_method(self, method_name, kwargs):
if self.passive:
raise RuntimeError("This plugin is passive (aka does not implement main.py)")
async with self.method_call_lock:
- await self._open_socket_if_not_exists()
- self.writer.write(
- (dumps({"method": method_name, "args": kwargs})+"\n").encode("utf-8"))
- await self.writer.drain()
- res = loads((await self.reader.readline()).decode("utf-8"))
- if not res["success"]:
- raise Exception(res["res"])
- return res["res"]
+ if await self._open_socket_if_not_exists():
+ self.writer.write(
+ (dumps({"method": method_name, "args": kwargs})+"\n").encode("utf-8"))
+ await self.writer.drain()
+ res = loads((await self.reader.readline()).decode("utf-8"))
+ if not res["success"]:
+ raise Exception(res["res"])
+ return res["res"]