[JAVA-4868] Use default compression level for zstd Created: 06/Feb/23  Updated: 28/Oct/23  Resolved: 30/May/23

Status: Closed
Project: Java Driver
Component/s: Wire Protocol
Affects Version/s: None
Fix Version/s: 4.9.0, 3.12.14

Type: Improvement Priority: Unknown
Reporter: Maxim Katcharov Assignee: Maxim Katcharov
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Related
Case:
Documentation Changes: Not Needed
Documentation Changes Summary:

1. What would you like to communicate to the user about this feature?
2. Would you like the user to see examples of the syntax and/or executable code and its output?
3. Which versions of the driver/connector does this apply to?


 Description   

In HELP-42011, we found that we were using the maximum compression level for zstd,  22, while the default (recommended) level was 3. The tradeoff is between speed and compression, and compression typically has diminishing returns. Other drivers use the default value, or values close to it.



 Comments   
Comment by Githook User [ 26/May/23 ]

Author:

{'name': 'Ian Springer', 'email': 'ispringer@evergage.com', 'username': 'ispringer'}

Message: Use default compression level for zstd (#1116)

JAVA-4868 backport
Branch: 3.12.x
https://github.com/mongodb/mongo-java-driver/commit/d08b993c3b55dc2dd561e606c23bdad101b10f29

Comment by Cloud GitHub Webhooks [ 26/May/23 ]

jyemin merged a pull request (JAVA-4868 3.12.x backport) into the following branch:
3.12.x: d08b993c3b55dc2dd561e606c23bdad101b10f29

Comment by Jeffrey Yemin [ 16/May/23 ]

Oh, you're using the callback-based API in 3.x. Yeah, that's a lot of work to update to reactive.

We'll consider backporting this.

Comment by Ian Springer [ 16/May/23 ]

Hi jeff.yemin@mongodb.com, to give a little more context, we tried rolling out enablement of network compression for our Mongo clients (app servers) into production yesterday and noticed significant increases in latency and errors in our application. We eventually realized it was likely due to this bug, as we're using v3.12.11. 

I actually do have a 4.x upgrade branch ready to go, but we'll have to do some canary testing before rolling it out, since it involved some significant changes to our code, particularly around refactoring to use the new reactivestreams async API. I thought I'd get the ball rolling on an option B that would not require the canary testing, and I also thought you'd want to cut a 3.x patch release for this, since it makes zstd network compression unusable for most applications. If you're not going to cut a release, I would at least update the docs with a warning.

Comment by Jeffrey Yemin [ 16/May/23 ]

Hi ian.springer@salesforce.com, we're not currently planning any more 3.12.x patch releases? What's blocking you from upgrading to 4.x?

Comment by Ian Springer [ 16/May/23 ]

Please backport to 3.12.x. Here's a PR: https://github.com/mongodb/mongo-java-driver/pull/1116

Comment by Githook User [ 06/Feb/23 ]

Author:

{'name': 'Maxim Katcharov', 'email': 'maxim.katcharov@mongodb.com', 'username': 'katcharov'}

Message: Use default compression level for zstd (#1080)

JAVA-4868
Branch: master
https://github.com/mongodb/mongo-java-driver/commit/6aebed73327ee291aa55e385ee9788a90042a462

Generated at Thu Feb 08 09:03:10 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.