Files
hub-monorepo/generate-protos.sh
Aditi Srinivasan 722acc86bf feat: set up monitoring for event stream based on snapchain block numbers (#2607)
## Why is this change needed?

Detect when there are missed events using the `BlockConfirmed` event. 

## Merge Checklist

_Choose all relevant options below by adding an `x` now or at any time
before submitting for review_

- [x] PR title adheres to the [conventional
commits](https://www.conventionalcommits.org/en/v1.0.0/) standard
- [x] PR has a
[changeset](https://github.com/farcasterxyz/hub-monorepo/blob/main/CONTRIBUTING.md#35-adding-changesets)
- [x] PR has been tagged with a change label(s) (i.e. documentation,
feature, bugfix, or chore)
- [ ] PR includes
[documentation](https://github.com/farcasterxyz/hub-monorepo/blob/main/CONTRIBUTING.md#32-writing-docs)
if necessary.

<!-- start pr-codex -->

---

## PR-Codex overview
This PR focuses on enhancing the event stream monitoring capabilities by
introducing new types and methods to track block events, including event
counts by type, and updating the related structures across multiple
packages.

### Detailed summary
- Introduced `eventCountsByType` in `BlockConfirmedBody`.
- Added `BlockConfirmedBody_EventCountsByTypeEntry` interface.
- Modified `createBaseBlockConfirmedBody` to initialize
`eventCountsByType`.
- Updated serialization and deserialization logic for
`BlockConfirmedBody` to handle `eventCountsByType`.
- Created `EventStreamMonitor` class to manage event counts and monitor
block events.
- Integrated `EventStreamMonitor` into `HubEventStreamConsumer`.
- Enhanced error handling and logging for missed events and old events
in the event stream.

>  Ask PR-Codex anything about this PR by commenting with `/codex {your
question}`

<!-- end pr-codex -->
2025-06-25 13:20:24 -04:00

32 lines
1.5 KiB
Bash
Executable File

PROTO_REPO=https://github.com/farcasterxyz/snapchain
PROTO_PATH=src/proto
PROTO_REV=a0367add145a74638bdbe73153775a673bb08dee # Update this if you want to generate off updated snapchain protos
TMPDIR=tmp-protogen
git clone $PROTO_REPO $TMPDIR
cd $TMPDIR
git checkout $PROTO_REV
cd ..
# Determine which files you care about
if [[ "$LIBRARY" == "core" ]]; then
RELEVANT_PROTOS=$(ls $TMPDIR/$PROTO_PATH/*.proto | xargs -n 1 basename | xargs -I{} echo '/defs/{}' | tr '\n' ' ')
OUT_PATH=src/protobufs/generated
CUSTOM_TS_PROTO_OPTS="outputServices=false"
elif [[ "$LIBRARY" == "hub-nodejs" ]]; then
RELEVANT_PROTOS="/defs/rpc.proto /defs/admin_rpc.proto"
OUT_PATH=src/generated
CUSTOM_TS_PROTO_OPTS="outputServices=grpc-js"
elif [[ "$LIBRARY" == "hub-web" ]]; then
RELEVANT_PROTOS="/defs/rpc.proto /defs/admin_rpc.proto"
OUT_PATH=src/generated
CUSTOM_TS_PROTO_OPTS="outputClientImpl=grpc-web,lowerCaseServiceMethods=true"
fi
echo "Generating relevant protos: $RELEVANT_PROTOS"
echo "Outputting generated files to: $OUT_PATH"
docker run --rm --user $(id -u):$(id -g) -v $(pwd)/../../node_modules:/node_modules -v $(pwd)/$TMPDIR/$PROTO_PATH:/defs -v $(pwd)/$OUT_PATH:/out namely/protoc:1.50_1 --plugin=/node_modules/ts-proto/protoc-gen-ts_proto --ts_proto_out=/out --ts_proto_opt=esModuleInterop=true,exportCommonSymbols=false,useOptionals=none,unrecognizedEnum=false,removeEnumPrefix=true,$CUSTOM_TS_PROTO_OPTS --proto_path=/defs $RELEVANT_PROTOS
rm -rf $TMPDIR