Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add configuration options to configure limits for Multipart Payloads in Rest Clients #46547

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

mzellho
Copy link
Contributor

@mzellho mzellho commented Feb 27, 2025

The RESTEasy Documentation states that the limits for the content of jakarta.ws.rs.core.EntityPart in Multipart requests can be configured using the configuration properties dev.resteasy.entity.memory.threshold (defaulting to 5 MB) and dev.resteasy.entity.file.threshold (defaulting to 50 MB) and that it is possible to define these properties as system properties, servlet context properties or a MicroProfile Config compatible value.

This PR introduces two new properties to io.quarkus.restclient.config.RestClientsConfig.RestClientMultipartConfig, allowing the user to specify these two limits as io.quarkus.runtime.configuration.MemorySize values via the Quarkus configuration, e.g.:

quarkus.rest-client.multipart.file-threshold=10M
quarkus.rest-client.multipart.memory-threshold=100M

quarkus.rest-client.foo.multipart.file-threshold=25M
quarkus.rest-client.foo.multipart.memory-threshold=250M

quarkus.rest-client.bar.multipart.file-threshold=50M
quarkus.rest-client.bar.multipart.memory-threshold=500M

@gsmet
Copy link
Member

gsmet commented Feb 27, 2025

Thanks for the PR! We will need to figure out if we can apply the same limits to the Quarkus REST Client (aka RESTEasy Reactive client).

@geoand
Copy link
Contributor

geoand commented Mar 4, 2025

Also, this now conflicts with main

@mzellho
Copy link
Contributor Author

mzellho commented Mar 4, 2025

@geoand thanks, i rebased it

…eshold settings for multipart requests of a client builder
Copy link

quarkus-bot bot commented Mar 7, 2025

Status for workflow Quarkus Documentation CI

This is the status report for running Quarkus Documentation CI on commit 7a130bf.

✅ The latest workflow run for the pull request has completed successfully.

It should be safe to merge provided you have a look at the other checks in the summary.

Warning

There are other workflow runs running, you probably need to wait for their status before merging.

Copy link

github-actions bot commented Mar 7, 2025

🎊 PR Preview 43c95ab has been successfully built and deployed to https://quarkus-pr-main-46547-preview.surge.sh/version/main/guides/

  • Images of blog posts older than 3 months are not available.
  • Newsletters older than 3 months are not available.

Copy link

quarkus-bot bot commented Mar 7, 2025

Status for workflow Quarkus CI

This is the status report for running Quarkus CI on commit 7a130bf.

Failing Jobs

Status Name Step Failures Logs Raw logs Build scan
JVM Tests - JDK 17 Build Failures Logs Raw logs 🔍
JVM Tests - JDK 21 Build Failures Logs Raw logs 🔍
JVM Tests - JDK 17 Windows Build Failures Logs Raw logs 🔍

Full information is available in the Build summary check run.
You can consult the Develocity build scans.

Failures

⚙️ JVM Tests - JDK 17 #

- Failing: extensions/resteasy-classic/resteasy-client/deployment extensions/resteasy-reactive/rest-client/deployment 
! Skipped: extensions/keycloak-admin-rest-client/deployment extensions/keycloak-admin-resteasy-client/deployment extensions/keycloak-authorization/deployment and 29 more

📦 extensions/resteasy-classic/resteasy-client/deployment

io.quarkus.restclient.configuration.GlobalConfigurationTest.checkGlobalConfigValues line 83 - History - More details - Source on GitHub

java.util.NoSuchElementException: No value present
	at java.base/java.util.Optional.get(Optional.java:143)
	at io.quarkus.restclient.configuration.GlobalConfigurationTest.checkGlobalConfigValues(GlobalConfigurationTest.java:83)
	at java.base/java.lang.reflect.Method.invoke(Method.java:569)
	at io.quarkus.test.QuarkusUnitTest.runExtensionMethod(QuarkusUnitTest.java:521)
	at io.quarkus.test.QuarkusUnitTest.interceptTestMethod(QuarkusUnitTest.java:435)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)

📦 extensions/resteasy-reactive/rest-client/deployment

io.quarkus.rest.client.reactive.ConfigurationTest.checkClientSpecificConfigs line 59 - History - More details - Source on GitHub

java.util.NoSuchElementException: No value present
	at java.base/java.util.Optional.get(Optional.java:143)
	at io.quarkus.rest.client.reactive.ConfigurationTest.verifyClientConfig(ConfigurationTest.java:95)
	at io.quarkus.rest.client.reactive.ConfigurationTest.checkClientSpecificConfigs(ConfigurationTest.java:59)
	at java.base/java.lang.reflect.Method.invoke(Method.java:569)
	at io.quarkus.test.QuarkusUnitTest.runExtensionMethod(QuarkusUnitTest.java:521)
	at io.quarkus.test.QuarkusUnitTest.interceptTestMethod(QuarkusUnitTest.java:435)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)

io.quarkus.rest.client.reactive.GlobalConfigurationTest.checkGlobalConfigValues line 82 - History - More details - Source on GitHub

java.util.NoSuchElementException: No value present
	at java.base/java.util.Optional.get(Optional.java:143)
	at io.quarkus.rest.client.reactive.GlobalConfigurationTest.checkGlobalConfigValues(GlobalConfigurationTest.java:82)
	at java.base/java.lang.reflect.Method.invoke(Method.java:569)
	at io.quarkus.test.QuarkusUnitTest.runExtensionMethod(QuarkusUnitTest.java:521)
	at io.quarkus.test.QuarkusUnitTest.interceptTestMethod(QuarkusUnitTest.java:435)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)

