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

chore(deps): update plugin org.springframework.boot to v3.4.0 #400

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Aug 23, 2024

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
org.springframework.boot (source) 3.4.0-M1 -> 3.4.0 age adoption passing confidence

Release Notes

spring-projects/spring-boot (org.springframework.boot)

v3.4.0

v3.4.0-RC1

⭐ New Features

  • Update web services support to make use of ClientHttpRequestFactoryBuilder #​42886
  • Add requestFactorySettings method to RestTemplateBuilder #​42885
  • Rename RestTemplateBuilder 'set' methods #​42884
  • Unify default HTTP client redirect behavior and provide configuration option #​42879
  • Add Testcontainers and docker compose support for ClickHouse #​42837
  • Support ResourceLoader delegation from ApplicationResourceLoader #​42835
  • Add support for ClickHouse JDBC driver in enum DatabaseDriver #​42815
  • Add property to control export of OTLP logs #​42813
  • Remove remaining functionality that has been deprecated for removal in 3.4.0 #​42780
  • Add support for auto-configuring an indexed reactive session repository #​42604
  • Detect accidental misconfiguration of JsonMixin annotation #​42592
  • Support Reactor Netty in ClientHttpRequestFactories #​42587
  • Add property to specify Docker Compose flags #​42571
  • Rename OtlpAutoConfiguration to OtlpTracingAutoConfiguration #​42529
  • Add connect timeout properties for OTLP logging and tracing #​42528
  • Add management.otlp.logging.transport property #​42527
  • Use builder-jammy-java-tiny when using Buildpacks #​42508
  • Allow structure logging JSON to be customized #​42486
  • Raise the minimum supported version of Gradle 8 to 8.4 #​42481
  • Harmonize configuration properties that accept a comma-separated list of values #​42478
  • Allow common messages to be specified for message sources #​42472
  • Provide a configuration property for configuring Jetty's max form keys #​42448
  • Provide service connection support for Hazelcast #​42416
  • Make OtlpMeterRegistry virtual thread aware #​42407
  • Improve SpringEnvironmentLookup exception to hint that the log4j2 file must have '-spring' suffix #​42405
  • Allow auto-configured org.jooq.Configuration to be used to create a custom DSLContext #​42400
  • Add support for partitioned cookies #​42316
  • Deprecate support for injecting DynamicPropertyRegistry in favor of DynamicPropertyRegistrar beans #​41996
  • Warn when the user provides volume mounts with sensitive targets when building images #​41643
  • Shut down management server only once main server is shut down #​41002
  • Export SBOM contained in native-image #​40630
  • Introduce @BatchTaskExecutor to make it easier to configure Spring Batch to use a custom task executor #​40040
  • Restrict actuator access based on read/write/delete operations via configuration #​39046
  • Provide a way to further customize underlying ClientHttpRequestFactory components #​39035
  • Autoconfigure Undertow/XNIO for virtual thread support #​38819
  • Provide a mechanism for easily configuring global client HTTP request factory settings #​36266

🐞 Bug Fixes

  • Running mvn spring-boot:run with classpaths that exceeds Windows' length limits leaves temporary files #​42845
  • ClassNotFoundException is thrown when loading protocol resolvers from ForkJoinPool task #​42839
  • Report produced by ConditionReportApplicationContextFailureProcessor is always empty in a failed test #​42786
  • Case-insensitive comparisons may be adversely affected by the user's locale #​42736
  • server.tomcat.reject-illegal-header has been deprecated since 2.7.12 and should have been removed in 3.3.0 #​42731
  • DataSourceProperties#driverClassIsLoadable should not print a stacktrace to the error stream when it fails #​42684
  • Some @ControllerEndpoint and @RestControllerEndpoint infrastructure remains undeprecated #​42499
  • Auto-configuration for Rabbit Streams doesn't consider RabbitConnectionDetails #​42491
  • @ConditionalOn(Missing)Bean(annotation = …) infers the type to match when used on a @Bean method #​42484
  • ActiveMQ Artemis Connection Factory creation fails in native image #​42422
  • Duplicate meter binding when context contains multiple registries, none are primary, and one or more is a composite #​42398
  • Profiles are not active when the environment is prepared with an AOT-optimized application #​41562

