Skip to content

Conversation

@rahul-chekuri
Copy link
Contributor

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

Kork Details:
Unpinning okhttp and rest-assured, as spring boot 3.0.13 brings okhttp 4.10.0 and rest-assured 5.2.1.

While upgrading the spring boot and spring cloud, encountered the below errors during build process of kork-jedis module:

> Task :kork-jedis:compileJava FAILED
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/JedisClientDelegate.java:23: error: cannot find symbol
import redis.clients.jedis.ScanParams;
                          ^
  symbol:   class ScanParams
  location: package redis.clients.jedis
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/JedisClientDelegate.java:24: error: cannot find symbol
import redis.clients.jedis.ScanResult;
                          ^
  symbol:   class ScanResult
  location: package redis.clients.jedis
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/JedisClientDelegate.java:26: error: cannot find symbol
import redis.clients.jedis.commands.BinaryJedisCommands;
                                   ^
  symbol:   class BinaryJedisCommands
  location: package redis.clients.jedis.commands
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/JedisClientDelegate.java:28: error: cannot find symbol
import redis.clients.jedis.commands.MultiKeyCommands;
                                   ^
  symbol:   class MultiKeyCommands
  location: package redis.clients.jedis.commands
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/JedisClientDelegate.java:29: error: cannot find symbol
import redis.clients.jedis.commands.RedisPipeline;
                                   ^
  symbol:   class RedisPipeline
  location: package redis.clients.jedis.commands
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/JedisClientDelegate.java:30: error: cannot find symbol
import redis.clients.jedis.commands.ScriptingCommands;
                                   ^
  symbol:   class ScriptingCommands
  location: package redis.clients.jedis.commands
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/RedisClientDelegate.java:22: error: cannot find symbol
import redis.clients.jedis.commands.BinaryJedisCommands;
                                   ^
  symbol:   class BinaryJedisCommands
  location: package redis.clients.jedis.commands
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/RedisClientDelegate.java:24: error: cannot find symbol
import redis.clients.jedis.commands.MultiKeyCommands;
                                   ^
  symbol:   class MultiKeyCommands
  location: package redis.clients.jedis.commands
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/RedisClientDelegate.java:25: error: cannot find symbol
import redis.clients.jedis.commands.RedisPipeline;
                                   ^
  symbol:   class RedisPipeline
  location: package redis.clients.jedis.commands
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/RedisClientDelegate.java:26: error: cannot find symbol
import redis.clients.jedis.commands.ScriptingCommands;
                                   ^
  symbol:   class ScriptingCommands
  location: package redis.clients.jedis.commands
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/JedisClientDelegate.java:67: error: cannot find symbol
  public <R> R withMultiClient(Function<MultiKeyCommands, R> f) {
                                        ^
  symbol:   class MultiKeyCommands
  location: class JedisClientDelegate
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/JedisClientDelegate.java:74: error: cannot find symbol
  public void withMultiClient(Consumer<MultiKeyCommands> f) {
                                       ^
  symbol:   class MultiKeyCommands
  location: class JedisClientDelegate
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/JedisClientDelegate.java:81: error: cannot find symbol
  public <R> R withBinaryClient(Function<BinaryJedisCommands, R> f) {
                                         ^
  symbol:   class BinaryJedisCommands
  location: class JedisClientDelegate
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/JedisClientDelegate.java:88: error: cannot find symbol
  public void withBinaryClient(Consumer<BinaryJedisCommands> f) {
                                        ^
  symbol:   class BinaryJedisCommands
  location: class JedisClientDelegate
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/JedisClientDelegate.java:95: error: cannot find symbol
  public void withPipeline(Consumer<RedisPipeline> f) {
                                    ^
  symbol:   class RedisPipeline
  location: class JedisClientDelegate
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/JedisClientDelegate.java:102: error: cannot find symbol
  public <R> R withPipeline(Function<RedisPipeline, R> f) {
                                     ^
  symbol:   class RedisPipeline
  location: class JedisClientDelegate
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/JedisClientDelegate.java:109: error: cannot find symbol
  public void syncPipeline(RedisPipeline p) {
                           ^
  symbol:   class RedisPipeline
  location: class JedisClientDelegate
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/JedisClientDelegate.java:162: error: cannot find symbol
  public void withScriptingClient(Consumer<ScriptingCommands> f) {
                                           ^
  symbol:   class ScriptingCommands
  location: class JedisClientDelegate
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/JedisClientDelegate.java:169: error: cannot find symbol
  public <R> R withScriptingClient(Function<ScriptingCommands, R> f) {
                                            ^
  symbol:   class ScriptingCommands
  location: class JedisClientDelegate
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/RedisClientDelegate.java:41: error: cannot find symbol
  <R> R withMultiClient(Function<MultiKeyCommands, R> f);
                                 ^
  symbol:   class MultiKeyCommands
  location: interface RedisClientDelegate
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/RedisClientDelegate.java:43: error: cannot find symbol
  void withMultiClient(Consumer<MultiKeyCommands> f);
                                ^
  symbol:   class MultiKeyCommands
  location: interface RedisClientDelegate
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/RedisClientDelegate.java:45: error: cannot find symbol
  <R> R withBinaryClient(Function<BinaryJedisCommands, R> f);
                                  ^
  symbol:   class BinaryJedisCommands
  location: interface RedisClientDelegate
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/RedisClientDelegate.java:47: error: cannot find symbol
  void withBinaryClient(Consumer<BinaryJedisCommands> f);
                                 ^
  symbol:   class BinaryJedisCommands
  location: interface RedisClientDelegate
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/RedisClientDelegate.java:49: error: cannot find symbol
  void withPipeline(Consumer<RedisPipeline> f);
                             ^
  symbol:   class RedisPipeline
  location: interface RedisClientDelegate
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/RedisClientDelegate.java:51: error: cannot find symbol
  <R> R withPipeline(Function<RedisPipeline, R> f);
                              ^
  symbol:   class RedisPipeline
  location: interface RedisClientDelegate
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/RedisClientDelegate.java:53: error: cannot find symbol
  void syncPipeline(RedisPipeline p);
                    ^
  symbol:   class RedisPipeline
  location: interface RedisClientDelegate
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/RedisClientDelegate.java:69: error: cannot find symbol
  void withScriptingClient(Consumer<ScriptingCommands> f);
                                    ^
  symbol:   class ScriptingCommands
  location: interface RedisClientDelegate
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/RedisClientDelegate.java:71: error: cannot find symbol
  <R> R withScriptingClient(Function<ScriptingCommands, R> f);
                                     ^
  symbol:   class ScriptingCommands
  location: interface RedisClientDelegate
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:107: error: cannot find symbol
  public void setClient(Client client) {
                        ^
  symbol:   class Client
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:386: error: cannot find symbol
  public Response<Long> sort(String key, SortingParams sortingParameters, String dstkey) {
                                         ^
  symbol:   class SortingParams
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:392: error: cannot find symbol
  public Response<Long> sort(byte[] key, SortingParams sortingParameters, byte[] dstkey) {
                                         ^
  symbol:   class SortingParams
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:458: error: cannot find symbol
  public Response<Long> zinterstore(String dstkey, ZParams params, String... sets) {
                                                   ^
  symbol:   class ZParams
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:464: error: cannot find symbol
  public Response<Long> zinterstore(byte[] dstkey, ZParams params, byte[]... sets) {
                                                   ^
  symbol:   class ZParams
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:482: error: cannot find symbol
  public Response<Long> zunionstore(String dstkey, ZParams params, String... sets) {
                                                   ^
  symbol:   class ZParams
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:488: error: cannot find symbol
  public Response<Long> zunionstore(byte[] dstkey, ZParams params, byte[]... sets) {
                                                   ^
  symbol:   class ZParams
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:626: error: cannot find symbol
  public Response<Long> bitop(BitOP op, byte[] destKey, byte[]... srcKeys) {
                              ^
  symbol:   class BitOP
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:632: error: cannot find symbol
  public Response<Long> bitop(BitOP op, String destKey, String... srcKeys) {
                              ^
  symbol:   class BitOP
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:916: error: cannot find symbol
  public Response<Long> bitpos(String key, boolean value, BitPosParams params) {
                                                          ^
  symbol:   class BitPosParams
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:928: error: cannot find symbol
  public Response<Long> bitpos(byte[] key, boolean value, BitPosParams params) {
                                                          ^
  symbol:   class BitPosParams
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:1414: error: cannot find symbol
  public Response<List<String>> sort(String key, SortingParams sortingParameters) {
                                                 ^
  symbol:   class SortingParams
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:1420: error: cannot find symbol
  public Response<List<byte[]>> sort(byte[] key, SortingParams sortingParameters) {
                                                 ^
  symbol:   class SortingParams
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:1708: error: cannot find symbol
  public Response<Set<Tuple>> zrangeByScoreWithScores(String key, double min, double max) {
                      ^
  symbol:   class Tuple
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:1714: error: cannot find symbol
  public Response<Set<Tuple>> zrangeByScoreWithScores(String key, String min, String max) {
                      ^
  symbol:   class Tuple
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:1720: error: cannot find symbol
  public Response<Set<Tuple>> zrangeByScoreWithScores(byte[] key, double min, double max) {
                      ^
  symbol:   class Tuple
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:1726: error: cannot find symbol
  public Response<Set<Tuple>> zrangeByScoreWithScores(byte[] key, byte[] min, byte[] max) {
                      ^
  symbol:   class Tuple
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:1732: error: cannot find symbol
  public Response<Set<Tuple>> zrangeByScoreWithScores(
                      ^
  symbol:   class Tuple
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:1740: error: cannot find symbol
  public Response<Set<Tuple>> zrangeByScoreWithScores(
                      ^
  symbol:   class Tuple
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:1748: error: cannot find symbol
  public Response<Set<Tuple>> zrangeByScoreWithScores(
                      ^
  symbol:   class Tuple
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:1756: error: cannot find symbol
  public Response<Set<Tuple>> zrangeByScoreWithScores(
                      ^
  symbol:   class Tuple
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:1816: error: cannot find symbol
  public Response<Set<Tuple>> zrevrangeByScoreWithScores(String key, double max, double min) {
                      ^
  symbol:   class Tuple
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:1822: error: cannot find symbol
  public Response<Set<Tuple>> zrevrangeByScoreWithScores(String key, String max, String min) {
                      ^
  symbol:   class Tuple
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:1828: error: cannot find symbol
  public Response<Set<Tuple>> zrevrangeByScoreWithScores(byte[] key, double max, double min) {
                      ^
  symbol:   class Tuple
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:1834: error: cannot find symbol
  public Response<Set<Tuple>> zrevrangeByScoreWithScores(byte[] key, byte[] max, byte[] min) {
                      ^
  symbol:   class Tuple
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:1840: error: cannot find symbol
  public Response<Set<Tuple>> zrevrangeByScoreWithScores(
                      ^
  symbol:   class Tuple
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:1848: error: cannot find symbol
  public Response<Set<Tuple>> zrevrangeByScoreWithScores(
                      ^
  symbol:   class Tuple
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:1856: error: cannot find symbol
  public Response<Set<Tuple>> zrevrangeByScoreWithScores(
                      ^
  symbol:   class Tuple
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:1864: error: cannot find symbol
  public Response<Set<Tuple>> zrevrangeByScoreWithScores(
                      ^
  symbol:   class Tuple
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:1872: error: cannot find symbol
  public Response<Set<Tuple>> zrangeWithScores(String key, long start, long end) {
                      ^
  symbol:   class Tuple
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:1878: error: cannot find symbol
  public Response<Set<Tuple>> zrangeWithScores(byte[] key, long start, long end) {
                      ^
  symbol:   class Tuple
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:1956: error: cannot find symbol
  public Response<Set<Tuple>> zrevrangeWithScores(String key, long start, long end) {
                      ^
  symbol:   class Tuple
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:1962: error: cannot find symbol
  public Response<Set<Tuple>> zrevrangeWithScores(byte[] key, long start, long end) {
                      ^
  symbol:   class Tuple
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:2346: error: cannot find symbol
  public Response<Double> geodist(byte[] key, byte[] member1, byte[] member2, GeoUnit unit) {
                                                                              ^
  symbol:   class GeoUnit
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:2358: error: cannot find symbol
  public Response<Double> geodist(String key, String member1, String member2, GeoUnit unit) {
                                                                              ^
  symbol:   class GeoUnit
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:2389: error: cannot find symbol
      byte[] key, double longitude, double latitude, double radius, GeoUnit unit) {
                                                                    ^
  symbol:   class GeoUnit
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:2388: error: cannot find symbol
  public Response<List<GeoRadiusResponse>> georadius(
                       ^
  symbol:   class GeoRadiusResponse
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:2400: error: cannot find symbol
      GeoUnit unit,
      ^
  symbol:   class GeoUnit
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:2395: error: cannot find symbol
  public Response<List<GeoRadiusResponse>> georadius(
                       ^
  symbol:   class GeoRadiusResponse
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:2409: error: cannot find symbol
      String key, double longitude, double latitude, double radius, GeoUnit unit) {
                                                                    ^
  symbol:   class GeoUnit
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:2408: error: cannot find symbol
  public Response<List<GeoRadiusResponse>> georadius(
                       ^
  symbol:   class GeoRadiusResponse
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:2420: error: cannot find symbol
      GeoUnit unit,
      ^
  symbol:   class GeoUnit
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:2415: error: cannot find symbol
  public Response<List<GeoRadiusResponse>> georadius(
                       ^
  symbol:   class GeoRadiusResponse
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:2429: error: cannot find symbol
      byte[] key, byte[] member, double radius, GeoUnit unit) {
                                                ^
  symbol:   class GeoUnit
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:2428: error: cannot find symbol
  public Response<List<GeoRadiusResponse>> georadiusByMember(
                       ^
  symbol:   class GeoRadiusResponse
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:2436: error: cannot find symbol
      byte[] key, byte[] member, double radius, GeoUnit unit, GeoRadiusParam param) {
                                                ^
  symbol:   class GeoUnit
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:2435: error: cannot find symbol
  public Response<List<GeoRadiusResponse>> georadiusByMember(
                       ^
  symbol:   class GeoRadiusResponse
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:2444: error: cannot find symbol
      String key, String member, double radius, GeoUnit unit) {
                                                ^
  symbol:   class GeoUnit
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:2443: error: cannot find symbol
  public Response<List<GeoRadiusResponse>> georadiusByMember(
                       ^
  symbol:   class GeoRadiusResponse
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:2451: error: cannot find symbol
      String key, String member, double radius, GeoUnit unit, GeoRadiusParam param) {
                                                ^
  symbol:   class GeoUnit
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedPipeline.java:2450: error: cannot find symbol
  public Response<List<GeoRadiusResponse>> georadiusByMember(
                       ^
  symbol:   class GeoRadiusResponse
  location: class InstrumentedPipeline
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedJedis.java:33: error: cannot find symbol
import redis.clients.jedis.util.Slowlog;
                               ^
  symbol:   class Slowlog
  location: package redis.clients.jedis.util
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedJedis.java:599: error: cannot find symbol
  public Set<Tuple> zrangeWithScores(String key, long start, long end) {
             ^
  symbol:   class Tuple
  location: class InstrumentedJedis
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedJedis.java:605: error: cannot find symbol
  public Set<Tuple> zrevrangeWithScores(String key, long start, long end) {
             ^
  symbol:   class Tuple
  location: class InstrumentedJedis
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedJedis.java:635: error: cannot find symbol
  public List<String> sort(String key, SortingParams sortingParameters) {
                                       ^
  symbol:   class SortingParams
  location: class InstrumentedJedis
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedJedis.java:659: error: cannot find symbol
  public Long sort(String key, SortingParams sortingParameters, String dstkey) {
                               ^
  symbol:   class SortingParams
  location: class InstrumentedJedis
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedJedis.java:713: error: cannot find symbol
  public Set<Tuple> zrangeByScoreWithScores(String key, double min, double max) {
             ^
  symbol:   class Tuple
  location: class InstrumentedJedis
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedJedis.java:719: error: cannot find symbol
  public Set<Tuple> zrangeByScoreWithScores(String key, String min, String max) {
             ^
  symbol:   class Tuple
  location: class InstrumentedJedis
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedJedis.java:725: error: cannot find symbol
  public Set<Tuple> zrangeByScoreWithScores(
             ^
  symbol:   class Tuple
  location: class InstrumentedJedis
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedJedis.java:733: error: cannot find symbol
  public Set<Tuple> zrangeByScoreWithScores(
             ^
  symbol:   class Tuple
  location: class InstrumentedJedis
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedJedis.java:759: error: cannot find symbol
  public Set<Tuple> zrevrangeByScoreWithScores(String key, double max, double min) {
             ^
  symbol:   class Tuple
  location: class InstrumentedJedis
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedJedis.java:765: error: cannot find symbol
  public Set<Tuple> zrevrangeByScoreWithScores(
             ^
  symbol:   class Tuple
  location: class InstrumentedJedis
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedJedis.java:773: error: cannot find symbol
  public Set<Tuple> zrevrangeByScoreWithScores(
             ^
  symbol:   class Tuple
  location: class InstrumentedJedis
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedJedis.java:787: error: cannot find symbol
  public Set<Tuple> zrevrangeByScoreWithScores(String key, String max, String min) {
             ^
  symbol:   class Tuple
  location: class InstrumentedJedis
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedJedis.java:817: error: cannot find symbol
  public Long zunionstore(String dstkey, ZParams params, String... sets) {
                                         ^
  symbol:   class ZParams
  location: class InstrumentedJedis
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedJedis.java:829: error: cannot find symbol
  public Long zinterstore(String dstkey, ZParams params, String... sets) {
                                         ^
  symbol:   class ZParams
  location: class InstrumentedJedis
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedJedis.java:902: error: cannot find symbol
      final String key, final ListPosition where, final String pivot, final String value) {
                              ^
  symbol:   class ListPosition
  location: class InstrumentedJedis
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedJedis.java:951: error: cannot find symbol
  public Long bitpos(String key, boolean value, BitPosParams params) {
                                                ^
  symbol:   class BitPosParams
  location: class InstrumentedJedis
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedJedis.java:1044: error: cannot find symbol
  public List<Slowlog> slowlogGet() {
              ^
  symbol:   class Slowlog
  location: class InstrumentedJedis
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedJedis.java:1050: error: cannot find symbol
  public List<Slowlog> slowlogGet(long entries) {
              ^
  symbol:   class Slowlog
  location: class InstrumentedJedis
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedJedis.java:1086: error: cannot find symbol
  public Long bitop(BitOP op, String destKey, String... srcKeys) {
                    ^
  symbol:   class BitOP
  location: class InstrumentedJedis
/kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedJedis.java:1195: error: cannot find symbol
  public ScanResult<String> scan(String cursor) {
         ^
  symbol:   class ScanResult
  location: class InstrumentedJedis
100 errors
only showing the first 100 errors, of 166 total; use -Xmaxerrs if you would like to see more

The root cause of these errors is upgrade of redis.clients:jedis from 3.8.0 to 4.3.2 with spring boot upgrade from 2.x to 3.x. In order to fix these issues, migrated jedis from 3.x to 4.x by following the migration document And for further changelogs, please refer here

Removed the reflection logic to check the internalPool field from JedisPool object, as internalPool field has been removed from Jedis 4.3.2 and JedisPool is sub class of GenericObjectPool from Jedis redis/jedis#2521 onwards. So, refactoring the logic to check null value.

In Jedis 4.x, default constructor of Pipeline class has be removed in lieu of parameterised constructor to obtain Connection object either directly passing Connection or Jedis, as discussed redis/jedis#2693. So, updating the constructor by replacing the Pipeline with Jedis, and updated its usage in InstrumentedJedis.pipelined() method.

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

refactor(dependency): replace javax with jakarta and HandlerInterceptorAdapter with HandlerInterceptor 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.

Since org.springframework.web.servlet.handler.HandlerInterceptorAdapter has been deprecated in springframework 5.3.0. So, replacing it with org.springframework.web.servlet.HandlerInterceptor.
spring-projects/spring-framework#25147
terasolunaorg/terasoluna-gfw#991

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

refactor(exception): replace NestedIOException with IOException during upgrade of spring boot 3.0.x

While upgrading the spring boot to 3.0.13 and spring cloud 2022.0.5, encountered the below errors during build process of kork-crypto module:

> Task :kork-crypto:compileJava FAILED
/kork/kork-crypto/src/main/java/com/netflix/spinnaker/kork/crypto/NestedSecurityIOException.java:20: error: cannot find symbol
import org.springframework.core.NestedIOException;
                               ^
  symbol:   class NestedIOException
  location: package org.springframework.core
/kork/kork-crypto/src/main/java/com/netflix/spinnaker/kork/crypto/NestedSecurityIOException.java:22: error: cannot find symbol
public class NestedSecurityIOException extends NestedIOException {
                                               ^
  symbol: class NestedIOException
2 errors

The root cause is the removal of org.springframework.core.NestedIOException from springframework 6.0, as mentioned in the below links:
spring-projects/spring-framework#28198
spring-projects/spring-framework#28929
So, replacing org.springframework.core.NestedIOException with java.io.IOException.

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

refactor(eureka): removed deprecated client and refactor constructor code during upgrade of spring boot 3.0.x

While upgrading the spring boot to 3.0.13 and spring cloud 2022.0.5, encountered the below errors during build process of kork-eureka module:

> Task :kork-eureka:compileJava FAILED
/kork/kork-eureka/src/main/java/com/netflix/spinnaker/kork/eureka/EurekaAutoConfiguration.java:55: error: cannot find symbol
      DiscoveryClient.DiscoveryClientOptionalArgs optionalArgs) {
                     ^
  symbol:   class DiscoveryClientOptionalArgs
  location: class DiscoveryClient
/kork/kork-eureka/src/main/java/com/netflix/spinnaker/kork/eureka/EurekaAutoConfiguration.java:89: error: cannot find symbol
  DiscoveryClient.DiscoveryClientOptionalArgs optionalArgs(
                 ^
  symbol:   class DiscoveryClientOptionalArgs
  location: class DiscoveryClient
2 errors

Spring cloud upgrade from 2021.0.x to 2022.0.x also upgrades the eureka client transitively from 1.10.17 to 2.0.1
Eureka client 2.0.x is not backward compatible with 1.0.x. The constructor has also introduced new parameter. So, update the code accordingly.
https://github.com/Netflix/eureka/releases/tag/v2.0.0

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

refactor(telemetry): replace the deprecated method and constructor during upgrade of spring boot 3.0.x

While upgrading the spring boot to 3.0.13 and spring cloud 2022.0.5, encountered the below errors during build process of kork-telemetry module:

> Task :kork-telemetry:compileJava FAILED
/kork/kork-telemetry/src/main/java/com/netflix/spinnaker/kork/telemetry/caffeine/CaffeineStatsCounter.java:26: error: CaffeineStatsCounter is not abstract and does not override abstract method recordEviction(int,RemovalCause) in StatsCounter
public class CaffeineStatsCounter implements StatsCounter {
       ^
/kork/kork-telemetry/src/main/java/com/netflix/spinnaker/kork/telemetry/caffeine/CaffeineStatsCounter.java:73: error: method does not override or implement a method from a supertype
  @Override
  ^
/kork/kork-telemetry/src/main/java/com/netflix/spinnaker/kork/telemetry/caffeine/CaffeineStatsCounter.java:79: error: method does not override or implement a method from a supertype
  @Override
  ^
/kork/kork-telemetry/src/main/java/com/netflix/spinnaker/kork/telemetry/caffeine/CaffeineStatsCounter.java:87: error: CacheStats(long,long,long,long,long,long,long) has private access in CacheStats
    return new CacheStats(
           ^
4 errors

Spring boot upgrade brings the caffeine 3.1.8 transitively, that was 2.9.3 with spring boot 2.7.x.
In caffeine 3.x, StatsCounter.recordEviction method variation has been deprecated and CacheStats constructor. So, update the both of them.
https://github.com/ben-manes/caffeine/releases/tag/v3.0.0
https://javadoc.io/doc/com.github.ben-manes.caffeine/caffeine/latest/com.github.benmanes.caffeine/com/github/benmanes/caffeine/cache/stats/StatsCounter.html
https://javadoc.io/doc/com.github.ben-manes.caffeine/caffeine/2.9.3/com/github/benmanes/caffeine/cache/stats/StatsCounter.html

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

refactor(dependency): replace rxjava with rxjava3 during upgrade of spring boot 3.0.x

While upgrading the spring boot to 3.0.13 and spring cloud 2022.0.5, encountered the below errors during build process of kork-stackdriver module:

> Task :kork-stackdriver:compileJava FAILED
/kork/kork-stackdriver/src/main/java/com/netflix/spinnaker/config/StackdriverConfig.java:41: error: package rx does not exist
import rx.Observable;
         ^
/kork/kork-stackdriver/src/main/java/com/netflix/spinnaker/config/StackdriverConfig.java:42: error: package rx does not exist
import rx.Scheduler;
         ^
/kork/kork-stackdriver/src/main/java/com/netflix/spinnaker/config/StackdriverConfig.java:43: error: package rx.schedulers does not exist
import rx.schedulers.Schedulers;
                    ^
3 errors

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

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

refactor(spring-security): refactor spring security from 5.x to 6.x with spring boot upgrade to 3.x

While upgrading the spring boot to 3.0.13 and spring cloud 2022.0.5, encountered the below errors during build process of kork-actuator module:

> Task :kork-actuator:compileJava FAILED
/kork/kork-actuator/src/main/java/com/netflix/spinnaker/kork/actuator/ActuatorEndpointsConfiguration.java:26: error: cannot find symbol
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
                                                                       ^
  symbol:   class WebSecurityConfigurerAdapter
  location: package org.springframework.security.config.annotation.web.configuration
/kork/kork-actuator/src/main/java/com/netflix/spinnaker/kork/actuator/ActuatorEndpointsConfiguration.java:30: error: cannot find symbol
public class ActuatorEndpointsConfiguration extends WebSecurityConfigurerAdapter {
                                                    ^
  symbol: class WebSecurityConfigurerAdapter
2 errors

With spring boot upgrade, spring security also upgrades from 5.x to 6.x. As per the migration steps, WebSecurityConfigurerAdapter has been removed. So, it is not required to be extended, instead bean can be registered.

> Task :kork-actuator:compileJava FAILED
/kork/kork-actuator/src/main/java/com/netflix/spinnaker/kork/actuator/endpoint/ResolvedEnvironmentEndpoint.java:45: error: invalid method reference
        .ifPresent(sanitizer::setKeysToSanitize);
                   ^
  cannot find symbol
    symbol:   method setKeysToSanitize(T)
    location: class Sanitizer
  where T is a type-variable:
    T extends Object declared in class Optional
/kork/kork-actuator/src/main/java/com/netflix/spinnaker/kork/actuator/endpoint/ResolvedEnvironmentEndpoint.java:56: error: incompatible types: String cannot be converted to SanitizableData
                    return sanitizer.sanitize(property, environment.getProperty(property));
                                              ^
Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output
2 errors

In spring boot 3, changes are introduced in sanitization of actuator endpoints.
Default Sanitizer implementation has been removed and replaced with SanitizingFunction.
spring-projects/spring-boot#33448
spring-projects/spring-boot#39243
spring-projects/spring-boot#32156
So, added the ActuatorSanitizingFunction class to provide the default implementation of SanitizingFunction.

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

refactor(dependency): replace javax.inject with jakarta.inject and upgrade wiremock as part of spring boot 3.x upgrade

While upgrading the spring boot to 3.0.13 and spring cloud 2022.0.5, encountered the below errors:

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'javax.inject.Provider<com.netflix.spectator.api.Registry>' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
	at app//org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1824)
	at app//org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1383)
	at app//org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1337)
	at app//org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:910)
	at app//org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:788)
	... 175 more
The root cause is use of javax.inject that has been moved from present coordinate to jakarta.inject. So, updating the coordinates in kork-eureka, kork-plugins and kork-web modules.
https://github.com/google/guice/issues/1463
https://github.com/google/guice/issues/1383
https://docs.openrewrite.org/recipes/java/migrate/jakarta/javaxinjectmigrationtojakartainject

javax/servlet/DispatcherType
java.lang.NoClassDefFoundError: javax/servlet/DispatcherType
	at com.github.tomakehurst.wiremock.jetty9.JettyHttpServerFactory.buildHttpServer(JettyHttpServerFactory.java:31)
	at com.github.tomakehurst.wiremock.WireMockServer.<init>(WireMockServer.java:74)
	at com.netflix.spinnaker.kork.plugins.sdk.httpclient.Ok3HttpClientIntegrationTest$Fixture.<init>(Ok3HttpClientIntegrationTest.kt:78)
	at com.netflix.spinnaker.kork.plugins.sdk.httpclient.Ok3HttpClientIntegrationTest$test$1$1.invoke(Ok3HttpClientIntegrationTest.kt:40)
	at com.netflix.spinnaker.kork.plugins.sdk.httpclient.Ok3HttpClientIntegrationTest$test$1$1.invoke(Ok3HttpClientIntegrationTest.kt:40)
	at dev.minutest.TestContextBuilder$fixture$1.invoke(ContextBuilder.kt:48)

In order to fix this issue, upgrading wiremock dependency to 3.0.4 and updating its coordinates.
Wiremock 3.0.0 onwards 2 major breaking changes are introduced:

support for Java 17, dropping Java 8 support
Change the Maven repository groupID to org.wiremock
https://github.com/wiremock/wiremock/releases?page=3

refactor(test): replace spring.profiles with spring.config.activate.on-profile as part of spring boot 3.x upgrade

While upgrading the spring boot to 3.0.13 and spring cloud 2022.0.5, encountered the below error:

Caused by: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property 'spring.profiles' imported from location 'class path resource [application-test.yml]' is invalid and should be replaced with 'spring.config.activate.on-profile' [origin: class path resource [application-test.yml] - 38:13]
	at app//org.springframework.boot.context.config.InvalidConfigDataPropertyException.lambda$throwIfPropertyFound$0(InvalidConfigDataPropertyException.java:113)
	at [email protected]/java.util.LinkedHashMap.forEach(LinkedHashMap.java:721)
	at [email protected]/java.util.Collections$UnmodifiableMap.forEach(Collections.java:1553)
	at app//org.springframework.boot.context.config.InvalidConfigDataPropertyException.throwIfPropertyFound(InvalidConfigDataPropertyException.java:109)
	at app//org.springframework.boot.context.config.ConfigDataEnvironment.checkForInvalidProperties(ConfigDataEnvironment.java:364)

In order to fix this issue, replacing spring.profiles with spring.config.activate.on-profile in application-test.yml

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

refactor(test): refactor the method getType() to getTableType() as part of spring boot 3.x upgrade

> Task :kork-sql-test:compileJava FAILED
/kork/kork-sql-test/src/main/java/com/netflix/spinnaker/kork/sql/test/SqlTestUtil.java:278: error: cannot find symbol
                table.getType().isTable()
                               ^
  symbol:   method isTable()
  location: class Class<CAP#1>
  where CAP#1 is a fresh type-variable:
    CAP#1 extends Record from capture of ?
1 error

The root cause is the change in method of org.jooq.Table class upgrading jooq transitively from 3.14.16 to 3.17.16 while spring boot 2.7.18 to 3.0.13 upgrade.
In order to fix this issue refactoring the getTableType() method.

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

refactor(test): upgrade spockframework to fix issue during upgrade of spring security from 5.x to 6.x and ninja-squad upgrade with spring boot upgrade to 3.x

While upgrading spring security from 5.x to 6.x, encountered the below error:

Cannot invoke method getForEntity() on null object
java.lang.NullPointerException: Cannot invoke method getForEntity() on null object
	at com.netflix.spinnaker.kork.web.exceptions.GenericExceptionHandlersMvcSpec.ok request(GenericExceptionHandlersMvcSpec.groovy:42)


Cannot invoke method getForEntity() on null object
java.lang.NullPointerException: Cannot invoke method getForEntity() on null object
	at com.netflix.spinnaker.kork.web.exceptions.GenericExceptionHandlersMvcSpec.not found(GenericExceptionHandlersMvcSpec.groovy:50)


Cannot invoke method postForEntity() on null object
java.lang.NullPointerException: Cannot invoke method postForEntity() on null object
	at com.netflix.spinnaker.kork.web.exceptions.GenericExceptionHandlersMvcSpec.method not supported(GenericExceptionHandlersMvcSpec.groovy:58)


Cannot invoke method getForEntity() on null object
java.lang.NullPointerException: Cannot invoke method getForEntity() on null object
	at com.netflix.spinnaker.kork.web.exceptions.GenericExceptionHandlersMvcSpec.missing request param(GenericExceptionHandlersMvcSpec.groovy:66)


Cannot invoke method getForEntity() on null object
java.lang.NullPointerException: Cannot invoke method getForEntity() on null object
	at com.netflix.spinnaker.kork.web.exceptions.GenericExceptionHandlersMvcSpec.should map IllegalArgumentException as 400(GenericExceptionHandlersMvcSpec.groovy:74)


Cannot invoke method getForEntity() on null object
java.lang.NullPointerException: Cannot invoke method getForEntity() on null object
	at com.netflix.spinnaker.kork.web.exceptions.GenericExceptionHandlersMvcSpec.should handle IllegalStateException(GenericExceptionHandlersMvcSpec.groovy:82)

The root cause of this issue is a incompatibility bug in spockframework 2.3-groovy-4.0 version.
In order to fix this issue upgraded the spockframe to 2.4-M1-groovy-4.0
spring-projects/spring-boot#33376
https://spockframework.org/spock/docs/2.4-M1/release_notes.html#_2_4_m1_2022_11_30

Also encountered below error during test execution of kork-plugins-tck module:

java.lang.NoClassDefFoundError: org/springframework/beans/factory/config/InstantiationAwareBeanPostProcessorAdapter
	at java.base/java.lang.ClassLoader.defineClass1(Native Method)
	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1012)
	at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
	at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862)
	at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760)
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
	at com.ninjasquad.springmockk.MockkContextCustomizer.customizeContext(MockkContextCustomizer.kt:21)
	at org.springframework.boot.test.context.SpringBootContextLoader$ContextCustomizerAdapter.initialize(SpringBootContextLoader.java:435)
	at org.springframework.boot.SpringApplication.applyInitializers(SpringApplication.java:606)
	at org.springframework.boot.SpringApplication.prepareContext(SpringApplication.java:386)

In order to fix this issue, upgraded the ninja-squad dependency from 2.0.3 to 4.0.2 for the compatibility with Spring boot 3.x and Java 17+.
https://github.com/Ninja-Squad/springmockk?tab=readme-ov-file#versions-compatibility

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

@rahul-chekuri rahul-chekuri force-pushed the sb-3-0-13 branch 10 times, most recently from 93b5063 to 761a75f Compare May 6, 2025 06:57
@rahul-chekuri rahul-chekuri force-pushed the sb-3-0-13 branch 3 times, most recently from 56ae55f to 84e94e6 Compare May 11, 2025 16:25
@rahul-chekuri rahul-chekuri force-pushed the sb-3-0-13 branch 3 times, most recently from e0e0727 to c0cc3da Compare May 26, 2025 11:55
@rahul-chekuri rahul-chekuri force-pushed the sb-3-0-13 branch 4 times, most recently from 68906b6 to 1111ae6 Compare June 13, 2025 07:33
@rahul-chekuri rahul-chekuri force-pushed the sb-3-0-13 branch 5 times, most recently from 7e6849d to 9292e65 Compare July 6, 2025 06:48
@rahul-chekuri rahul-chekuri force-pushed the sb-3-0-13 branch 2 times, most recently from 451dab4 to 4282a7b Compare July 8, 2025 08:50
@rahul-chekuri rahul-chekuri force-pushed the sb-3-0-13 branch 2 times, most recently from 3593138 to b642fac Compare July 26, 2025 02:44
…pends on version coming from springboot 3.0.
 Since springboot 3.0, ResponseEntity#getStatusCode returns HttpStatusCode instead of HttpStatus.
Seeing the issue due the commit: bcc4539
StackTrace:
```
ClouddriverServiceTest > testBaseUrlWithMultipleSlashes() FAILED
    org.opentest4j.AssertionFailedError: Unexpected exception thrown: com.netflix.spinnaker.kork.retrofit.exceptions.SpinnakerHttpException: Status: 404, Method: PUT, URL: http://localhost:42625/api/artifacts/fetch, Message: Not Found
        at app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:152)
        at app//org.junit.jupiter.api.AssertDoesNotThrow.createAssertionFailedError(AssertDoesNotThrow.java:84)
        at app//org.junit.jupiter.api.AssertDoesNotThrow.assertDoesNotThrow(AssertDoesNotThrow.java:75)
        at app//org.junit.jupiter.api.AssertDoesNotThrow.assertDoesNotThrow(AssertDoesNotThrow.java:58)
        at app//org.junit.jupiter.api.Assertions.assertDoesNotThrow(Assertions.java:3196)
        at app//com.netflix.spinnaker.rosco.services.ClouddriverServiceTest.testBaseUrlWithMultipleSlashes(ClouddriverServiceTest.java:93)
==================================================

V2BakeryControllerWithClouddriverServiceTest > testRequestHeadersToClouddriver() FAILED
    java.lang.AssertionError: Status expected:<200> but was:<404>

        at org.springframework.test.util.AssertionErrors.fail(AssertionErrors.java:59)
38 tests completed, 1 failed
        at org.springframework.test.util.AssertionErrors.assertEquals(AssertionErrors.java:122)
        at org.springframework.test.web.servlet.result.StatusResultMatchers.lambda$matcher$9(StatusResultMatchers.java:637)
        at org.springframework.test.web.servlet.MockMvc$1.andExpect(MockMvc.java:214)
        at com.netflix.spinnaker.rosco.controllers.V2BakeryControllerWithClouddriverServiceTest.testRequestHeadersToClouddriver(V2BakeryControllerWithClouddriverServiceTest.java:149)
```
Seeing the issue due the commit: bcc4539
StackTrace:
```
StandaloneContainerTest > testHelmOverridesPriority(HelmTemplateValues, boolean, TemplateRenderer, HelmTemplateValues, boolean, boolean) > com.netflix.spinnaker.rosco.StandaloneContainerTest.testHelmOverridesPriority(HelmTemplateValues, boolean, TemplateRenderer, HelmTemplateValues, boolean, boolean)[28] FAILED
    org.opentest4j.AssertionFailedError:
    expected: 200
     but was: 404
        at jdk.internal.reflect.GeneratedConstructorAccessor35.newInstance(Unknown Source)
        at [email protected]/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at [email protected]/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
        at app//com.netflix.spinnaker.rosco.StandaloneContainerTest.testHelmOverridesPriority(StandaloneContainerTest.java:716)
```
As part of springboot 3.0 upgrade,

Spring Framework 6 changed how NestedRuntimeException (and subclasses like
ResourceAccessException) format their messages, omitting the nested exception
details in getMessage(). This change explicitly appends those details to provide
better context in case of failures.
…pring boot 3.0.x

While upgrading the spring boot to 3.0.13 and spring cloud 2022.0.5, encountered the below errors during build process of orca:
```
spinnaker/orca/orca-web/src/test/java/com/netflix/spinnaker/orca/controllers/ProjectControllerTest.java:27: error: package rx does not exist

import rx.Observable;
> Task :orca:orca-web:compileTestJava FAILED
         ^
spinnaker/orca/orca-web/src/test/java/com/netflix/spinnaker/orca/controllers/ProjectControllerTest.java:96: error: cannot find symbol
        .thenReturn(Observable.from(Collections.singletonList(execution1)));
                    ^
  symbol:   variable Observable
  location: class ProjectControllerTest
spinnaker/orca/orca-web/src/test/java/com/netflix/spinnaker/orca/controllers/ProjectControllerTest.java:98: error: cannot find symbol
        .thenReturn(Observable.from(Collections.singletonList(execution2)));
                    ^
  symbol:   variable Observable
  location: class ProjectControllerTest
3 errors
```
Spring boot 3.x deprecated and removed rxjava, and rxjava3 has been added. So, update the imports.
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Migration-Guide#rxjava
Reintroduces a lightweight replacement for org.springframework.util.SocketUtils,
which was deprecated in Spring Framework 5.3.x and removed in 6.0.
This utility provides a way to find available TCP ports on localhost without
depending on spring-test (TestSocketUtils).
Used in places where dynamic port allocation is required (e.g., GoogleProviderUtils).
…eprecated as of spring framework 6.0, in favor of standard ServletException.

Error:
```
Expected exception of type 'org.springframework.web.util.NestedServletException', but got 'jakarta.servlet.ServletException'
Expected :class org.springframework.web.util.NestedServletException
Actual   :jakarta.servlet.ServletException: Request processing failed: com.netflix.spinnaker.kork.retrofit.exceptions.SpinnakerHttpException: Status: 500, Method: GET, URL: http://localhost/, Message: arbitrary message
<Click to see difference>

Expected exception of type 'org.springframework.web.util.NestedServletException', but got 'jakarta.servlet.ServletException'
	at org.spockframework.lang.SpecInternals.checkExceptionThrown(SpecInternals.java:84)
	at org.spockframework.lang.SpecInternals.thrownImpl(SpecInternals.java:71)
	at com.netflix.spinnaker.orca.controllers.TaskControllerSpec./applications/{application}/pipelines/search with a given pipeline name when front50 responds with 500(TaskControllerSpec.groovy:678)
Caused by: jakarta.servlet.ServletException: Request processing failed: com.netflix.spinnaker.kork.retrofit.exceptions.SpinnakerHttpException: Status: 500, Method: GET, URL: http://localhost/, Message: arbitrary message
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1022)
	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903)
	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:527)
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)
	at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:72)
	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:614)
	at org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:165)
	at org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java:132)
	at org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:201)
	at com.netflix.spinnaker.orca.controllers.TaskControllerSpec./applications/{application}/pipelines/search with a given pipeline name when front50 responds with 500(TaskControllerSpec.groovy:671)
Caused by: com.netflix.spinnaker.kork.retrofit.exceptions.SpinnakerHttpException: Status: 500, Method: GET, URL: http://localhost/, Message: arbitrary message
	at com.netflix.spinnaker.orca.controllers.TaskControllerSpec.makeSpinnakerHttpException(TaskControllerSpec.groovy:1266)
	at com.netflix.spinnaker.orca.controllers.TaskControllerSpec./applications/{application}/pipelines/search with a given pipeline name when front50 responds with 500(TaskControllerSpec.groovy:668)
```

 Reference:
https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/util/NestedServletException.html
…and add a comment clarifying why it is required.
Replaced usage of `new Constructor()` with `new Constructor(Object.class)` since the no-arg
constructor is deprecated in SnakeYAML 1.33. The class-based constructor remains supported
and preserves the original behavior in tests.
@dbyron-sf dbyron-sf merged commit eb576df into spinnaker:main Nov 10, 2025
39 checks passed
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.

3 participants