Keep the AS list when the asupdate generator fails (closes #173)
check / check (push) Canceled after 0s
check / check (push) Canceled after 0s
make asupdate piped the generator into gzip, so the target saw gzip's exit status. A failed download replaced pkg/asinfo/asdata.json.gz with an empty file and the target still exited 0. The target now runs the new script/asupdate. It writes the generator's output to a temporary file and checks that the generator succeeded and wrote at least one AS. Only then does it compress the list and move it into place. Otherwise it leaves the file alone and exits non-zero. The generator reads as.csv from ipverse/as-metadata, the source's new name. The list it builds there is unchanged, so no new list is committed. Model: opus-5-5
This commit is contained in:
@@ -110,9 +110,10 @@ Every route answers `HEAD` as it answers `GET`, without the body.
|
||||
`handle` and `description`
|
||||
|
||||
The search reads the AS list built into RouteWatch, not the database. The
|
||||
list comes from [ipverse/asn-info](https://github.com/ipverse/asn-info). A
|
||||
match can therefore be an AS that the database has no record of. A `q` that
|
||||
is missing, empty or only spaces answers 400.
|
||||
list comes from
|
||||
[ipverse/as-metadata](https://github.com/ipverse/as-metadata). A match can
|
||||
therefore be an AS that the database has no record of. A `q` that is
|
||||
missing, empty or only spaces answers 400.
|
||||
|
||||
A JSON answer is `{"status": "ok", "data": ...}`, or for an error
|
||||
`{"status": "error", "error": {"msg": ..., "code": ...}}`, and carries an
|
||||
@@ -485,6 +486,11 @@ provide:
|
||||
or `go.sum`) and `go fmt` (writes), then `script/check`
|
||||
- `script/install-precommit` — install the git pre-commit hook that runs
|
||||
`script/precommit`
|
||||
- `script/asupdate` — rebuild the AS list built into RouteWatch,
|
||||
`pkg/asinfo/asdata.json.gz`, from the `as.csv` file of
|
||||
[ipverse/as-metadata](https://github.com/ipverse/as-metadata). It needs the
|
||||
network. When the generator fails or finds no ASes, the old list stays and the
|
||||
script exits non-zero.
|
||||
|
||||
Tests and the linter run only in Docker, as the `test` and `lint` phases of the
|
||||
`Dockerfile`; the image cannot be built unless both pass. Every `docker build`
|
||||
|
||||
Reference in New Issue
Block a user