fix(sync): a sync touching many cards no longer blocks the server

serverpod_offline_sync v0.0.10 compares byte payloads byte by byte, each
byte through a UUID parse that throws and is caught: 36 ms for two 2 KB
payloads. A sync whose projection loaded a few thousand card revisions
kept the server's isolate busy for minutes, answering no one, while the
client's method stream idled out after 40 s and sent everything again,
without end.

The shared package now comes from our fork (project-halkyon/
serverpod-offline-sync, branch halkyon/byte-payloads at a signed commit):
v0.0.10 with that comparison fixed, 25 µs for the same payloads. The
override sits in the root pubspec, which the server's Docker build keeps,
so production gets it too. The fix is offered upstream; drop the override
once a release has it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MMm7usAo6q9ZZRoPkWjoxi
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-10-12 13:31:22 +02:00
commit 8b9f3174a6
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -17,8 +17,9 @@ COPY halkyon_learn_server halkyon_learn_server
# The workspace root with only the server package: neither the client package nor the
# curator is needed to build the server, and the Flutter app would need Flutter.
# Everything else stays as the repository has it, above all the dependency overrides,
# without which the offline sync package's exact Serverpod pin can't be resolved. The
# check fails the build loudly if the root's member list changes shape.
# which bring the server our fork of the offline sync package (fetched with the git
# the Dart image has). The check fails the build loudly if the root's member list
# changes shape.
RUN sed -i -e '/^ - halkyon_learn_client$/d' -e '/^ - halkyon_learn_flutter$/d' \
-e '/^ - halkyon_learn_curator$/d' pubspec.yaml \
&& grep -q '^ - halkyon_learn_server$' pubspec.yaml \