Skip to content

Make ZIPCompressedMessage compression level instance-scoped while preserving legacy static API#2783

Open
Copilot wants to merge 3 commits into
masterfrom
copilot/fix-zipcompressedmessage-compression-level
Open

Make ZIPCompressedMessage compression level instance-scoped while preserving legacy static API#2783
Copilot wants to merge 3 commits into
masterfrom
copilot/fix-zipcompressedmessage-compression-level

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented May 17, 2026

ZIPCompressedMessage currently stores compression level in static state, so constructing/configuring one message can unintentionally affect others. This change scopes compression level to each message instance while keeping legacy behavior for older call sites and on-wire compatibility.

  • Compression level state model

    • Introduced per-instance compressionLevel.
    • Kept static setLevel(int) as a default-setting API for newly created messages.
    • Constructor overload with explicit level now sets only that instance.
  • Backward compatibility

    • Serialization/deserialization format is unchanged (ZIPSerializer behavior unchanged), so peers on older versions can still parse messages.
    • Existing uses of ZIPCompressedMessage.setLevel(...) continue to work as a global default for future instances.
  • API/docs cleanup

    • Added setCompressionLevel(int) for explicit instance-level configuration.
    • Updated JavaDoc to reflect default-vs-instance semantics and corrected ZIP level wording (1 = fastest/least compression, 9 = slowest/best compression).
  • Focused regression coverage

    • Added tests to verify:
      • instance-specific level does not leak across messages
      • static default still applies only to subsequently created instances
ZIPCompressedMessage.setLevel(6); // default for new instances

ZIPCompressedMessage a = new ZIPCompressedMessage(msgA);      // level 6
ZIPCompressedMessage b = new ZIPCompressedMessage(msgB, 1);   // level 1 (instance-only)
ZIPCompressedMessage c = new ZIPCompressedMessage(msgC);      // still level 6

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:

  • dl.google.com
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-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:

Copilot AI changed the title [WIP] Fix ZIPCompressedMessage compression level to be non-static Make ZIPCompressedMessage compression level instance-scoped while preserving legacy static API May 17, 2026
Copilot AI requested a review from riccardobl May 17, 2026 14:53
@riccardobl riccardobl marked this pull request as ready for review May 17, 2026 17:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ZIPCompressedMessage compressionLevel should not be static

2 participants