📔 Documentation

  • Update HttpWebServiceMessageSenderBuilder javadoc #​42894
  • Document HttpClientAutoConfiguration updates #​42888
  • Update web services documentation following HTTP client changes #​42887
  • Move default value descriptions to "description" in logging property metadata #​42882
  • Document that embedded Tomcat must be at least 10.1.25 #​42869
  • Update documentation where we recommend a @Qualifier on one bean and @Primary on another to suggest a single bean with defaultCandidate=false #​42831
  • Fix systemd example configuration #​42806
  • Document that the exact behavior of the maximum HTTP request header size property is server-specific #​42790
  • Clarify why @Primary is recommended when defining your own ObjectMapper that replaces JacksonAutoConfiguration's #​42788
  • Polish javadoc for Binder#bindOrCreate(String, Class) #​42779
  • Document that Tomcat's maxQueueCapacity need to be greater than 0 #​42727
  • Remove stale link to jar-to-war getting started guide #​42722
  • Fix typos and formatting errors in documentation #​42721
  • Fix case used for examples in "Sanitize Sensitive Values" #​42703
  • Fix Regex javadoc links #​42686
  • Document how Map properties are bound from environment variables #​42673
  • Improve classpath index documentation for reproducible builds #​42644
  • Improve documentation for CycloneDX integration #​42629
  • Remove links to Spring Data GemFire #​42597
  • Documentation is missing MyCustomFormat.kt example #​42594
  • Link to Framework's docs about @Bean's autowireCandidate and defaultCandidate #​42586
  • Order alphabetically the sections in Common Application Properties #​42521
  • Improve the javadoc describing when @ConditionalOn(Missing)Bean will infer the type to match #​42506
  • Document how to handle MANIFEST.MF in native image with Maven #​42477
  • Fix links to Micrometer reference doc #​42473
  • Polish documentation #​42455
  • Polish javadoc of TestImage for consistency #​42426
  • Add Javadoc since for PrometheusScrapeEndpoint(PrometheusRegistry, Properties) #​42419
  • Remove note about graceful shutdown with Tomcat requiring 9.0.33 or later as we now require 10.1.x #​42383
  • Document support for Java 23 #​42381

🔨 Dependency Upgrades

❤️ Contributors

Thank you to all the contributors who worked on this release:

@​1328032567, @​IMWoo94, @​anthonydahanne, @​arefbehboudi, @​choi-hyeseong, @​eddumelendez, @​gkdis6, @​izeye, @​jeonghyeon00, @​mmoayyed, @​mturbe, @​ngocnhan-tran1996, @​nosan, @​qingbozhang, @​quaff, and @​woosung1223

v3.4.0-M3

⭐ New Features

  • Allow additional interfaces to be defined on AssertableApplicationContext and ApplicationContextRunners #​42369
  • Add spring.jms.listener.max-messages-per-task property for configuring max messages per task #​42341
  • Support @DependsOn, @Description, @Fallback, @Lazy, @Primary, and @Role on @ConfigurationProperties beans #​42289
  • Add Pulsar container factory customizers #​42182
  • Use @EnableConfigurationProperties to define the MessageSourceProperties bean #​42181
  • Add OpenTelemetry Logging service connection support from LgtmStackContainer and Docker Compose #​42174
  • Add transport selection to OtlpLoggingConnectionDetails #​42171
  • Add Graylog Extended Log Format (GELF) for structured logging #​42158
  • Add consistent scope support ConfigurationProperties beans #​42073
  • Apply spring.pulsar.consumer.subscription.name to auto-configured Pulsar listener container #​42067
  • Add support for configuring Pulsar listener container concurrency #​42062
  • Add support for configuring Pulsar client IO and listener threads #​42052
  • Add support for Log4j2's MultiFormatStringBuilderFormattable in structured logging #​42034
  • Use early static registration of EventPublishingContextWrapper in tests #​42005
  • Add configuration support for ExponentialHistogram in OTLP Registry #​41837
  • Support testcontainers-redis #​41450
  • Support Otlp Tracing's GRPC port from service connections #​41333
  • Add service connection from Opentelemetry Collector for Logging #​41324
  • Add auto-configuration for OTLP gRPC format when using tracing #​41213
  • Add a configuration property for Spring Data Web's serialization mode #​39797
  • Reinstate support for auto-configuring an embedded ActiveMQ broker #​38404
  • Enable graceful shutdown by default #​37495
  • Allow the configuration of active profiles in SpringApplication.Augmented #​36660
  • Reduce the need for @AutoConfigureTestDatabase(replace=NONE) when using a test-provided database #​35253
  • Remove setting BP_NATIVE_IMAGE environment variable when building images #​32884
  • Provide support for deprecated auto-configuration classes #​14860

🐞 Bug Fixes

  • management.health.db.ignore-routing-datasources=true has no effect when an AbstractRoutingDataSource has been wrapped #​42323
  • Missing details in OAuth2ClientProperties validation error message #​42280
  • FileNotFoundException from unused mis-configured SSL bundles #​42170
  • ZipkinHttpClientSender fails with "Failed to introspect Class" when spring-web is not on the classpath #​42160
  • @RestartScope can cause 'Recursive update' exceptions when used with container beans #​42108
  • JarLauncher fails to load large jar files #​42080
  • PropertiesMigrationListener wrongly reports property as deprecated when has group #​42072
  • Using an empty string MongoDB 'replica-set-name' property will result in ClusterType=REPLICA_SET #​42060
  • Binding spring.main.* properties doesn't work in a native image #​42038
  • Default Logback config uses deprecated "converterClass" attribute #​42008
  • Health endpoint additional paths are not available by default when Spring Security is used #​40962
  • Application yaml file is not processed after spring boot migration #​35403

