-
Notifications
You must be signed in to change notification settings - Fork 5
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
Upgrade 1.30.x to 1.33.x #27
Conversation
Co-authored-by: root <root@447a079020df>
Co-authored-by: root <root@d357836a74e2>
Co-authored-by: root <root@ddd9a40eca8a>
…ases over junit5 and cleanup of useJUnitPlatform() from sub-modules in echo (spinnaker#1266) Spring boot 2.4.x removed JUnit5 vintage engine from spring-boot-starter-test. [https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.4-Release-Notes#junit-5s-vintage-engine-removed-from-spring-boot-starter-test] It is required for executing junit4 based test cases in echo. So, introducing junit-vintage-engine dependency in build.gradle, using testRuntimeOnly() as suggested in section 3.1 of https://junit.org/junit5/docs/5.6.2/user-guide/index.pdf After applying this fix, coverage increased from 533 to 535 test case executions. Clean up the call for test engines using `useJUnitPlatform()` from sub-modules, and placing it in build.gradle. As per the gradle docs, all test engines on the test runtime classpath will be used by sub modules. https://docs.gradle.org/6.8.1/userguide/java_testing.html#filtering_test_engine Encountered below error with `gradle :echo-web:test --tests "com.netflix.spinnaker.echo.ApplicationSpec.startupTest"` and similar error with `gradle :echo-web:test --tests "com.netflix.spinnaker.echo.telemetry.TelemetrySpec.telemetryDownEchoStillHealthyTest"' test execution: ``` Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2023-03-13 22:26:53.554 ERROR 60447 --- [ Test worker] o.s.boot.SpringApplication : Application run failed org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'pipelineTriggerJob' defined in URL [jar:file:/echo/echo-scheduler/build/libs/echo-scheduler.jar!/com/netflix/spinnaker/echo/scheduler/actions/pipeline/PipelineTriggerJob.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'pipelineInitiator' defined in URL [jar:file:/echo/echo-pipelinetriggers/build/libs/echo-pipelinetriggers.jar!/com/netflix/spinnaker/echo/pipelinetriggers/orca/PipelineInitiator.class]: Unsatisfied dependency expressed through constructor parameter 2; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'fiatPermissionEvaluator' defined in URL [jar:file:/.gradle/caches/modules-2/files-2.1/io.spinnaker.fiat/fiat-api/1.36.0/f491739bbb725f377af0e49136c948964ff25827/fiat-api-1.36.0.jar!/com/netflix/spinnaker/fiat/shared/FiatPermissionEvaluator.class]: Unsatisfied dependency expressed through constructor parameter 1; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'fiatService' defined in class path resource [com/netflix/spinnaker/fiat/shared/FiatAuthenticationConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.netflix.spinnaker.fiat.shared.FiatService]: Factory method 'fiatService' threw exception; nested exception is java.lang.NullPointerException at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:800) ~[spring-beans-5.3.13.jar:5.3.13] at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:229) ~[spring-beans-5.3.13.jar:5.3.13] Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'pipelineInitiator' defined in URL [jar:file:/echo/echo-pipelinetriggers/build/libs/echo-pipelinetriggers.jar!/com/netflix/spinnaker/echo/pipelinetriggers/orca/PipelineInitiator.class]: Unsatisfied dependency expressed through constructor parameter 2; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'fiatPermissionEvaluator' defined in URL [jar:file:/.gradle/caches/modules-2/files-2.1/io.spinnaker.fiat/fiat-api/1.36.0/f491739bbb725f377af0e49136c948964ff25827/fiat-api-1.36.0.jar!/com/netflix/spinnaker/fiat/shared/FiatPermissionEvaluator.class]: Unsatisfied dependency expressed through constructor parameter 1; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'fiatService' defined in class path resource [com/netflix/spinnaker/fiat/shared/FiatAuthenticationConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.netflix.spinnaker.fiat.shared.FiatService]: Factory method 'fiatService' threw exception; nested exception is java.lang.NullPointerException at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:800) ~[spring-beans-5.3.13.jar:5.3.13] at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:229) ~[spring-beans-5.3.13.jar:5.3.13] Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'fiatPermissionEvaluator' defined in URL [jar:file:/.gradle/caches/modules-2/files-2.1/io.spinnaker.fiat/fiat-api/1.36.0/f491739bbb725f377af0e49136c948964ff25827/fiat-api-1.36.0.jar!/com/netflix/spinnaker/fiat/shared/FiatPermissionEvaluator.class]: Unsatisfied dependency expressed through constructor parameter 1; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'fiatService' defined in class path resource [com/netflix/spinnaker/fiat/shared/FiatAuthenticationConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.netflix.spinnaker.fiat.shared.FiatService]: Factory method 'fiatService' threw exception; nested exception is java.lang.NullPointerException at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:800) ~[spring-beans-5.3.13.jar:5.3.13] at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:229) ~[spring-beans-5.3.13.jar:5.3.13] Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'fiatService' defined in class path resource [com/netflix/spinnaker/fiat/shared/FiatAuthenticationConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.netflix.spinnaker.fiat.shared.FiatService]: Factory method 'fiatService' threw exception; nested exception is java.lang.NullPointerException at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:658) ~[spring-beans-5.3.13.jar:5.3.13] at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:638) ~[spring-beans-5.3.13.jar:5.3.13] Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.netflix.spinnaker.fiat.shared.FiatService]: Factory method 'fiatService' threw exception; nested exception is java.lang.NullPointerException at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.3.13.jar:5.3.13] at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653) ~[spring-beans-5.3.13.jar:5.3.13] ... 153 common frames omitted Caused by: java.lang.NullPointerException: null at java.base/java.util.Objects.requireNonNull(Objects.java:221) ~[na:na] at com.netflix.spinnaker.config.DefaultServiceEndpoint.<init>(DefaultServiceEndpoint.java:82) ~[kork-web-7.167.0.jar:7.167.0] at com.netflix.spinnaker.config.DefaultServiceEndpoint.<init>(DefaultServiceEndpoint.java:59) ~[kork-web-7.167.0.jar:7.167.0] at com.netflix.spinnaker.config.DefaultServiceEndpoint.<init>(DefaultServiceEndpoint.java:55) ~[kork-web-7.167.0.jar:7.167.0] at com.netflix.spinnaker.fiat.shared.FiatAuthenticationConfig.fiatService(FiatAuthenticationConfig.java:77) ~[fiat-api-1.36.0.jar:1.36.0] ``` Fix the issue by adding mock bean for FiatService.
Co-authored-by: root <root@c4be0877baae>
Co-authored-by: root <root@678a4f9afbf2>
Co-authored-by: root <root@09edb544a130>
Co-authored-by: root <root@ca4d9d1417e6>
Co-authored-by: root <root@1087c434d482>
Co-authored-by: root <root@a7f63fd249e6>
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 2 to 4. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](docker/build-push-action@v2...v4) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
) Bumps [google-github-actions/auth](https://github.com/google-github-actions/auth) from 0 to 1. - [Release notes](https://github.com/google-github-actions/auth/releases) - [Changelog](https://github.com/google-github-actions/auth/blob/main/CHANGELOG.md) - [Commits](google-github-actions/auth@v0...v1) --- updated-dependencies: - dependency-name: google-github-actions/auth dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…o 1 (spinnaker#1278) Bumps [google-github-actions/upload-cloud-storage](https://github.com/google-github-actions/upload-cloud-storage) from 0 to 1. - [Release notes](https://github.com/google-github-actions/upload-cloud-storage/releases) - [Changelog](https://github.com/google-github-actions/upload-cloud-storage/blob/main/CHANGELOG.md) - [Commits](google-github-actions/upload-cloud-storage@v0...v1) --- updated-dependencies: - dependency-name: google-github-actions/upload-cloud-storage dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Bumps [actions/setup-java](https://github.com/actions/setup-java) from 2 to 3. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](actions/setup-java@v2...v3) --- updated-dependencies: - dependency-name: actions/setup-java dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 3. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](actions/checkout@v2...v3) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…iles (spinnaker#1284) to avoid warning messages like Run echo ::set-output name=REPO::${GITHUB_REPOSITORY##*/} Warning: The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/ Warning: The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
Co-authored-by: root <root@6df01364f536>
Co-authored-by: root <root@3e028cce7c94>
Co-authored-by: root <root@9719ce3424b9>
Co-authored-by: root <root@0655c5db933b>
…ggers of specific types (spinnaker#1292) * refactor(pipelinetriggers): add PipelineCacheConfigurationProperties class to remove a @value annotation, and to pave the way for additional config properties * feat(pipelinetriggers): only cache enabled pipelines with enabled triggers of specific types when pipelineCache.filterFront50Pipelines is true. Determine the specific types from the types that the available BaseTriggerEventHandler beans support, with cron triggers as well. Adjust the logic in ManualEventHandler to work when the cache only contains a subset of pipelines. When pipelineCache.filterFront50Pipelines is false, retain the current behavior to query front50 for all pipelines. Note that both before and after this change, when ManualEventHandler gets a pipeline from the cache, it queries front50 for a single pipeline by id to make sure what it's triggering is up to date. As currently implemented, front50 queries its database by id to generate the response. Currently, deck triggers by pipeline application + name. See for example https://github.com/spinnaker/deck/blob/8abafe5c6a6680953aef7752b1a56cac093ec9ba/packages/core/src/pipeline/executions/executionGroup/ExecutionGroup.tsx#L138 and https://github.com/spinnaker/deck/blob/8abafe5c6a6680953aef7752b1a56cac093ec9ba/packages/core/src/domain/IPipeline.ts#L86 With this PR, ManualEventHandler now queries a new endpoint in front50 by application and name when there's no cached pipeline corresponding to a trigger. Front50's database query in this case is likely slightly more expensive that querying by id, but not enough to be significant, especially since we're dealing with human-initiated events. If the query by application and name fails, ManualEventTrigger then queries by pipeline id, so triggers by pipeline id (if there are any) are less performant than before as they involve another round trip to front50 to query by application and name first. It does seem feasible, though not totally trivial, to change deck to trigger manual execution by pipeline id. If this happens, it would make sense to change the order of queries in ManualEventHandler to query by id first. That would restore the performance of manual execution by deck what it was before this PR.
Co-authored-by: root <root@63d86d5636ba>
Co-authored-by: root <root@daa08b560ddd>
Co-authored-by: root <root@f1cbd44bf3d1>
Co-authored-by: root <root@636fee72d08c>
Co-authored-by: root <root@c4ba54b4ec41>
Co-authored-by: root <root@92f374466e67>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
pinned versions
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
pinned versions
testImplementation(project(":echo-web")) | ||
testImplementation(project(":echo-core")) | ||
|
||
testImplementation("io.spinnaker.kork:kork-plugins") | ||
testImplementation("io.spinnaker.kork:kork-plugins-tck") | ||
|
||
testRuntimeOnly("org.junit.platform:junit-platform-launcher") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this dep is present in oes 1.31.1 but removed in oss 1.33
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
afaik :
org.junit.platform:junit-platform-launcher supports not only JUnit 5 tests but also tests written in other frameworks like JUnit 4, TestNG, etc.
org.junit.jupiter:junit-jupiter-engine is the test engine for executing tests written using JUnit 5 (JUnit Jupiter)
but when i checked the kotlin UT within echo-plugins-test, i find that it doesnt require any of it
any suggestions ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
pinned versions
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
pinned versions
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
pinned versions
echo-rest/echo-rest.gradle
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
pinned versions
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
pinned versions
|
||
implementation "com.netflix.spectator:spectator-api" | ||
implementation "io.spinnaker.kork:kork-artifacts" | ||
implementation "io.spinnaker.kork:kork-sql" | ||
|
||
if (!rootProject.hasProperty("excludeSqlDrivers")) { | ||
runtimeOnly "mysql:mysql-connector-java" | ||
runtimeOnly "com.mysql:mysql-connector-j" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we do not have com.mysql:mysql-connector-j
in both OES 1.30.1 and OSS 1.33. We have changed this to fix MySQL issues.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
right : ref
echo-telemetry/echo-telemetry.gradle
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
pinned versions
echo-test/echo-test.gradle
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
pinned versions
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
pinned versions
@@ -54,7 +58,7 @@ dependencies { | |||
} | |||
|
|||
runtimeOnly "io.spinnaker.kork:kork-runtime" | |||
|
|||
implementation("com.mysql:mysql-connector-j") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we do not have this com.mysql:mysql-connector-j
in OSS 1.33
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
pinned versions
implementation "org.springframework.boot:spring-boot-starter-validation" | ||
implementation "io.cloudevents:cloudevents-spring:2.5.0" | ||
implementation "io.cloudevents:cloudevents-json-jackson:2.5.0" | ||
implementation "io.cloudevents:cloudevents-http-basic:2.5.0" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
32 to 34 are not in OES 1.30.1 but in OSS 1.33
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
new feature : spinnaker#1290
@@ -22,8 +36,6 @@ | |||
} | |||
} | |||
|
|||
enableFeaturePreview("VERSION_ORDERING_V2") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the above is not removed in OES 1.30.1 but it is removed in OSS 1.33
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This ordering will be enabled by default in Gradle 7.0. Thats why removed it. ref
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There are some changes that are not in OES 1.30.1 but in OSS 1.33 so highlighted those as part of comments. Also, pinned versions were flagged for future cleanups.
During cleanup, not only mentioned pinned versions will be cleaned but also every dependency should be checked for scope of cleaning. Will do this cleanup as separate activity in different PR.
|
||
testRuntimeOnly("org.junit.platform:junit-platform-launcher") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
testRuntimeOnly("org.junit.platform:junit-platform-launcher") expected to remove ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes, as we have testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine") for running tests.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok Thanks
echo-artifacts/echo-artifacts.gradle
Outdated
@@ -19,8 +19,10 @@ dependencies { | |||
implementation project(':echo-model') | |||
implementation "com.squareup.retrofit:retrofit" | |||
implementation "com.squareup.retrofit:converter-jackson" | |||
implementation "com.jakewharton.retrofit:retrofit1-okhttp3-client:1.1.0" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
version specified for the package in 1.30.x, should go with this version right?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reason to remove explicit version : ref
kork-oes also pointed to same version. checked dI, 1.1.0 is coming.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok. good
implementation "com.squareup.retrofit:retrofit" | ||
implementation "com.squareup.retrofit:converter-jackson" | ||
implementation "com.jakewharton.retrofit:retrofit1-okhttp3-client:1.1.0" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
package com.jakewharton.retrofit:retrofit1-okhttp3-client version needs to taken from 1.30.x , right?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reason to remove explicit version : ref
kork-oes also pointed to same version. checked dI, 1.1.0 is coming.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok. good
All commits are present. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
approved
|
||
class EmailNotificationServiceSpec extends Specification { | ||
|
||
class EmailNotificationServiceSpec { /*extends Specification |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please un-comment this test and make it work.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
|
||
@ExtendWith(SpringExtension.class) | ||
@SpringBootTest(classes = {Application.class}) | ||
/*@ExtendWith(SpringExtension.class) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Plz clean the commented part from the code.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Jira : https://devopsmx.atlassian.net/browse/OP-22085
Testing : Compile success, No new TCs failed bcoz of this change, deployed to ns=cvetarget aman1603/echo:23may1 - cron trigger worked fine, echo logs are clean.
Note :
All commits covered - verified from sheet.
Will add/modify echo code wrt final kork & fiat versions publish (if required). This code works with fiatVersion=1-0-SNAPSHOT & korkVersion=1-0-SNAPSHOT
Will not merge it to OES-1.30.1, will create separate branch OES-1.33.x. This is done just to compare the code.