oracle / oracle/oci-java-sdk

Performance regression in versions 2.14.1 and later for all API operations

Open
#378 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

SDK
Dominant language
Java
Stars
243
Forks
171
Avg merge
30m
Merged PRs (30d)
4

Description

Update : We have fixed this issue in version 2.66.2 and 3.31.0 of the SDK by using an idle connection monitor. More details can be found here


In versions 2.14.1 and later, you may encounter performance regressions when using the SDK to call API operations to any of the OCI services. The regression ranges from 30% to 60% increase in latency in SDK operations to any of the OCI services.

If you are experiencing this issue, and would like to get the older performance back, there are some workarounds you can do:

  • Switch back to the Jersey’s default HttpUrlConnectorProvider by setting the OCI_JAVASDK_JERSEY_CLIENT_DEFAULT_CONNECTOR_ENABLED environment variable to true or any other methods mentioned here
  • Disable the use of NoConnectionReuseStrategy for the ApacheConnectorProvider by setting the ApacheConnectorProperties.connectionReuseStrategy to null and ApacheConnectorProperties.requestRetryHandler to null
// For clients that should not buffer requests into memory
ObjectStorageClient client = ObjectStorageClient.builder().clientConfigurator(new ApacheConfigurator.NonBuffering(
        ApacheConnectorProperties.builder().
                .connectionReuseStrategy(null)
                .requestRetryHandler(null)
                .build()
)).build(provider);

// For clients that should buffer requests into memory
IdentityClient identityClient = IdentityClient.builder().clientConfigurator(new ApacheConfigurator(
        ApacheConnectorProperties.builder()
                .connectionReuseStrategy(null)
                .requestRetryHandler(null)
                .build()
)).build(provider);

  • Or, use SDK version 2.14.0 or earlier.

If you have any questions, please feel free to comment on this GitHub issue and we will be happy to help.

Contributor guide

Open the contributing guide

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

The issue points to ApacheConnector-README.md and the ApacheConfigurator and ApacheConnectorProperties entry points. Start by reviewing the documented idle connection monitor fix and affected SDK versions; done is not defined because the regression is reported fixed in versions 2.66.2 and 3.31.0.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
api, performance
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
15/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.