📔 Documentation

  • Document that spring.jmx.enabled is not intended for third-party libraries #​42286
  • Update link to Log4j2 system properties #​42264
  • Links to GraphQL in the reference guide redirect to the root instead of specific sections #​42209
  • Syntax error in "Receive a message reactively section" of the reference guide #​42201
  • Deprecation reason for the autotime enabled, percentiles, and percentiles-historgram properties is confusing #​42194
  • Replace RFC 7807 by RFC 9457 in property documentation #​42191
  • Document that configuration property binding to a Kotlin value class with a default is not supported #​42177
  • Update documentation to reflect new no handler found exception behavior #​42168
  • Polish configuration property reference #​42166
  • Improve docker without buildpacks documentation #​42114
  • Fix StatsD link typo on Metrics documentation page #​42113
  • Remove link to “Converting a Spring Boot JAR Application to a WAR” as the guide is no longer available #​42112
  • Improve documentation in "Command-line Completion" #​42104
  • Kotlin code examples are missing from the Testing section #​42096
  • Fix incorrect command in Docker configuration for Colima #​42083
  • Add tip to correlation IDs documentation referencing spring.reactor.context-propagation=auto #​42054
  • Gradle Plugin AOT documentation has sample error #​42051
  • Add documentation for configuring OpenTelemetry SDK logs #​41825

🔨 Dependency Upgrades

❤️ Contributors

Thank you to all the contributors who worked on this release:

@​Alchemik, @​PiyalAhmed, @​abc5259, @​arefbehboudi, @​bazzi2548, @​eddumelendez, @​einarpehrson, @​famaridon, @​izeye, @​martinfrancois, @​mushroom528, @​ngocnhan-tran1996, @​nosan, @​onobc, @​quaff, @​slissner, @​timpeeters, and @​vpavic

v3.4.0-M2

⭐ New Features

  • Add value alias to @ConditionalOnAvailableEndpoint and migrate simple conditions #​41969
  • Auto-configure remote fields on BraveBaggageManager #​41884
  • Add support for Pulsar default tenant/namespace #​41851
  • Add TWENTY_THREE to JavaVersion enum #​41717
  • When virtual threads are enabled, configure Spring Integration's task scheduler to use them #​41695
  • Support multiple Docker Compose files #​41691
  • GraphQL should reply with HTTP 415 for unsupported content type #​41675
  • Automatically disable banner when using structured logging #​41659
  • Make properties for the application's version and PID available in the Environment #​41604
  • Update @ConditionalOnSingleCandidate to deal with fallback beans #​41580
  • Improve property support for SAML private keys and certificates #​41567
  • Add support for grafana/otel-lgtm and LgtmStackContainer from Service Connection #​41551
  • Add support for CNB platform API version 0.14 #​41549
  • Allow PemContent.of to work with untrimmed content #​41540
  • Provide auto-configuration for authenticating with Couchbase using a client certificate #​41520
  • Refine structured logging support #​41491
  • Shut down Reactor Schedulers for WAR deployments #​41548
  • Add SslInfoContributor and SslHealthIndicator #​41205
  • Rework Cloud Foundry actuator support behind a pluggable abstraction #​41135
  • Add platform option for image building #​40944
  • Introduce an ApplicationProperties class so that we can stop binding directly to SpringApplication #​40592
  • Auto-configure HandlerMethodArgumentResolvers on AnnotatedControllerConfigurer #​40393
  • Automatically activate health probes in Cloud Foundry environments #​39804
  • Support @Name with JavaBean-based configuration properties #​39452
  • Make DataSourceBuilder be able to derive driverClassName from a URL #​39376
  • Make it easier to define a bean in addition to an auto-configured bean of the same type #​22403
  • Add execution metadata to scheduled tasks actuator endpoint #​17585
  • Make it easier to use the auto-configured EntityManagerFactoryBuilder with Hibernate-specific properties #​15318
  • Perform failure analysis when a unique CacheManager bean cannot be found #​13348
  • Provide a callback for customising Freemarker variables #​8965
  • Add support for enum default values in configuration processor #​7562

🐞 Bug Fixes

  • When using WebFlux, server.error.include-binding-errors=ALWAYS no longer has an effect when the BindingResult exception is the cause of a ResponseStatusException #​41988
  • PropertiesLauncher does not respect classpath.idx when adding jars in BOOT-INF/lib to the classpath #​41971
  • Web extension for SBOM endpoint isn't available under /cloudfoundryapplication #​41891
  • Launcher's ClassLoader is no longer parallel capable #​41874
  • spring-boot-testcontainers causes unwanted container initialization during AOT processing #​41860
  • DynamicPropertyRegistry in @Bean-method fails with spring-boot-testcontainers dependency in classpath (3.4.0-M1) #​41839
  • ReactiveElasticsearchRepositoriesAutoConfiguration should back off when Reactor is not on the classpath #​41681
  • mvn spring-boot:build-image fails when 'classifier' is set to non-default value #​41662
  • Spring Boot Maven plugin AOT cannot handle Maven modules with module-info.java #​41648
  • Docker publishRegistry in Maven plugin configuration is validated when publish option is false #​41642
  • Some @ControllerEndpoint and @RestControllerEndpoint infrastructure remains undeprecated #​41620
  • Using Gradle's new file permission API is implemented in a way that prevents removal of the old API #​41608
  • Constructor binding of EnumMap fails due to missing key type #​41564
  • @ConditionalOnBean matches beans that are not autowire candidates resulting in UnsatisfiedDependencyException when an attempt is made to inject the bean #​41526
  • Configuration properties enabled in a child context are ignored if an ancestor context has already enabled the properties #​41487

