fix lockup in _open_socket_if_not_exists, probably fix ci prereleases

This commit is contained in:
AAGaming
2022-07-15 10:34:47 -04:00
parent ba824fc921
commit 162d1b561b
2 changed files with 40 additions and 21 deletions
+20 -6
View File
@@ -105,15 +105,29 @@ jobs:
name: PluginLoader name: PluginLoader
path: dist 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 ⏫ - name: Bump version ⏫
id: tag_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' }} if: ${{ github.event_name == 'workflow_dispatch' }}
with: with:
github_token: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
dry_run: true WITH_V: true
INITIAL_VERSION: ${{ jobs.ready_tag.outputs.name }}
- name: Push tag - name: Push tag 📤
uses: rickstaa/action-create-tag@v1.3.2 uses: rickstaa/action-create-tag@v1.3.2
if: ${{ steps.tag_version.outputs.new_tag && github.event_name == 'workflow_dispatch' }} if: ${{ steps.tag_version.outputs.new_tag && github.event_name == 'workflow_dispatch' }}
with: with:
@@ -130,14 +144,14 @@ jobs:
prerelease: true prerelease: true
generate_release_notes: true generate_release_notes: true
- name: Bump prerelease - name: Bump prerelease
id: bump id: bump
if: ${{ github.event_name == 'schedule' }} if: ${{ github.event_name == 'schedule' }}
run: | run: |
git_hash=$(git rev-parse --short "$GITHUB_SHA") git_hash=$(git rev-parse --short "$GITHUB_SHA")
echo ::set-output new_tag="nightly-$git_hash" echo ::set-output new_tag="nightly-$git_hash"
- name: Push tag - name: Push tag 📤
uses: rickstaa/action-create-tag@v1.3.2 uses: rickstaa/action-create-tag@v1.3.2
if: ${{ github.event_name == 'schedule' }} if: ${{ github.event_name == 'schedule' }}
with: with:
+20 -15
View File
@@ -78,12 +78,17 @@ class PluginWrapper:
async def _open_socket_if_not_exists(self): async def _open_socket_if_not_exists(self):
if not self.reader: if not self.reader:
while True: retries = 0
while retries < 10:
try: try:
self.reader, self.writer = await open_unix_connection(self.socket_addr) self.reader, self.writer = await open_unix_connection(self.socket_addr)
break return True
except: except:
await sleep(0) await sleep(2)
retries += 1
return False
else:
return True
def start(self): def start(self):
if self.passive: if self.passive:
@@ -95,21 +100,21 @@ class PluginWrapper:
if self.passive: if self.passive:
return return
async def _(self): async def _(self):
await self._open_socket_if_not_exists() if await self._open_socket_if_not_exists():
self.writer.write((dumps({"stop": True})+"\n").encode("utf-8")) self.writer.write((dumps({"stop": True})+"\n").encode("utf-8"))
await self.writer.drain() await self.writer.drain()
self.writer.close() self.writer.close()
get_event_loop().create_task(_(self)) get_event_loop().create_task(_(self))
async def execute_method(self, method_name, kwargs): async def execute_method(self, method_name, kwargs):
if self.passive: if self.passive:
raise RuntimeError("This plugin is passive (aka does not implement main.py)") raise RuntimeError("This plugin is passive (aka does not implement main.py)")
async with self.method_call_lock: async with self.method_call_lock:
await self._open_socket_if_not_exists() if await self._open_socket_if_not_exists():
self.writer.write( self.writer.write(
(dumps({"method": method_name, "args": kwargs})+"\n").encode("utf-8")) (dumps({"method": method_name, "args": kwargs})+"\n").encode("utf-8"))
await self.writer.drain() await self.writer.drain()
res = loads((await self.reader.readline()).decode("utf-8")) res = loads((await self.reader.readline()).decode("utf-8"))
if not res["success"]: if not res["success"]:
raise Exception(res["res"]) raise Exception(res["res"])
return res["res"] return res["res"]