mirror of
https://github.com/pezkuwichain/pezkuwi-subquery.git
synced 2026-10-20 18:56:24 +00:00
Every report waits behind the previous one, and a submission only settled when it reached a block. One the pool dropped, rejected or replaced never settled, so every report queued after it waited forever. The watchdog meant to catch a silent bot was armed only after the first scan returned, so when that first scan was the one that hung there was no watchdog at all: the production container logged its last line one minute after starting on 2026-10-13 and stayed up, silent, for more than a day. - submit.js: a submission settles on a terminal status (Dropped, Invalid, Usurped, FinalityTimeout) or after SUBMIT_TIMEOUT_MS, and releases its status subscription. - The watchdog is armed before connecting and counts from the process start until a scan completes, so a heartbeat left by an earlier process in the same container does not count for this one. - The noter's own account is skipped: the chain refuses a noter's report about themselves, so it failed in every scan. - Unit tests for both rules, run inside the noter image in CI.
16 lines
515 B
Docker
16 lines
515 B
Docker
FROM node:24-alpine
|
|
|
|
WORKDIR /app
|
|
|
|
# Install exactly what package-lock.json records, so the image runs the
|
|
# versions that were reviewed and tested rather than whatever the ranges
|
|
# resolve to on the day it is built. The optional dependencies are the light
|
|
# client (@bizinikiwi/connect, smoldot), which the bot never loads: it talks to
|
|
# the chains over WsProvider.
|
|
COPY package.json package-lock.json ./
|
|
RUN npm ci --omit=dev --omit=optional --no-audit --no-fund
|
|
|
|
COPY bot.js submit.js ./
|
|
|
|
CMD ["node", "bot.js"]
|