📔 Documentation

  • Release type conditionals are not working in documentation #​41994
  • Improve documented logging property descriptions and default values #​41990
  • Explain that enabling virtual threads disables traditional thread pools #​41977
  • Harmonize code sample for MyUserHandler in reference documentation #​41950
  • Document when environment variable property mapping applies #​41946
  • Javadoc of slice test annotations should describe more accurately which components are considered #​41936
  • Fix duplicate words #​41921
  • Correct grammar in 'Running your Application with Maven' #​41869
  • Document the need to explicitly reset mock servers when using mock server customizers directly #​41850
  • Document more clearly that username and password are not used when spring.data.redis.url is set #​41749
  • Fix typo in Grafana Connection Details #​41705
  • Document that spring-boot:repackage should not be run from the command-line #​41696
  • Pulsar configuration does not have default value for several entries in the metadata #​41684
  • management.otlp.metrics.export.aggregation-temporality does not have a default value in the metadata #​41677
  • server.error.include-path does not have a default value in the metadata #​41673
  • management.newrelic.metrics.export.client-provider-type does not have a default value in the metadata #​41671
  • The effect upon Actuator of defining your own SecurityFilterChain is documented inconsistently #​41639
  • Update link to documentation for log4j-spring-boot #​41623
  • Add hint for new dependencies required for Flyway #​41595
  • Fix link to Flyway reference documentation #​41594
  • Document configuration property binding's support for using @Name to customize a property name #​41586
  • Document unsupported configuration properties in Freemarker WebFlux #​11199

🔨 Dependency Upgrades

❤️ Contributors

Thank you to all the contributors who worked on this release:

@​BenchmarkingBuffalo, @​PiyalAhmed, @​Rajin9601, @​cms04, [@


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Enabled.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

Summary by CodeRabbit

  • New Features

    • Introduced new configuration properties for HTTP client settings, including connection and read timeouts.
    • Added a new configuration class for RestClient.
  • Bug Fixes

    • Updated PostgreSQL image version for improved database features.
  • Documentation

    • Enhanced method contract by marking parameters as non-null.
  • Chores

    • Updated various plugin and dependency version numbers for stability and improvements.
    • Removed deprecated RestTemplateConfiguration class.
  • Tests

    • Updated PostgreSQL container image version for testing environment compatibility.

Copy link
Contributor

coderabbitai bot commented Aug 23, 2024

Walkthrough

The changes include an update to the PostgreSQL image version in the docker-compose.yml file from postgres:16.6-alpine to postgres:17.2-alpine. Additionally, the gradle.properties file has been modified to reflect updates in the Spring Boot version from 3.4.0-M1 to 3.4.0 and the SpringDoc OpenAPI version from 2.6.0 to 2.7.0. The Initializer class has replaced the RestTemplate with RestClient, and a new configuration class for RestClient has been added. Other changes include modifications to CORS settings and new HTTP client properties in the application.properties file.

Changes

File Change Summary
docker/docker-compose.yml Updated PostgreSQL image version from postgres:16.6-alpine to postgres:17.2-alpine.
gradle.properties Updated spring_boot_version from 3.4.0-M1 to 3.4.0 and springdoc_openapi_version from 2.6.0 to 2.7.0.
src/main/java/com/learning/mfscreener/config/Initializer.java Replaced RestTemplate with RestClient, updated constructor and method for HTTP requests.
src/main/java/com/learning/mfscreener/config/RestClientConfiguration.java Added new configuration class for RestClient.
src/main/java/com/learning/mfscreener/config/RestTemplateConfiguration.java Removed configuration class for RestTemplate.
src/main/java/com/learning/mfscreener/config/WebMvcConfig.java Updated addCorsMappings method to require a non-null CorsRegistry parameter.
src/main/resources/application.properties Added new properties for HTTP client settings: spring.http.client.factory, spring.http.client.read-timeout, and spring.http.client.connect-timeout.
src/test/java/com/learning/mfscreener/TestApplication.java Changed method of setting active Spring profile from system property to withAdditionalProfiles.
src/test/java/com/learning/mfscreener/common/SQLContainersConfig.java Updated PostgreSQL container image tag from 16.4-alpine to 17.2-alpine.

Possibly related PRs

  • feat : split testcontainers config for reusability #385: The changes in this PR also involve updates to the Docker configuration for PostgreSQL, specifically changing the image version, which is directly related to the main PR's update of the PostgreSQL image version in the docker-compose.yml.

Poem

In the garden of code, I hop with glee,
A new Spring Boot version, oh what a spree!
From M1 to M2, we leap with delight,
Fixes and features, our future is bright!
So let’s code away, with joy in our hearts,
For every new version, a fresh work of art! 🐇✨


🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 2361d4a and 4244edf.

Files selected for processing (1)
  • gradle.properties (1 hunks)
Files skipped from review due to trivial changes (1)
  • gradle.properties

@renovate renovate bot force-pushed the renovate/spring-boot branch from 4244edf to 84b4a78 Compare August 27, 2024 16:33
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 4244edf and 84b4a78.

Files selected for processing (1)
  • gradle.properties (1 hunks)
Files skipped from review as they are similar to previous changes (1)
  • gradle.properties

@renovate renovate bot force-pushed the renovate/spring-boot branch from 84b4a78 to d29baa3 Compare August 27, 2024 19:12
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 84b4a78 and d29baa3.

Files selected for processing (1)
  • gradle.properties (1 hunks)
Files skipped from review due to trivial changes (1)
  • gradle.properties

@renovate renovate bot force-pushed the renovate/spring-boot branch from 304e619 to 41c8fd9 Compare August 31, 2024 12:18
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between d29baa3 and 41c8fd9.

Files selected for processing (1)
  • gradle.properties (1 hunks)
Additional comments not posted (1)
gradle.properties (1)

11-11: Approve the version update.

The update from 3.4.0-M1 to 3.4.0-M2 in the spring_boot_version property is consistent with the PR's objectives to keep dependencies up-to-date. This change is expected to bring new features and bug fixes as outlined in the PR summary.

It's advisable to verify that this version update is compatible with other dependencies and configurations specified in the project. Consider running integration tests or checking the compatibility matrix provided by Spring Boot to ensure that there are no breaking changes affecting your project's specific setup.

@renovate renovate bot force-pushed the renovate/spring-boot branch from 41c8fd9 to 80f0e2b Compare September 1, 2024 02:13
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 41c8fd9 and 80f0e2b.

Files selected for processing (1)
  • gradle.properties (1 hunks)
Files skipped from review due to trivial changes (1)
  • gradle.properties

@renovate renovate bot force-pushed the renovate/spring-boot branch from 80f0e2b to 1f4ad81 Compare September 1, 2024 04:03
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 80f0e2b and 1f4ad81.

Files selected for processing (1)
  • gradle.properties (1 hunks)
Files skipped from review due to trivial changes (1)
  • gradle.properties

@renovate renovate bot force-pushed the renovate/spring-boot branch from 1f4ad81 to d6cd81f Compare September 1, 2024 19:22
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 1f4ad81 and d6cd81f.

Files selected for processing (1)
  • gradle.properties (1 hunks)
Files skipped from review due to trivial changes (1)
  • gradle.properties

@renovate renovate bot force-pushed the renovate/spring-boot branch from d6cd81f to 976b380 Compare September 19, 2024 17:29
@renovate renovate bot changed the title chore(deps): update plugin org.springframework.boot to v3.4.0-m2 chore(deps): update plugin org.springframework.boot to v3.4.0-m3 Sep 19, 2024
@renovate renovate bot force-pushed the renovate/spring-boot branch from 976b380 to ad078de Compare October 26, 2024 06:13
@renovate renovate bot changed the title chore(deps): update plugin org.springframework.boot to v3.4.0-m3 chore(deps): update plugin org.springframework.boot to v3.4.0-rc1 Oct 26, 2024
@renovate renovate bot force-pushed the renovate/spring-boot branch 2 times, most recently from de49faf to da74d41 Compare November 2, 2024 19:47
@renovate renovate bot force-pushed the renovate/spring-boot branch from 71265b0 to 20630f1 Compare December 8, 2024 06:12
@renovate renovate bot changed the title chore(deps): update plugin org.springframework.boot to v3.4.0-rc1 chore(deps): update plugin org.springframework.boot to v3.4.0 Dec 8, 2024
Copy link
Contributor Author

renovate bot commented Dec 8, 2024

Edited/Blocked Notification

Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.

You can manually request rebase by checking the rebase/retry box above.

⚠️ Warning: custom changes will be lost.

@rajadilipkolli
Copy link
Owner

@coderabbitai review

Copy link
Contributor

coderabbitai bot commented Dec 8, 2024

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@rajadilipkolli
Copy link
Owner

@coderabbitai full review

Copy link
Contributor

coderabbitai bot commented Dec 8, 2024

✅ Actions performed

Full review triggered.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Outside diff range and nitpick comments (2)
docker/docker-compose.yml (1)

4-4: Consider documenting the upgrade process

Since this is a major version upgrade, consider adding upgrade instructions to the README or documentation:

  • Required steps for existing deployments
  • Database backup procedures
  • Version-specific configuration changes

Would you like me to help create a documentation template for the upgrade process?

src/main/java/com/learning/mfscreener/config/Initializer.java (1)

53-57: Consider using UriComponentsBuilder for URL construction

While the RestClient usage is correct, consider using UriComponentsBuilder instead of URI.create() for better URL handling and encoding:

-            String allNAVs = restClient
-                    .get()
-                    .uri(URI.create(AppConstants.AMFI_WEBSITE_LINK))
-                    .retrieve()
-                    .body(String.class);
+            String allNAVs = restClient
+                    .get()
+                    .uri(UriComponentsBuilder.fromHttpUrl(AppConstants.AMFI_WEBSITE_LINK)
+                            .build()
+                            .toUri())
+                    .retrieve()
+                    .body(String.class);

This approach provides:

  • Proper URL encoding
  • Better handling of query parameters
  • Protection against malformed URLs
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between e8b66c1 and c7d1706.

📒 Files selected for processing (9)
  • docker/docker-compose.yml (1 hunks)
  • gradle.properties (1 hunks)
  • src/main/java/com/learning/mfscreener/config/Initializer.java (4 hunks)
  • src/main/java/com/learning/mfscreener/config/RestClientConfiguration.java (1 hunks)
  • src/main/java/com/learning/mfscreener/config/RestTemplateConfiguration.java (0 hunks)
  • src/main/java/com/learning/mfscreener/config/WebMvcConfig.java (1 hunks)
  • src/main/resources/application.properties (1 hunks)
  • src/test/java/com/learning/mfscreener/TestApplication.java (1 hunks)
  • src/test/java/com/learning/mfscreener/common/SQLContainersConfig.java (1 hunks)
💤 Files with no reviewable changes (1)
  • src/main/java/com/learning/mfscreener/config/RestTemplateConfiguration.java
🔇 Additional comments (10)
src/main/resources/application.properties (1)

65-68: HTTP client configuration looks good, but verify timeout values.

The new HTTP client configuration is well-structured and uses appropriate defaults. The JDK HTTP client factory is a good choice as it's lightweight and supports virtual threads.

However, please verify that the timeout values align with your application's requirements:

  • Read timeout (1 minute): Suitable for most operations, but consider if any long-running API calls exist
  • Connect timeout (30 seconds): This seems quite long for connection establishment

Let's verify if there are any long-running operations that might require adjusted timeouts:

Consider adding comments in the properties file to document:

  • The rationale for chosen timeout values
  • Any specific operations that influenced these values
  • Guidelines for adjusting these in different environments
# HttpClient
spring.http.client.factory=jdk
+# Read timeout for HTTP operations (adjust based on longest expected operation)
spring.http.client.read-timeout=PT1M
+# Connection timeout for HTTP operations (consider reducing in production)
spring.http.client.connect-timeout=PT30S
✅ Verification successful

Let me gather more information about HTTP client usage to better understand the timeout requirements.


Let me search for any HTTP client usage patterns and external API calls to better understand the timeout requirements.


Based on the findings, I can now generate the final response:

HTTP client timeouts are appropriate for the application's needs

The configured timeouts (1 minute read, 30 seconds connect) are well-suited for the application's usage pattern:

  • The main HTTP client usage is for fetching NAV data from AMFI portal (portal.amfiindia.com)
  • The operation is a simple GET request to download NAV history reports
  • No complex or long-running API operations were found

The current timeout values provide:

  • Sufficient buffer for network latency and server processing
  • Protection against hanging connections
  • Reasonable resource cleanup in case of failures
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for RestClient usage patterns and HTTP calls
ast-grep --pattern 'class $_ {
  $$$
  @$_($$$)
  $_ $_(RestClient $_, $$$) {
    $$$
  }
}'

