Lock scanner processing to a single runner (#1170)

This commit is contained in:
2025-11-20 12:13:34 +01:00
committed by GitHub
3 changed files with 18 additions and 11 deletions
+2 -2
View File
@@ -5,7 +5,7 @@
"": {
"name": "api",
"dependencies": {
"@elysiajs/opentelemetry": "^1.4.6",
"@elysiajs/opentelemetry": "^1.4.7",
"@elysiajs/swagger": "zoriya/elysia-swagger#build",
"@kubiks/otel-drizzle": "zoriya/drizzle-otel#build",
"@types/bun": "^1.3.1",
@@ -49,7 +49,7 @@
"@drizzle-team/brocli": ["@drizzle-team/brocli@0.10.2", "", {}, "sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w=="],
"@elysiajs/opentelemetry": ["@elysiajs/opentelemetry@1.4.6", "", { "dependencies": { "@opentelemetry/api": "^1.9.0", "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/sdk-node": "^0.200.0" }, "peerDependencies": { "elysia": ">= 1.4.0" } }, "sha512-jR7t4M6ZvMnBqzzHsNTL6y3sNq9jbGi2vKxbkizi/OO5tlvlKl/rnBGyFjZUjQ1Hte7rCz+2kfmgOQMhkjk+Og=="],
"@elysiajs/opentelemetry": ["@elysiajs/opentelemetry@1.4.7", "", { "dependencies": { "@opentelemetry/api": "^1.9.0", "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/sdk-node": "^0.200.0" }, "peerDependencies": { "elysia": ">= 1.4.0" } }, "sha512-biJfj3bCHf7aYPB8EygvN90sEKR/qgPn8Cziq2ebJSGyY8cpmskTTP6zbUMkMk6R6rfpoP7ECZbXlTZz+7BfJA=="],
"@elysiajs/swagger": ["@elysiajs/swagger@github:zoriya/elysia-swagger#f88fbc7", { "dependencies": { "@scalar/themes": "^0.9.81", "@scalar/types": "^0.1.3", "openapi-types": "^12.1.3", "pathe": "^1.1.2" }, "peerDependencies": { "elysia": ">= 1.3.0" } }, "zoriya-elysia-swagger-f88fbc7"],
+1 -1
View File
@@ -9,7 +9,7 @@
"format": "biome check --write ."
},
"dependencies": {
"@elysiajs/opentelemetry": "^1.4.6",
"@elysiajs/opentelemetry": "^1.4.7",
"@elysiajs/swagger": "zoriya/elysia-swagger#build",
"@kubiks/otel-drizzle": "zoriya/drizzle-otel#build",
"@types/bun": "^1.3.1",
+15 -8
View File
@@ -55,6 +55,7 @@ class RequestProcessor:
self._database: Connection = None # type: ignore
self._client = client
self._providers = providers
self._processing = False
@tracer.start_as_current_span("listen_requests")
async def listen(self, tg: TaskGroup):
@@ -85,14 +86,20 @@ class RequestProcessor:
raise
async def process_all(self):
found = True
while found:
try:
found = await self.process_request()
except Exception as e:
logger.error(
"Failed to process one of the metadata request", exc_info=e
)
if self._processing:
return
self._processing = True
try:
found = True
while found:
try:
found = await self.process_request()
except Exception as e:
logger.error(
"Failed to process one of the metadata request", exc_info=e
)
finally:
self._processing = False
async def process_request(self):
cur = await self._database.fetchrow(