Skip to content

Commit

Permalink
chore(dependency): upgrade spring boot from 2.7.x to 3.0.x and spring…
Browse files Browse the repository at this point in the history
… cloud from 2021.0.x to 2022.0.x

Upgrading spring boot 2.7.18 to 3.0.13 and spring cloud 2021.0.8 to 2022.0.5.
Spring cloud release 2022.0.x is compatible with spring boot 3.0.x.
https://github.com/spring-cloud/spring-cloud-release/wiki/Supported-Versions#supported-releases

`WebMvcConfigurerAdapter` class has been deprecated in Springframework 5.0 and subsequently removed from Springframework 6.0. So, replacing it with `WebMvcConfigurer` interface for direct implementation.
https://docs.spring.io/spring-framework/docs/5.0.0.RELEASE/javadoc-api/org/springframework/web/servlet/config/annotation/WebMvcConfigurerAdapter.html

===============================================================================================

refactor(dependency): replace javax with jakarta and javax.inject with jakarta.inject during upgrade of spring boot 3.0.x

Spring Boot 3.0 has migrated from Java EE to Jakarta EE APIs for all dependencies.
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Release-Notes#third-party-library-upgrades
So, replacing the imports with `javax` to `jakarta`.

`javax.inject` that has been moved from present coordinate to `jakarta.inject`. So, updating the coordinates in igor-web module.
google/guice#1463
google/guice#1383
https://docs.openrewrite.org/recipes/java/migrate/jakarta/javaxinjectmigrationtojakartainject

===============================================================================================

refactor(jedis): migrate jedis from 3.x to 4.x during upgrade of spring boot 3.0.x