# Look for existing timeout configurations or comments
rg -i "timeout|long.*running|slow.*operation" --type java

Length of output: 378


Script:

#!/bin/bash
# Search for HTTP client usage and external API calls
rg -A 5 -B 2 "RestClient|WebClient|HttpClient" --type java

# Look for configuration properties that might indicate external service dependencies
rg -i "url|endpoint|api|service" src/main/resources/

Length of output: 76318


Script:

#!/bin/bash
# Search for HTTP client usage patterns and external API calls
rg -A 10 "restClient\." --type java

# Look for any scheduled or background tasks that might make HTTP calls
rg -A 5 "@Scheduled|@Async" --type java

Length of output: 1515

src/test/java/com/learning/mfscreener/TestApplication.java (1)

13-13: Improved Spring profile configuration approach!

The change from using System.setProperty to withAdditionalProfiles is a better approach as it:

  • Aligns with Spring Boot 3.x best practices
  • Makes profile configuration more explicit and maintainable
  • Avoids system property side effects
src/test/java/com/learning/mfscreener/common/SQLContainersConfig.java (1)

17-17: Verify PostgreSQL 17.x compatibility

The upgrade from PostgreSQL 16.x to 17.x is a major version change that requires careful consideration:

  • PostgreSQL 17 introduces breaking changes
  • Database compatibility settings might need adjustment
  • Production environment synchronization should be verified

Let's check for any PostgreSQL-specific configurations in the codebase:

✅ Verification successful

PostgreSQL 17.2 upgrade appears safe to proceed

The verification shows:

  • The application uses PostgreSQL 17.2-alpine consistently in both test (SQLContainersConfig.java) and development environments (docker-compose.yml)
  • Database schema uses standard SQL features through Liquibase migrations without any PostgreSQL 17-specific features
  • Only PostgreSQL-specific customizations are basic data type mappings (text for strings and timestamptz for timestamps)
  • No usage of advanced features like stored procedures, triggers, or generated columns that might be affected by version changes
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for PostgreSQL-specific configurations and properties
echo "Searching for PostgreSQL configurations..."
rg -l "postgresql" --type properties --type yaml --type xml

# Search for potential compatibility issues in SQL files
echo "Checking SQL files for potential compatibility issues..."
rg -l "(?i)(generated always|procedures|triggers)" --type sql

Length of output: 525


Script:

#!/bin/bash
# Search for PostgreSQL-specific configurations with broader file patterns
echo "Searching for PostgreSQL configurations..."
rg -l "postgresql|postgres" -g "*.properties" -g "*.yml" -g "*.yaml" -g "*.xml"

# Search for SQL files first
echo "Looking for SQL files..."
fd -e sql

# Search for database configuration classes
echo "Searching for database configuration files..."
rg -l "DataSource|JdbcTemplate|EntityManager|PostgreSQL" -g "*.java"

Length of output: 1173


Script:

#!/bin/bash
# Check the content of docker-compose files and application config for PostgreSQL version
echo "Checking PostgreSQL version in docker-compose and application configs..."
rg "postgres:" docker/docker-compose*.yml src/main/resources/application*.yml