⚙️ JVM Tests - JDK 21 #

- Failing: extensions/resteasy-classic/resteasy-client/deployment extensions/resteasy-reactive/rest-client/deployment 
! Skipped: extensions/keycloak-admin-rest-client/deployment extensions/keycloak-admin-resteasy-client/deployment extensions/keycloak-authorization/deployment and 29 more

📦 extensions/resteasy-classic/resteasy-client/deployment

io.quarkus.restclient.configuration.GlobalConfigurationTest.checkGlobalConfigValues line 83 - History - More details - Source on GitHub

java.util.NoSuchElementException: No value present
	at java.base/java.util.Optional.get(Optional.java:143)
	at io.quarkus.restclient.configuration.GlobalConfigurationTest.checkGlobalConfigValues(GlobalConfigurationTest.java:83)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at io.quarkus.test.QuarkusUnitTest.runExtensionMethod(QuarkusUnitTest.java:521)
	at io.quarkus.test.QuarkusUnitTest.interceptTestMethod(QuarkusUnitTest.java:435)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)

📦 extensions/resteasy-reactive/rest-client/deployment

io.quarkus.rest.client.reactive.ConfigurationTest.checkClientSpecificConfigs line 59 - History - More details - Source on GitHub

java.util.NoSuchElementException: No value present
	at java.base/java.util.Optional.get(Optional.java:143)
	at io.quarkus.rest.client.reactive.ConfigurationTest.verifyClientConfig(ConfigurationTest.java:95)
	at io.quarkus.rest.client.reactive.ConfigurationTest.checkClientSpecificConfigs(ConfigurationTest.java:59)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at io.quarkus.test.QuarkusUnitTest.runExtensionMethod(QuarkusUnitTest.java:521)
	at io.quarkus.test.QuarkusUnitTest.interceptTestMethod(QuarkusUnitTest.java:435)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)

io.quarkus.rest.client.reactive.GlobalConfigurationTest.checkGlobalConfigValues line 82 - History - More details - Source on GitHub

java.util.NoSuchElementException: No value present
	at java.base/java.util.Optional.get(Optional.java:143)
	at io.quarkus.rest.client.reactive.GlobalConfigurationTest.checkGlobalConfigValues(GlobalConfigurationTest.java:82)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at io.quarkus.test.QuarkusUnitTest.runExtensionMethod(QuarkusUnitTest.java:521)
	at io.quarkus.test.QuarkusUnitTest.interceptTestMethod(QuarkusUnitTest.java:435)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)

⚙️ JVM Tests - JDK 17 Windows #

- Failing: extensions/resteasy-classic/resteasy-client/deployment extensions/resteasy-reactive/rest-client/deployment 
! Skipped: extensions/keycloak-admin-rest-client/deployment extensions/keycloak-admin-resteasy-client/deployment extensions/keycloak-authorization/deployment and 29 more

📦 extensions/resteasy-classic/resteasy-client/deployment

io.quarkus.restclient.configuration.GlobalConfigurationTest.checkGlobalConfigValues line 83 - History - More details - Source on GitHub

java.util.NoSuchElementException: No value present
	at java.base/java.util.Optional.get(Optional.java:143)
	at io.quarkus.restclient.configuration.GlobalConfigurationTest.checkGlobalConfigValues(GlobalConfigurationTest.java:83)
	at java.base/java.lang.reflect.Method.invoke(Method.java:569)
	at io.quarkus.test.QuarkusUnitTest.runExtensionMethod(QuarkusUnitTest.java:521)
	at io.quarkus.test.QuarkusUnitTest.interceptTestMethod(QuarkusUnitTest.java:435)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)

📦 extensions/resteasy-reactive/rest-client/deployment

io.quarkus.rest.client.reactive.ConfigurationTest.checkClientSpecificConfigs line 59 - History - More details - Source on GitHub

java.util.NoSuchElementException: No value present
	at java.base/java.util.Optional.get(Optional.java:143)
	at io.quarkus.rest.client.reactive.ConfigurationTest.verifyClientConfig(ConfigurationTest.java:95)
	at io.quarkus.rest.client.reactive.ConfigurationTest.checkClientSpecificConfigs(ConfigurationTest.java:59)
	at java.base/java.lang.reflect.Method.invoke(Method.java:569)
	at io.quarkus.test.QuarkusUnitTest.runExtensionMethod(QuarkusUnitTest.java:521)
	at io.quarkus.test.QuarkusUnitTest.interceptTestMethod(QuarkusUnitTest.java:435)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)

io.quarkus.rest.client.reactive.GlobalConfigurationTest.checkGlobalConfigValues line 82 - History - More details - Source on GitHub

java.util.NoSuchElementException: No value present
	at java.base/java.util.Optional.get(Optional.java:143)
	at io.quarkus.rest.client.reactive.GlobalConfigurationTest.checkGlobalConfigValues(GlobalConfigurationTest.java:82)
	at java.base/java.lang.reflect.Method.invoke(Method.java:569)
	at io.quarkus.test.QuarkusUnitTest.runExtensionMethod(QuarkusUnitTest.java:521)
	at io.quarkus.test.QuarkusUnitTest.interceptTestMethod(QuarkusUnitTest.java:435)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants