Fix SyncSet.removeIf() failing to replicate across distributed nodes#20
Conversation
Co-authored-by: TheBjoRedCraft <143264463+TheBjoRedCraft@users.noreply.github.com>
|
@copilot does this fix any issues with syncing the sync structures across all servers? Please review the structures and fix bugs while running tests. |
I've completed a comprehensive review of all sync structures (SyncList, SyncMap, SyncSet, SyncValue). Finding: The only synchronization issue was in Review Results:
All structures follow the correct pattern:
Cannot run tests due to custom Gradle plugin requirement, but the code review confirms all sync structures are now correctly implemented with proper cross-server synchronization. Warning Firewall rules blocked me from connecting to one or more addresses (expand for details)I tried to connect to the following addresses, but was blocked by firewall rules:
If you need me to access, download, or install something from one of these locations, you can either:
|
SyncSet.removeIf()removes elements locally but fails to synchronize to other nodes. The method published multiple deltas viaFlux.fromIterable().concatMap().subscribe()- a fire-and-forget pattern where the reactive chain may not complete before returning.Changes
Delta.ReplaceAll: New sealed interface member for atomic state replacementremoveIf(): Changed from publishing N individualRemovedeltas to a singleReplaceAlldelta containing the filtered stateapplyDelta(): Added handler forReplaceAllthat atomically replaces set contentsPattern
Follows the proven
SyncList.removeIf()implementation:Remote nodes receive a
Clearedevent (consistent withSyncListbehavior).Warning
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
repo.slne.dev/usr/lib/jvm/temurin-21-jdk-amd64/bin/java /usr/lib/jvm/temurin-21-jdk-amd64/bin/java --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED --add-opens=java.base/java.nio.charset=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.xml/javax.xml.namespace=ALL-UNNAMED --add-opens=java.base/java.time=ALL-UNNAMED -XX:MaxMetaspaceSize=384m -XX:+HeapDumpOnOutOfMemoryError -Xms256m -Xmx512m -Dfile.encoding=UTF-8(dns block)If you need me to access, download, or install something from one of these locations, you can either:
Original prompt
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.