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
Improve backwards compatibility of ErrorAttributes and DefaultErrorAttributes #21324
Comments
j-sandy
added a commit
to j-sandy/kork
that referenced
this issue
Oct 18, 2022
….5.14 While upgrading the spring-boot, the compilation of kork-web module failed with following error: ``` > Task :kork-web:compileGroovy FAILED /kork/kork-web/src/main/java/com/netflix/spinnaker/kork/web/controllers/GenericErrorController.java:41: error: incompatible types: Boolean cannot be converted to ErrorAttributeOptions errorAttributes.getErrorAttributes(webRequest, includeStackTrace); ^ ``` ``` /kork/kork-web/src/main/java/com/netflix/spinnaker/kork/web/controllers/GenericErrorController.java:51: error: method does not override or implement a method from a supertype @OverRide ^ ``` ``` > Task :kork-web:compileGroovy /kork/kork-web/src/main/java/com/netflix/spinnaker/kork/web/selector/v2/SelectableService.java uses unchecked or unsafe operations. startup failed: /kork/kork-web/src/main/groovy/com/netflix/spinnaker/config/ErrorConfiguration.groovy: 37: Method 'getErrorAttributes' from class 'com.netflix.spinnaker.config.ErrorConfiguration$1' does not override method from its superclass or interfaces but is annotated with @OverRide. @ line 37, column 7. @OverRide ^ ``` The root cause is the deprecation of following methods in Spring boot 2.3.x and now removal of code from spring boot 2.5.x: ErrorAttributes.getErrorAttributes(ServerRequest, boolean) spring-projects/spring-boot@158933c spring-projects/spring-boot#21324 ErrorController.getErrorPath() spring-projects/spring-boot#19844 Fixed the issue with required code changes.
j-sandy
added a commit
to j-sandy/kork
that referenced
this issue
Mar 30, 2023
….5.14 While upgrading the spring-boot, the compilation of kork-web module failed with following error: ``` > Task :kork-web:compileGroovy FAILED /kork/kork-web/src/main/java/com/netflix/spinnaker/kork/web/controllers/GenericErrorController.java:41: error: incompatible types: Boolean cannot be converted to ErrorAttributeOptions errorAttributes.getErrorAttributes(webRequest, includeStackTrace); ^ ``` ``` /kork/kork-web/src/main/java/com/netflix/spinnaker/kork/web/controllers/GenericErrorController.java:51: error: method does not override or implement a method from a supertype @OverRide ^ ``` ``` > Task :kork-web:compileGroovy /kork/kork-web/src/main/java/com/netflix/spinnaker/kork/web/selector/v2/SelectableService.java uses unchecked or unsafe operations. startup failed: /kork/kork-web/src/main/groovy/com/netflix/spinnaker/config/ErrorConfiguration.groovy: 37: Method 'getErrorAttributes' from class 'com.netflix.spinnaker.config.ErrorConfiguration$1' does not override method from its superclass or interfaces but is annotated with @OverRide. @ line 37, column 7. @OverRide ^ ``` The root cause is the deprecation of following methods in Spring boot 2.3.x and now removal of code from spring boot 2.5.x: ErrorAttributes.getErrorAttributes(ServerRequest, boolean) spring-projects/spring-boot@158933c spring-projects/spring-boot#21324 ErrorController.getErrorPath() spring-projects/spring-boot#19844 Fixed the issue with required code changes.
j-sandy
added a commit
to j-sandy/kork
that referenced
this issue
Mar 31, 2023
….5.14 While upgrading the spring-boot, the compilation of kork-web module failed with following error: ``` > Task :kork-web:compileGroovy FAILED /kork/kork-web/src/main/java/com/netflix/spinnaker/kork/web/controllers/GenericErrorController.java:41: error: incompatible types: Boolean cannot be converted to ErrorAttributeOptions errorAttributes.getErrorAttributes(webRequest, includeStackTrace); ^ ``` ``` /kork/kork-web/src/main/java/com/netflix/spinnaker/kork/web/controllers/GenericErrorController.java:51: error: method does not override or implement a method from a supertype @OverRide ^ ``` ``` > Task :kork-web:compileGroovy /kork/kork-web/src/main/java/com/netflix/spinnaker/kork/web/selector/v2/SelectableService.java uses unchecked or unsafe operations. startup failed: /kork/kork-web/src/main/groovy/com/netflix/spinnaker/config/ErrorConfiguration.groovy: 37: Method 'getErrorAttributes' from class 'com.netflix.spinnaker.config.ErrorConfiguration$1' does not override method from its superclass or interfaces but is annotated with @OverRide. @ line 37, column 7. @OverRide ^ ``` The root cause is the deprecation of following methods in Spring boot 2.3.x and now removal of code from spring boot 2.5.x: ErrorAttributes.getErrorAttributes(ServerRequest, boolean) spring-projects/spring-boot@158933c spring-projects/spring-boot#21324 ErrorController.getErrorPath() spring-projects/spring-boot#19844 Fixed the issue with required code changes.
j-sandy
added a commit
to j-sandy/kork
that referenced
this issue
Mar 31, 2023
….5.14 While upgrading the spring-boot, the compilation of kork-web module failed with following error: ``` > Task :kork-web:compileGroovy FAILED /kork/kork-web/src/main/java/com/netflix/spinnaker/kork/web/controllers/GenericErrorController.java:41: error: incompatible types: Boolean cannot be converted to ErrorAttributeOptions errorAttributes.getErrorAttributes(webRequest, includeStackTrace); ^ ``` ``` /kork/kork-web/src/main/java/com/netflix/spinnaker/kork/web/controllers/GenericErrorController.java:51: error: method does not override or implement a method from a supertype @OverRide ^ ``` ``` > Task :kork-web:compileGroovy /kork/kork-web/src/main/java/com/netflix/spinnaker/kork/web/selector/v2/SelectableService.java uses unchecked or unsafe operations. startup failed: /kork/kork-web/src/main/groovy/com/netflix/spinnaker/config/ErrorConfiguration.groovy: 37: Method 'getErrorAttributes' from class 'com.netflix.spinnaker.config.ErrorConfiguration$1' does not override method from its superclass or interfaces but is annotated with @OverRide. @ line 37, column 7. @OverRide ^ ``` The root cause is the deprecation of following methods in Spring boot 2.3.x and now removal of code from spring boot 2.5.x: ErrorAttributes.getErrorAttributes(ServerRequest, boolean) spring-projects/spring-boot@158933c spring-projects/spring-boot#21324 ErrorController.getErrorPath() spring-projects/spring-boot#19844 Fixed the issue with required code changes.
mergify bot
pushed a commit
to spinnaker/kork
that referenced
this issue
Mar 31, 2023
* chore(dependencies): Upgrade Spring Boot to 2.5.14 * fix(dependency): Issue with kork-jedis while upgrading spring-boot to 2.5.14 While upgrading the spring-boot, the compilation of kork-jedis module failed with following error: ``` > Task :kork-jedis:compileJava FAILED /kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedJedis.java:2652: error: slowlogGetBinary(long) in InstrumentedJedis cannot implement slowlogGetBinary(long) in AdvancedBinaryJedisCommands public List<byte[]> slowlogGetBinary(long entries) { ^ return type List<byte[]> is not compatible with List<Object> /kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedJedis.java:2646: error: slowlogGetBinary() in InstrumentedJedis cannot implement slowlogGetBinary() in AdvancedBinaryJedisCommands public List<byte[]> slowlogGetBinary() { ^ return type List<byte[]> is not compatible with List<Object> /kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedJedis.java:2645: error: method does not override or implement a method from a supertype @OverRide ^ /kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedJedis.java:2648: error: incompatible types: inference variable T has incompatible bounds return instrumented(command, () -> delegated.slowlogGetBinary()); ^ lower bounds: List<byte[]>,Object lower bounds: List<Object> where T is a type-variable: T extends Object declared in method <T>instrumented(String,Callable<T>) /kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedJedis.java:2651: error: method does not override or implement a method from a supertype @OverRide ^ /kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedJedis.java:2654: error: incompatible types: inference variable T has incompatible bounds return instrumented(command, () -> delegated.slowlogGetBinary(entries)); ^ lower bounds: List<byte[]>,Object lower bounds: List<Object> where T is a type-variable: T extends Object declared in method <T>instrumented(String,Callable<T>) ``` ``` > Task :kork-jedis:compileJava FAILED /kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedJedisPool.java:84: error: name clash: initPool(GenericObjectPoolConfig,PooledObjectFactory<Jedis>) in InstrumentedJedisPool and initPool(GenericObjectPoolConfig<Jedis>,PooledObjectFactory<Jedis>) in Pool have the same erasure, yet neither overrides the other public void initPool(GenericObjectPoolConfig poolConfig, PooledObjectFactory<Jedis> factory) { ^ /kork/kork-jedis/src/main/java/com/netflix/spinnaker/kork/jedis/telemetry/InstrumentedJedisPool.java:83: error: method does not override or implement a method from a supertype @OverRide ``` The root cause is the upgrade of redis.clients:jedis from 3.3.0 to 3.6.3 as transitive dependency of spring-boot, that brings the breaking changes in APIs as mentioned below: redis/jedis#2084 redis/jedis#2361 Fixed the issue with required code changes. * fix(dependency): Issue with kork-web while upgrading spring-boot to 2.5.14 While upgrading the spring-boot, the compilation of kork-web module failed with following error: ``` > Task :kork-web:compileGroovy FAILED /kork/kork-web/src/main/java/com/netflix/spinnaker/kork/web/controllers/GenericErrorController.java:41: error: incompatible types: Boolean cannot be converted to ErrorAttributeOptions errorAttributes.getErrorAttributes(webRequest, includeStackTrace); ^ ``` ``` /kork/kork-web/src/main/java/com/netflix/spinnaker/kork/web/controllers/GenericErrorController.java:51: error: method does not override or implement a method from a supertype @OverRide ^ ``` ``` > Task :kork-web:compileGroovy /kork/kork-web/src/main/java/com/netflix/spinnaker/kork/web/selector/v2/SelectableService.java uses unchecked or unsafe operations. startup failed: /kork/kork-web/src/main/groovy/com/netflix/spinnaker/config/ErrorConfiguration.groovy: 37: Method 'getErrorAttributes' from class 'com.netflix.spinnaker.config.ErrorConfiguration$1' does not override method from its superclass or interfaces but is annotated with @OverRide. @ line 37, column 7. @OverRide ^ ``` The root cause is the deprecation of following methods in Spring boot 2.3.x and now removal of code from spring boot 2.5.x: ErrorAttributes.getErrorAttributes(ServerRequest, boolean) spring-projects/spring-boot@158933c spring-projects/spring-boot#21324 ErrorController.getErrorPath() spring-projects/spring-boot#19844 Fixed the issue with required code changes. * chore (dependency): pinning the io.rest-assured to 4.2.0 Spring boot 2.5.14 upgrade brings io.rest-assured 4.3.3 as transitive dependency. io.rest-assured 4.3.x require groovy 3.0.2. So, pinning the nearest version using groovy 2.x. After upgrading the groovy to 3.x, pin can be removed. [https://github.com/rest-assured/rest-assured/blob/9b683130c93188cabdef850e89d0c9417d847a17/changelog.txt#L200] * chore(dependency): pinning ch.qos.logback to 1.2.10 Spring boot 2.5.14 upgrade brings ch.qos.logback 1.2.11 as transitive dependency. A bug is reported in 1.2.11 [https://jira.qos.ch/browse/LOGBACK-1623] and it is fixed in 1.2.12. However the 1.2.12 package has not been released yet. So, pinning the version to 1.2.10 untill required package is released. * chore(dependency): Pinning groovy to 2.5.15 with spring boot 2.5.x upgrade Spring boot 2.5.x brings groovy 3.x as its transitive dependency. https://docs.spring.io/spring-boot/docs/2.5.14/reference/html/dependency-versions.html#appendix.dependency-versions Currently spinnaker services use gradle 6.x, that does not support groovy 3.x. https://docs.gradle.org/6.8.1/userguide/compatibility.html Restricting groovy to 2.5.x, till upgrade of gradle to 7.x. https://docs.gradle.org/current/userguide/resolution_rules.html#sec:denying_version To avoid transitive upgrade of groovy, pinning it with enforcedPlatform() closure. It forces version for internal submodules of kork as well as for all the consumer spinnaker services. * chore(dependency): pin org.liquibase to 3.10.3 While upgrading spring boot 2.5.x, liquibase version transitively upgrades to 4.3.5. The liquibase version starting from 4.0.0 till 4.12.0 has an [issue](liquibase/liquibase#2818) w.r.t parsing the changelog file, if found at multiple places within the classpath and encounter the below error: ``` Caused by: liquibase.exception.ChangeLogParseException: Error parsing classpath:db/healthcheck.yml at liquibase.parser.core.yaml.YamlChangeLogParser.parse(YamlChangeLogParser.java:89) at liquibase.Liquibase.getDatabaseChangeLog(Liquibase.java:369) at liquibase.Liquibase.lambda$update$1(Liquibase.java:224) at liquibase.Scope.lambda$child$0(Scope.java:180) at liquibase.Scope.child(Scope.java:189) at liquibase.Scope.child(Scope.java:179) at liquibase.Scope.child(Scope.java:158) at liquibase.Liquibase.runInScope(Liquibase.java:2405) at liquibase.Liquibase.update(Liquibase.java:211) at liquibase.Liquibase.update(Liquibase.java:197) at liquibase.integration.spring.SpringLiquibase.performUpdate(SpringLiquibase.java:314) at liquibase.integration.spring.SpringLiquibase.afterPropertiesSet(SpringLiquibase.java:269) at com.netflix.spinnaker.kork.sql.migration.SpringLiquibaseProxy.afterPropertiesSet(SpringLiquibaseProxy.kt:65) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1858) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1795) ... 87 more Caused by: java.io.IOException: Found 2 files that match classpath:db/healthcheck.yml: file:/spinnaker/kork/kork-sql/build/resources/main/db/healthcheck.yml, jar:file:/spinnaker/kork/kork-sql/build/libs/kork-sql.jar!/db/healthcheck.yml at liquibase.resource.AbstractResourceAccessor.openStream(AbstractResourceAccessor.java:25) at liquibase.parser.core.yaml.YamlChangeLogParser.parse(YamlChangeLogParser.java:25) ... 101 more ``` This duplicate changelog issue is fixed in 4.13.0, but identified another issue that gets introduced in 4.13.0. This [issue](liquibase/liquibase#3091) hinders the migration of sql scripts available in [orca](https://github.com/spinnaker/orca/tree/master/orca-sql/src/main/resources/db/changelog), containing `afterColumn`, with a validation error for postgresql. The efforts to resolve the issue are in progress, so pinning the version of org.liquibase:liquibase-core to 3.10.3 (latest of 3.x series).
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
The changes for including the message or binding errors are perhaps more breaking than they need to be. I’ve been wondering if we should make the new method on
ErrorAttributes
a default method. I also wondered if we should encapsulate the threeinclude…
booleans into a type so that we can add more exclusions in the future without having to change that interface.As an alternative to a new type that encapsulates the includes, @philwebb suggested a varargs enum. An implementation could then use
EnumSet.copyOf(Arrays.asList(includes))
.The text was updated successfully, but these errors were encountered: