Community and Raw on RISMessage (internal/ristypes/ris.go) are decoded from every live message and read by no handler; Raw is the hex of the whole BGP message. Each parsed message sits in up to four handler queues, so retaining them is a large share of queue memory.
Change: both fields are now tagged json:"-" so they stay empty after decoding. I kept the fields (rather than removing them) because the definition of done asks for a test that observes them empty, which needs the fields to exist; a short comment on them warns against re-decoding without a consumer.
I confirmed by reading the tree that nothing outside this file references either field.
New test internal/ristypes/ris_test.go decodes every message in docs/message-examples.json the way the streamer does and asserts Community and Raw stay empty while used fields (Path, Announcements) still populate.
Disclosure (judgement call): the host make check cannot lint here — the host has Go 1.26 with a golangci-lint built against Go 1.25, which panics on Go 1.26 export data regardless of any change. Per policy the authoritative gate is the pinned Docker lint stage; I ran script/cibuild, whose lint, fmt-check and test stages executed fresh on this change and passed.
Model: opus-4-8
Part of https://git.eeqj.de/sneak/routewatch/issues/3 (memory plan, unit U3), closes https://git.eeqj.de/sneak/routewatch/issues/9.
`Community` and `Raw` on `RISMessage` (`internal/ristypes/ris.go`) are decoded from every live message and read by no handler; `Raw` is the hex of the whole BGP message. Each parsed message sits in up to four handler queues, so retaining them is a large share of queue memory.
Change: both fields are now tagged `json:"-"` so they stay empty after decoding. I kept the fields (rather than removing them) because the definition of done asks for a test that observes them empty, which needs the fields to exist; a short comment on them warns against re-decoding without a consumer.
I confirmed by reading the tree that nothing outside this file references either field.
New test `internal/ristypes/ris_test.go` decodes every message in `docs/message-examples.json` the way the streamer does and asserts `Community` and `Raw` stay empty while used fields (`Path`, `Announcements`) still populate.
Disclosure (judgement call): the host `make check` cannot lint here — the host has Go 1.26 with a golangci-lint built against Go 1.25, which panics on Go 1.26 export data regardless of any change. Per policy the authoritative gate is the pinned Docker lint stage; I ran `script/cibuild`, whose lint, fmt-check and test stages executed fresh on this change and passed.
Model: opus-4-8
Community and Raw are decoded from every live message and read by no
handler; Raw is the hex of the whole BGP message. Each parsed message
sits in up to four handler queues, so retaining them is a large share of
queue memory. Tagging both json:"-" keeps them out of the decoded
message while the fields handlers use still decode. A decode test over
docs/message-examples.json confirms both stay empty and the used fields
(Path, Announcements) still populate.
Model: opus-4-8
PASS — both Community and Raw are tagged json:"-", nothing outside the type reads either field, and the new decode test over docs/message-examples.json meaningfully asserts both stay empty while the used fields (Path, Announcements) still populate, with the pinned Docker gate green on the head rebased onto current next.
Model: opus-4-8
PASS — both `Community` and `Raw` are tagged `json:"-"`, nothing outside the type reads either field, and the new decode test over `docs/message-examples.json` meaningfully asserts both stay empty while the used fields (`Path`, `Announcements`) still populate, with the pinned Docker gate green on the head rebased onto current `next`.
Model: opus-4-8
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Part of #3 (memory plan, unit U3), closes #9.
CommunityandRawonRISMessage(internal/ristypes/ris.go) are decoded from every live message and read by no handler;Rawis the hex of the whole BGP message. Each parsed message sits in up to four handler queues, so retaining them is a large share of queue memory.Change: both fields are now tagged
json:"-"so they stay empty after decoding. I kept the fields (rather than removing them) because the definition of done asks for a test that observes them empty, which needs the fields to exist; a short comment on them warns against re-decoding without a consumer.I confirmed by reading the tree that nothing outside this file references either field.
New test
internal/ristypes/ris_test.godecodes every message indocs/message-examples.jsonthe way the streamer does and assertsCommunityandRawstay empty while used fields (Path,Announcements) still populate.Disclosure (judgement call): the host
make checkcannot lint here — the host has Go 1.26 with a golangci-lint built against Go 1.25, which panics on Go 1.26 export data regardless of any change. Per policy the authoritative gate is the pinned Docker lint stage; I ranscript/cibuild, whose lint, fmt-check and test stages executed fresh on this change and passed.Model: opus-4-8
PASS — both
CommunityandRaware taggedjson:"-", nothing outside the type reads either field, and the new decode test overdocs/message-examples.jsonmeaningfully asserts both stay empty while the used fields (Path,Announcements) still populate, with the pinned Docker gate green on the head rebased onto currentnext.Model: opus-4-8