# Check database migration files for any PostgreSQL-specific features
echo "Checking database migration files for PostgreSQL features..."
cat src/main/resources/db/changelog/migration/*.xml

# Check if there are any PostgreSQL-specific tests or configurations
echo "Checking PostgreSQL-specific test configurations..."
cat src/test/java/com/learning/mfscreener/repository/SchemaValidationPostgresTest.java

Length of output: 20579

docker/docker-compose.yml (1)

4-4: Version alignment is good, but verify upgrade path

The PostgreSQL version update to 17.2-alpine aligns with the test container configuration, which is good for consistency. However, consider the following:

  1. Ensure a database backup before upgrading
  2. Verify data persistence across the major version upgrade
  3. Check if pgAdmin and other dependent services are compatible with PostgreSQL 17.x

Let's check for version compatibility between services:

✅ Verification successful

PostgreSQL upgrade is safe to proceed

The version upgrade from 16.6-alpine to 17.2-alpine is well-aligned across the environment:

  1. The test containers configuration explicitly uses the same version (17.2-alpine)
  2. pgAdmin4 is used without version constraints and will work with PostgreSQL 17.x
  3. The application's database configuration doesn't specify version constraints
  4. No specific version dependencies found in the codebase

Just remember to:

  • Back up your data before the upgrade
  • Follow PostgreSQL's official upgrade procedure from 16.x to 17.x
  • Test the application thoroughly after the upgrade
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check if there are any version constraints in application properties
echo "Checking for PostgreSQL version constraints..."
rg -l "postgresql.*version" --type properties --type yaml

# Look for potential service dependencies
echo "Checking for service dependencies..."
rg -l "postgresql.*dependency" --type gradle --type maven

Length of output: 370


Script:

#!/bin/bash
# Let's try a broader search for PostgreSQL-related configurations and dependencies
echo "Checking for PostgreSQL configurations..."
rg -l "postgres|postgresql" --type yaml --type json

# Look for potential version constraints or dependencies in any file
echo "Checking for version constraints and dependencies..."
rg -l "postgres|postgresql" 

# Check if pgAdmin is used in the project
echo "Checking for pgAdmin configurations..."
fd -t f "pgadmin|pg_admin" 

Length of output: 1261


Script:

#!/bin/bash
# Let's check the content of relevant files to understand version constraints and configurations
echo "Checking docker-compose configurations..."
cat docker/docker-compose.yml

echo "Checking pgAdmin configuration..."
cat docker/docker_pgadmin_servers.json

echo "Checking test container configuration..."
cat src/test/java/com/learning/mfscreener/common/SQLContainersConfig.java

echo "Checking application configuration..."
cat src/main/resources/application-localdocker.yml

Length of output: 3551

gradle.properties (2)

13-13: Verify SpringDoc OpenAPI compatibility

The SpringDoc OpenAPI upgrade to 2.7.0 should be verified for compatibility with Spring Boot 3.4.0.

✅ Verification successful

SpringDoc OpenAPI 2.7.0 is compatible with Spring Boot 3.4.0

The project is using SpringDoc OpenAPI starter for WebMVC UI version 2.7.0 with Spring Boot 3.4.0. This combination is compatible as SpringDoc OpenAPI 2.x series is specifically designed for Spring Boot 3.x, and version 2.7.0 supports all current Spring Boot 3.x releases including 3.4.0.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for OpenAPI configurations and usage
echo "Searching for OpenAPI configurations..."
rg "springdoc|openapi" --type java --type yaml --type properties

Length of output: 190


Script:

#!/bin/bash
# Check for OpenAPI configurations and usage with proper file extensions
echo "Searching for OpenAPI configurations..."
rg "springdoc|openapi" -g "*.java" -g "*.yml" -g "*.yaml" -g "*.properties"

# Check Spring Boot version in build files
echo -e "\nChecking Spring Boot version..."
rg "org\.springframework\.boot" -g "*.gradle" -g "*.properties"

Length of output: 1466


Script:

#!/bin/bash
# Check Spring Boot version in properties
echo "Checking Spring Boot version in properties..."
rg "spring_boot_version" -g "*.properties" -g "*.gradle"

# Check for OpenAPI dependencies in build files
echo -e "\nChecking OpenAPI dependencies..."
rg "springdoc-openapi" -g "build.gradle"

Length of output: 521


11-11: Verify Spring Boot 3.4.0 compatibility with project dependencies

The upgrade from milestone (3.4.0-M1) to stable release (3.4.0) is good. However, we should verify compatibility with other major dependencies.

✅ Verification successful

Let me gather more information about the Spring Boot version compatibility by checking the build configuration and dependency versions.


Based on the analysis of the build files, I can now generate the final response:

Spring Boot 3.4.0 upgrade appears compatible with project dependencies

The upgrade from 3.4.0-M1 to 3.4.0 is safe based on the following observations:

  • All Spring Boot starters will automatically align with the new version through the dependency management plugin
  • Key dependencies are compatible with Spring Boot 3.x:
    • JobRunr 7.3.2 explicitly supports Spring Boot 3
    • SpringDoc OpenAPI starter is using the webmvc-ui variant compatible with Spring Boot 3
    • MapStruct 1.6.3 and its Spring extensions are version-compatible
    • All test containers and testing libraries are recent versions supporting Spring Boot 3
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check build.gradle files for potential compatibility issues
echo "Searching for Spring-related dependencies..."
rg -l "org\.springframework" --type gradle

echo "\nSearching for Spring Boot starter dependencies..."
rg "spring-boot-starter" --type gradle

Length of output: 936


Script:

#!/bin/bash
# Check build.gradle for version declarations and plugin usage
echo "Checking build.gradle content..."
cat build.gradle

echo -e "\nChecking settings.gradle content..."
cat settings.gradle

Length of output: 6573

src/main/java/com/learning/mfscreener/config/WebMvcConfig.java (2)

20-20: Good addition of @nonnull annotation

Adding @nonnull improves null-safety and makes the contract more explicit.


Line range hint 21-27: Verify CORS security configuration

The CORS configuration is property-driven, which is good for flexibility. Let's verify the security settings in the properties file.

src/main/java/com/learning/mfscreener/config/Initializer.java (2)

13-13: LGTM! Import changes align with RestClient migration

The new imports correctly support the migration from RestTemplate to RestClient.

Also applies to: 25-25


34-34: Verify RestClient bean configuration

The migration from RestTemplate to RestClient looks good. However, ensure that the RestClient bean is properly configured with appropriate timeouts and other settings in the RestClientConfiguration class.

Also applies to: 40-41, 44-45

✅ Verification successful

RestClient configuration is minimal but present

The RestClient bean is configured in RestClientConfiguration.java, but it uses the default builder settings without explicit timeout configurations. While this is a valid configuration, you might want to consider adding timeout settings and other configurations based on your application's needs.

Locations that might need attention:

  • src/main/java/com/learning/mfscreener/config/RestClientConfiguration.java: Consider enhancing the RestClient configuration with appropriate timeout settings and other configurations if required for your use case.
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for RestClient configuration
ast-grep --pattern 'class RestClientConfiguration {
  $$$
  @Bean
  $$$
  RestClient $$$($$$) {
    $$$
  }
  $$$
}'

Length of output: 118


Script:

#!/bin/bash
# Let's try a broader search for RestClient configuration
rg -l "RestClient" --type java

# Then check content of any configuration files
fd ".*Config.*\.java$" --type f --exec cat {}

Length of output: 6934

Comment on lines +10 to +13
@Bean
RestClient restClient(RestClient.Builder restClientBuilder) {
return restClientBuilder.build();
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Consider adding essential RestClient customizations

While the basic configuration is good, consider adding these essential customizations for production readiness:

  • Connection timeout
  • Read timeout
  • Error handling
  • Logging interceptor
 @Bean
 RestClient restClient(RestClient.Builder restClientBuilder) {
-    return restClientBuilder.build();
+    return restClientBuilder
+        .requestInterceptor(new LoggingInterceptor())
+        .defaultHeader(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE)
+        .defaultStatusHandler(HttpStatusCode::isError,
+            (request, response) -> throw new CustomHttpException(response))
+        .build();
 }

Committable suggestion skipped: line range outside the PR's diff.

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

Successfully merging this pull request may close these issues.

1 participant