Spring boot upgrade from 2.7.18 to 3.0.13, upgrades `redis.clients:jedis` from 3.8.0 to 4.3.2.
So, migrating jedis from 3.x to 4.x by following the migration [document](https://github.com/redis/jedis/blob/master/docs/3to4.md)
And for further changelogs, please refer [here](https://github.com/redis/jedis/releases/tag/v4.0.0)

===============================================================================================

refactor(dependency): migrate rxjava to rxjava3 during upgrade of spring boot 3.0.x

Spring boot 3.x deprecated and removed rxjava, and rxjava3 has been added. So, update the dependency.
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Migration-Guide#rxjava

And refactored the code to accomodate changes required by rxjava2 and rxjava3 following the changelogs.
https://github.com/ReactiveX/RxJava/wiki/What's-different-in-2.0
https://github.com/ReactiveX/RxJava/wiki/What%27s-different-in-3.0

===============================================================================================

refactor(dependency): add explicit resilience4j-vavr dependency with spring boot upgrade to 3.x

`io.vavr` dependency has been removed from resilience4j:2.0.2.
https://github.com/resilience4j/resilience4j/releases/tag/v2.0.0
Resilience4j comes as transitive dependency of spring-cloud-dependencies.
https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies/2022.0.5
So, adding explicit dependency of `resilience4j-vavr`
As part of removing vavr dependency, resilience4j has made change that returns a Set instead of Seq when retryRegistry.getAllRetries() is called.
Link:
https://github.com/resilience4j/resilience4j/pull/1121/files#diff-f58a549005afee4cef1bdce1c1a5571f40fcede02013722f6bd05d221bde56eeR153
resilience4j/resilience4j#1537
  • Loading branch information
j-sandy committed Feb 17, 2025
1 parent 67a05a3 commit 8dd6581
Show file tree
Hide file tree
Showing 60 changed files with 119 additions and 108 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import redis.clients.jedis.Response;
import redis.clients.jedis.ScanParams;
import redis.clients.jedis.ScanResult;
import redis.clients.jedis.params.ScanParams;
import redis.clients.jedis.resps.ScanResult;

public abstract class AbstractRedisCache implements WriteableCache {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -393,7 +393,7 @@ void saturatePool() {
}

// First cull threads in the WORKING set that have been there too long (TIMEOUT time).
Set<String> oldKeys = jedis.zrangeByScore(WORKING_SET, "-inf", score(jedis, NOW));
Set<String> oldKeys = Set.copyOf(jedis.zrangeByScore(WORKING_SET, "-inf", score(jedis, NOW)));
for (String key : oldKeys) {
// Ignore result, since if this agent was released between now and the above jedis call, our
// work was done
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,10 @@
import com.netflix.spinnaker.cats.agent.ExecutionInstrumentation;
import com.netflix.spinnaker.cats.cluster.DefaultAgentIntervalProvider;
import com.netflix.spinnaker.cats.test.TestAgent;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
Expand Down Expand Up @@ -74,9 +73,9 @@ public void setUp() throws IllegalAccessException {
@Test
public void testRunningAgentsSemaphore() {
when(jedis.zrangeByScore(eq(ClusteredSortAgentScheduler.WORKING_SET), anyString(), anyString()))
.thenReturn(new HashSet<>());
.thenReturn(new ArrayList<>());
when(jedis.zrangeByScore(eq(ClusteredSortAgentScheduler.WAITING_SET), anyString(), anyString()))
.thenReturn(Set.of("testAgentType"));
.thenReturn(List.of("testAgentType"));

clusteredSortAgentScheduler.saturatePool();

Expand All @@ -92,9 +91,9 @@ public void testRunningAgentsSemaphoreWithException() throws InterruptedExceptio
CountDownLatch latch = new CountDownLatch(1);

when(jedis.zrangeByScore(eq(ClusteredSortAgentScheduler.WORKING_SET), anyString(), anyString()))
.thenReturn(new HashSet<>());
.thenReturn(new ArrayList<>());
when(jedis.zrangeByScore(eq(ClusteredSortAgentScheduler.WAITING_SET), anyString(), anyString()))
.thenReturn(Set.of(agent1.getAgentType(), agent2.getAgentType()));
.thenReturn(List.of(agent1.getAgentType(), agent2.getAgentType()));
when(jedis.scriptExists(anyString())).thenReturn(true);
clusteredSortAgentScheduler.schedule(agent1, agentExecution, executionInstrumentation);
clusteredSortAgentScheduler.schedule(agent2, agentExecution, executionInstrumentation);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import java.time.Duration
import java.util.Arrays
import java.util.concurrent.ConcurrentSkipListSet
import java.util.concurrent.atomic.AtomicInteger
import javax.annotation.PreDestroy
import jakarta.annotation.PreDestroy
import kotlin.contracts.ExperimentalContracts
import kotlin.contracts.contract
import kotlin.coroutines.CoroutineContext
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
import com.netflix.spinnaker.kork.web.exceptions.InvalidRequestException;
import groovy.util.logging.Slf4j;
import java.util.*;
import javax.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequest;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
import com.netflix.spinnaker.clouddriver.alicloud.controllers.AliCloudImageController.Image;
import com.netflix.spinnaker.clouddriver.alicloud.controllers.AliCloudImageController.LookupOptions;
import java.util.*;
import javax.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequest;
import org.junit.Before;
import org.junit.Test;
import org.mockito.invocation.InvocationOnMock;
Expand Down
4 changes: 2 additions & 2 deletions clouddriver-aws/clouddriver-aws.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ dependencies {
implementation project(":clouddriver-security")
implementation project(":clouddriver-saga")

implementation "javax.inject:javax.inject:1"
implementation "jakarta.inject:jakarta.inject-api:2.0.1"
implementation "com.amazonaws:aws-java-sdk"
implementation "com.github.ben-manes.caffeine:guava"
implementation "com.netflix.awsobjectmapper:awsobjectmapper"
Expand All @@ -42,7 +42,7 @@ dependencies {
implementation "io.spinnaker.kork:kork-retrofit"
implementation "io.spinnaker.kork:kork-web"
implementation "com.squareup.retrofit2:converter-jackson"
implementation "io.reactivex:rxjava"
implementation "io.reactivex.rxjava3:rxjava"
implementation "org.apache.httpcomponents:httpclient"
implementation "org.apache.httpcomponents:httpcore"
implementation "org.apache.groovy:groovy"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RequestMethod
import org.springframework.web.bind.annotation.RestController

import javax.servlet.http.HttpServletRequest
import jakarta.servlet.http.HttpServletRequest

import static com.netflix.spinnaker.clouddriver.core.provider.agent.Namespace.IMAGES
import static com.netflix.spinnaker.clouddriver.core.provider.agent.Namespace.NAMED_IMAGES
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@
import com.netflix.spinnaker.clouddriver.aws.model.AmazonCloudFormationStack;
import com.netflix.spinnaker.clouddriver.aws.provider.view.AmazonCloudFormationProvider;
import com.netflix.spinnaker.kork.web.exceptions.NotFoundException;
import jakarta.servlet.http.HttpServletRequest;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.AntPathMatcher;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
import com.netflix.spinnaker.kork.retrofit.exceptions.SpinnakerHttpException;
import com.netflix.spinnaker.kork.retrofit.exceptions.SpinnakerNetworkException;
import com.netflix.spinnaker.kork.retrofit.exceptions.SpinnakerServerException;
import jakarta.inject.Provider;
import java.io.IOException;
import java.time.Duration;
import java.util.Arrays;
Expand All @@ -55,7 +56,6 @@
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import javax.inject.Provider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@
import com.netflix.spinnaker.clouddriver.aws.security.AmazonClientProvider;
import com.netflix.spinnaker.clouddriver.aws.security.NetflixAmazonCredentials;
import com.netflix.spinnaker.credentials.CredentialsRepository;
import jakarta.annotation.PostConstruct;
import jakarta.inject.Provider;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.RejectedExecutionException;
import java.util.regex.Pattern;
import javax.annotation.PostConstruct;
import javax.inject.Provider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import com.netflix.spinnaker.kork.web.exceptions.InvalidRequestException
import spock.lang.Specification
import spock.lang.Unroll

import javax.servlet.http.HttpServletRequest
import jakarta.servlet.http.HttpServletRequest

import static com.netflix.spinnaker.clouddriver.core.provider.agent.Namespace.IMAGES
import static com.netflix.spinnaker.clouddriver.core.provider.agent.Namespace.NAMED_IMAGES
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ import spock.lang.Shared
import spock.lang.Specification
import spock.lang.Subject

import javax.inject.Provider
import jakarta.inject.Provider

class InstanceTerminationLifecycleWorkerSpec extends Specification {

Expand Down
1 change: 1 addition & 0 deletions clouddriver-cloudfoundry/clouddriver-cloudfoundry.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ dependencies {
implementation "com.squareup.retrofit2:converter-protobuf:2.8.1"
implementation "commons-io:commons-io"
implementation "io.github.resilience4j:resilience4j-retry"
implementation "io.github.resilience4j:resilience4j-vavr"
implementation "org.springframework.boot:spring-boot-actuator"
implementation "org.springframework.boot:spring-boot-starter-web"
implementation "org.springframework.cloud:spring-cloud-context"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
package com.netflix.spinnaker.clouddriver.cloudfoundry.client.retry;

import groovy.util.logging.Slf4j;
import io.github.resilience4j.retry.IntervalFunction;
import io.github.resilience4j.core.IntervalFunction;
import io.github.resilience4j.retry.Retry;
import io.github.resilience4j.retry.RetryConfig;
import java.io.IOException;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@
package com.netflix.spinnaker.clouddriver.config;

import com.netflix.spinnaker.kork.annotations.Alpha;
import jakarta.annotation.PostConstruct;
import java.io.File;
import java.io.IOException;
import java.nio.file.*;
import java.util.*;
import java.util.stream.Collectors;
import javax.annotation.PostConstruct;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ArrayUtils;
Expand Down
6 changes: 3 additions & 3 deletions clouddriver-core/clouddriver-core.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ dependencies {
// which appears to require consumers to have core groovy on the classpath
api "org.apache.groovy:groovy"

implementation "javax.inject:javax.inject:1"
implementation "javax.validation:validation-api"
implementation "jakarta.inject:jakarta.inject-api:2.0.1"
implementation "jakarta.validation:jakarta.validation-api"
implementation "net.logstash.logback:logstash-logback-encoder"
implementation "com.fasterxml.jackson.module:jackson-module-kotlin"
implementation "com.fasterxml.jackson.datatype:jackson-datatype-joda"
Expand All @@ -35,7 +35,7 @@ dependencies {
implementation "io.spinnaker.kork:kork-moniker"
implementation "io.spinnaker.kork:kork-secrets"
implementation "com.squareup.retrofit2:converter-jackson"
implementation "io.reactivex:rxjava"
implementation "io.reactivex.rxjava3:rxjava"
implementation "net.jodah:failsafe:1.0.4"
implementation "org.apache.groovy:groovy"
implementation "org.apache.groovy:groovy-templates"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ import org.slf4j.LoggerFactory
import org.springframework.security.core.Authentication
import org.springframework.security.core.context.SecurityContextHolder

import javax.annotation.PostConstruct
import jakarta.annotation.PostConstruct
import java.util.concurrent.Executors
import java.util.concurrent.ScheduledExecutorService
import java.util.concurrent.TimeUnit
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,11 +107,11 @@
import com.netflix.spinnaker.kork.dynamicconfig.DynamicConfigService;
import com.netflix.spinnaker.kork.jackson.ObjectMapperSubtypeConfigurer;
import com.netflix.spinnaker.kork.jedis.RedisClientDelegate;
import jakarta.inject.Provider;
import java.time.Clock;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import javax.inject.Provider;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,11 @@
import com.netflix.spinnaker.clouddriver.model.ClusterProvider;
import com.netflix.spinnaker.clouddriver.model.ServerGroup;
import com.netflix.spinnaker.kork.retrofit.Retrofit2SyncCall;
import jakarta.inject.Provider;
import java.util.*;
import java.util.function.Consumer;
import java.util.stream.Collectors;
import javax.annotation.Nonnull;
import javax.inject.Provider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,8 @@
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationContext;
import redis.clients.jedis.Response;
import redis.clients.jedis.ScanParams;
import redis.clients.jedis.ScanResult;
import redis.clients.jedis.params.ScanParams;
import redis.clients.jedis.resps.ScanResult;

public class CleanupPendingOnDemandCachesAgent implements RunnableAgent, CustomScheduledAgent {
private static final Logger log =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import com.netflix.spectator.api.Registry;
import com.netflix.spinnaker.clouddriver.requestqueue.RequestQueue;
import com.netflix.spinnaker.kork.dynamicconfig.DynamicConfigService;
import jakarta.annotation.PreDestroy;
import java.util.Collection;
import java.util.Queue;
import java.util.concurrent.BlockingQueue;
Expand All @@ -32,7 +33,6 @@
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import javax.annotation.PreDestroy;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@
import com.netflix.spinnaker.clouddriver.orchestration.AtomicOperationConverter;
import com.netflix.spinnaker.credentials.CredentialsRepository;
import com.netflix.spinnaker.kork.web.exceptions.InvalidRequestException;
import jakarta.validation.constraints.NotNull;
import java.util.stream.Collectors;
import javax.validation.constraints.NotNull;
import lombok.Getter;
import lombok.Setter;
import org.springframework.beans.factory.annotation.Autowired;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import retrofit2.mock.Calls
import spock.lang.Shared
import spock.lang.Specification

import javax.inject.Provider
import jakarta.inject.Provider

import static com.netflix.spinnaker.clouddriver.core.ProjectClustersService.ClusterModel

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@

import com.netflix.spinnaker.clouddriver.ecs.model.EcsDockerImage;
import com.netflix.spinnaker.clouddriver.ecs.provider.view.ImageRepositoryProvider;
import jakarta.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
Expand Down
2 changes: 1 addition & 1 deletion clouddriver-event/clouddriver-event.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ dependencies {
implementation "com.google.code.findbugs:jsr305"
implementation "org.springframework.boot:spring-boot-actuator"
implementation "com.fasterxml.jackson.module:jackson-module-kotlin"
implementation "javax.validation:validation-api"
implementation "jakarta.validation:jakarta.validation-api"
implementation "org.hibernate.validator:hibernate-validator"

testImplementation "cglib:cglib-nodep"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@ import com.netflix.spectator.api.Registry
import com.netflix.spinnaker.clouddriver.event.persistence.EventRepository
import com.netflix.spinnaker.clouddriver.event.persistence.InMemoryEventRepository
import java.time.Duration
import javax.validation.Constraint
import javax.validation.ConstraintValidator
import javax.validation.ConstraintValidatorContext
import javax.validation.constraints.Min
import jakarta.validation.Constraint
import jakarta.validation.ConstraintValidator
import jakarta.validation.ConstraintValidatorContext
import jakarta.validation.constraints.Min
import kotlin.reflect.KClass
import org.slf4j.LoggerFactory
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ package com.netflix.spinnaker.clouddriver.event.persistence

import com.netflix.spinnaker.clouddriver.event.Aggregate
import com.netflix.spinnaker.clouddriver.event.SpinnakerEvent
import javax.validation.constraints.Max
import javax.validation.constraints.Positive
import jakarta.validation.constraints.Max
import jakarta.validation.constraints.Positive

/**
* The [EventRepository] is responsible for reading and writing immutable event logs from a persistent store.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import com.netflix.spinnaker.clouddriver.google.batch.GoogleBatchRequest
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Component

import javax.annotation.PostConstruct
import jakarta.annotation.PostConstruct
import java.util.concurrent.TimeUnit

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import com.netflix.spinnaker.clouddriver.google.GoogleCloudProvider;
import com.netflix.spinnaker.clouddriver.google.cache.Keys;
import groovy.util.logging.Slf4j;
import jakarta.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collection;
Expand All @@ -42,7 +43,6 @@
import java.util.function.Predicate;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import com.google.api.services.compute.model.Image
import spock.lang.Specification
import spock.lang.Unroll

import javax.servlet.http.HttpServletRequest
import jakarta.servlet.http.HttpServletRequest

class GoogleNamedImageLookupControllerSpec extends Specification {
void "should extract tags from query parameters"() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,12 @@
import com.netflix.spinnaker.clouddriver.model.LoadBalancerInstance;
import com.netflix.spinnaker.moniker.Moniker;
import io.kubernetes.client.openapi.models.V1PodStatus;
import jakarta.validation.constraints.Null;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import javax.validation.constraints.Null;
import lombok.Value;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down
Loading

0 comments on commit 8dd6581

Please sign in to comment.