31 January 2025
Composable Commerce
HTTP API
Announcement
General

This change has been delayed until further notice.

Therefore, the deadline of March 1, 2025, as mentioned in this announcement, is no longer applicable. However, we still recommend that you update your Apache HTTP client.

In March 2025, Google plans to implement changes to the Google Cloud service that are incompatible with older Apache HTTP client versions.

Check your Apache HTTP client if you meet the following criteria:

  • Your commercetools Composable Commerce projects are hosted on GCP (Google Cloud).
  • You are using an Apache HTTP client to communicate with the Composable Commerce APIs.
  • Your Apache HTTP client is older than version 5.4.1.
  • Your Apache HTTP core component is older than version 5.3.1.

Actions required by 01 March 2025

If you are affected, take the following steps:

  • Update to the latest SDKs.

    If you're using the Java SDK, updating to version 17.21 or later (or versions 9.4.2, 16.2.2, 17.3.2, 17.15.2, or 17.16.2) also updates the Apache HTTP client. Nevertheless, you must still check your Apache HTTP client to ensure compatibility.

  • Check your Apache HTTP client and do one of the following:

    • Update your Apache HTTP client to version 5.4.1 and update your Apache HTTP core H2 to 5.3.1 or higher.

      OR

    • Enforce HTTP/1.1 protocol when calling the Composable Commerce APIs via the Apache HTTP client.

Why is this necessary?

Google Cloud updated its load balancers to support HTTP/2 and plans to introduce further enhancements to optimize Google's HTTP/2 implementation. The Apache HTTP client does not support the optimized HTTP/2 implementation of Google's load balancer layer in versions prior to 5.4.1, where the issue was resolved.

If you do not update the Apache HTTP client or change to the HTTP/1.1 protocol, you will receive errors such as: http2.H2StreamResetException: Connection terminated by the peer when trying to establish a connection with the Composable Commerce APIs.

How to check your Apache HTTP client version

If you use Gradle, you can check ./gradlew :your-project:dependencies for mentions of the following:

  • org.apache.httpcomponents.client5:httpclient5:{strictly [5.4.1,6.0[; prefer 5.4.1} -> 5.4.1
  • org.apache.httpcomponents.core5:httpcore5:5.3.1
  • org.apache.httpcomponents.core5:httpcore5-h2:5.3.1
  • org.apache.httpcomponents.core5:httpcore5:5.3.1

If you use Maven, you can check mvn dependency:tree for mentions of the following:

  • org.apache.httpcomponents.client5:httpclient5:jar:5.4.1:compile
  • org.apache.httpcomponents.core5:httpcore5:jar:5.3.1:compile
  • org.apache.httpcomponents.core5:httpcore5-h2:jar:5.3.1:compile