palantir / palantir/conjure-java-runtime

Don't enable GCM by default, even on Java >8?

Open
#1,867 6 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Java
Stars
95
Forks
96
Avg merge
3h 38m
Merged PRs (30d)
33

Description

What happened?

JRE-default GCM ciphers (even on Java >8) seem to cause a lot of heap churn. This ended up contributing heavily to a Horizon performance regression with Conjure enabled (2-3 sec operation -> 15-20 sec and about 10x more GC activity; see PDS-134017).

JRE version in use (from IL): zulu11.41.23-ca-jdk11.0.8-linux_x64

Example request load, 100 requests each 5MB in size with TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, tracking all allocations >100B in size:
image

Same request load, 100 5MB requests with TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, all allocations >100B:
image

Given this load seems to scale directly with network traffic, would expect this to generally cause more GCs in any server using GCM with nontrivial request or response sizes.

What did you want to happen?

Ideally, don't try to enable GCM by default if e.g. Conscrypt/Bouncycastle isn't in use.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating the Java TLS cipher-default configuration and the logic that detects Conscrypt or Bouncycastle. Reproduce the reported comparison with the stated Java 11 runtime and large request load, then verify that GCM is not enabled by default without those providers and that coverage reflects the intended provider behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
networking, performance
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.