Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

spring boot 3.3.2 #430

Merged
merged 9 commits into from
Sep 23, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@
Lists all changes with user impact.
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).

## [0.22.0]
### Changed
- Spring Boot update to 3.3.2

## [0.21.1]
### Changed
- Added additional logs to SimpleCache
Expand Down
42 changes: 21 additions & 21 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,26 +1,24 @@

buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath group: 'pl.allegro.tech.build', name: 'axion-release-plugin', version: '1.13.3'
classpath group: 'pl.allegro.tech.build', name: 'axion-release-plugin', version: '1.13.3'
}
}

plugins {
id 'signing'

id 'pl.allegro.tech.build.axion-release' version '1.13.3'
id 'org.jetbrains.kotlin.jvm' version '1.8.22'
id 'org.jetbrains.kotlin.plugin.spring' version '1.8.22'
id 'org.jetbrains.kotlin.plugin.allopen' version '1.8.22'
id 'org.jetbrains.kotlin.jvm' version '1.9.25'
id 'org.jetbrains.kotlin.plugin.spring' version '1.9.25'
id 'org.jetbrains.kotlin.plugin.allopen' version '1.9.25'
id "org.jlleitschuh.gradle.ktlint" version "10.2.1"
id "org.jlleitschuh.gradle.ktlint-idea" version "10.2.0"
id "io.gitlab.arturbosch.detekt" version "1.18.0"
id "io.gitlab.arturbosch.detekt" version "1.23.6"
id 'io.github.gradle-nexus.publish-plugin' version '1.0.0'
id 'org.springframework.boot' version '3.1.2' apply false

id "io.spring.dependency-management" version "1.1.6"
}

scmVersion {
Expand Down Expand Up @@ -48,25 +46,27 @@ allprojects {
apply plugin: 'io.spring.dependency-management'

project.ext.versions = [
java_controlplane : '1.0.45',
spring_boot : '3.1.2',
grpc : '1.48.1',
ecwid_consul : '1.4.1',
toxiproxy : '2.1.3',
consul_recipes : '0.9.1',
cglib : '3.2.9',
re2j : '1.3',
xxhash : '0.10.1',
java_controlplane: '1.0.45',
spring_boot : '3.3.2',
grpc : '1.48.1',
ecwid_consul : '1.4.1',
toxiproxy : '2.1.3',
consul_recipes : '0.9.1',
bytebuddy : '1.15.1',
re2j : '1.3',
xxhash : '0.10.1',
dropwizard : '4.2.26'
]

dependencyManagement {
imports {
mavenBom org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES
mavenBom("org.springframework.boot:spring-boot-dependencies:3.3.2") {
bomProperty("kotlin.version", "1.9.23")
}
}
}
}


nexusPublishing {
repositories {
sonatype {
Expand Down Expand Up @@ -123,7 +123,7 @@ subprojects {
pom {
name = project.name
description = 'Production-ready Control Plane for Service Mesh based on Envoy Proxy.'
url ='https://github.com/allegro/envoy-control'
url = 'https://github.com/allegro/envoy-control'
inceptionYear = '2019'

scm {
Expand Down Expand Up @@ -177,7 +177,7 @@ subprojects {
}

detekt {
toolVersion = "1.18.0"
toolVersion = "1.23.6"
input = files("src/main/kotlin", "src/test/kotlin")
config = files("$rootDir/config/detekt/detekt.yml")
buildUponDefaultConfig = true
Expand Down
7 changes: 6 additions & 1 deletion config/detekt/detekt.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ style:
active: false # we want to be able to write todo comments
MagicNumber:
ignoreAnnotation: true
ignoreNumbers: '-1,0,1,2,3'
ignoreNumbers: ["-1", "0", "1", "2", "3"]
excludes: [ "**/resources/**","**/build/**", '**/test/**', '**/**Test.kt', '**TestBase.kt', '**TestConfiguration.kt','**/**Spec.kt','**Container.kt', '**Assertions.kt', '**Extension.kt', '**Operations.kt' ]
FunctionOnlyReturningConstant:
active: true
Expand Down Expand Up @@ -93,3 +93,8 @@ empty-blocks:
naming:
VariableNaming:
excludes: [ "**/envoy-control-tests/**" ]
FunctionNaming:
ignoreAnnotated:
- "Test"
- "ParameterizedTest"
- "MethodSource"
8 changes: 2 additions & 6 deletions envoy-control-core/build.gradle
Original file line number Diff line number Diff line change
@@ -1,15 +1,11 @@
plugins {
id 'org.springframework.boot' apply false
}

dependencies {
api project(':envoy-control-services')

implementation group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib'
api group: 'com.fasterxml.jackson.module', name: 'jackson-module-afterburner'
api group: 'com.fasterxml.jackson.module', name: 'jackson-module-kotlin'
implementation group: 'org.jetbrains.kotlin', name: 'kotlin-reflect'
api group: 'io.dropwizard.metrics', name: 'metrics-core'
api group: 'io.dropwizard.metrics', name: 'metrics-core', version: versions.dropwizard
api group: 'io.micrometer', name: 'micrometer-core'
implementation group: 'com.google.re2j', name: 're2j', version: versions.re2j

Expand All @@ -25,7 +21,7 @@ dependencies {
testImplementation group: 'io.grpc', name: 'grpc-testing', version: versions.grpc
testImplementation group: 'io.projectreactor', name: 'reactor-test'
testImplementation group: 'org.mockito', name: 'mockito-core'
testImplementation group: 'cglib', name: 'cglib-nodep', version: versions.cglib
testImplementation group: 'net.bytebuddy', name: 'byte-buddy', version: versions.bytebuddy

testImplementation group: 'org.awaitility', name: 'awaitility'

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ class LocalReplyConfigFactory(
)
responseMapperBuilder
}

matcherAndMapper.responseFlagMatcher.isNotEmpty() -> {
responseMapperBuilder.setFilter(
AccessLogFilter.newBuilder().setResponseFlagFilter(
Expand All @@ -75,6 +76,7 @@ class LocalReplyConfigFactory(
)
responseMapperBuilder
}

matcherAndMapper.statusCodeMatcher.isNotEmpty() -> {
responseMapperBuilder.setFilter(
AccessLogFilter.newBuilder().setStatusCodeFilter(
Expand All @@ -83,6 +85,7 @@ class LocalReplyConfigFactory(
)
responseMapperBuilder
}

else -> {
responseMapperBuilder
}
Expand Down Expand Up @@ -139,6 +142,7 @@ class LocalReplyConfigFactory(
)
)
}

headerMatcher.exactMatch.isNotEmpty() -> {
headerFilterBuilder.setHeader(headerMatcherBuilder.setExactMatch(headerMatcher.exactMatch))
}
Expand All @@ -158,11 +162,13 @@ class LocalReplyConfigFactory(
responseFormat.textFormat.isNotEmpty() -> {
responseFormatBuilder.setTextFormat(responseFormat.textFormat).build()
}

responseFormat.jsonFormat.isNotEmpty() -> {
val responseBody = Struct.newBuilder()
jsonParser.merge(responseFormat.jsonFormat, responseBody)
responseFormatBuilder.setJsonFormat(responseBody.build()).build()
}

else -> {
null
}
Expand All @@ -184,25 +190,20 @@ class LocalReplyConfigFactory(
validateHeaderMatcher(matcherAndMapper.headerMatcher)
}

if (definitions != 1) {
throw IllegalArgumentException(
"One and only one of: headerMatcher, responseFlagMatcher, statusCodeMatcher has to be defined.")
require(definitions == 1) {
"One and only one of: headerMatcher, responseFlagMatcher, statusCodeMatcher has to be defined."
}
}

private fun validateHeaderMatcher(headerMatcher: HeaderMatcherProperties) {
if (headerMatcher.exactMatch.isNotEmpty() && headerMatcher.regexMatch.isNotEmpty()) {
throw IllegalArgumentException(
"Only one of: exactMatch, regexMatch can be defined."
)
require(headerMatcher.exactMatch.isEmpty() || headerMatcher.regexMatch.isEmpty()) {
Copy link
Contributor

Choose a reason for hiding this comment

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

why you changed this checks to require?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

detekt failed with information that using require is more idiomatic to kotlin

"Only one of: exactMatch, regexMatch can be defined."
}
}

private fun validateResponseFormatProperties(responseFormat: ResponseFormat) {
if (responseFormat.jsonFormat.isNotEmpty() && responseFormat.textFormat.isNotEmpty()) {
throw IllegalArgumentException(
"Only one of: jsonFormat, textFormat can be defined."
)
require(responseFormat.jsonFormat.isEmpty() || responseFormat.textFormat.isEmpty()) {
"Only one of: jsonFormat, textFormat can be defined."
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,8 @@ class RBACFilterFactory(

init {
incomingPermissionsProperties.selectorMatching.forEach {
if (it.key !in incomingServicesIpRangeAuthentication && it.key !in incomingServicesSourceAuthentication) {
throw IllegalArgumentException("${it.key} is not defined in ip range or ip from discovery section.")
require(it.key in incomingServicesIpRangeAuthentication || it.key in incomingServicesSourceAuthentication) {
"${it.key} is not defined in ip range or ip from discovery section."
}
}
}
Expand Down Expand Up @@ -368,15 +368,18 @@ class RBACFilterFactory(
principal
)
)

OAuth.Policy.STRICT -> mergePrincipals(
listOf(
strictPolicyPrincipal,
principal
)
)

OAuth.Policy.ALLOW_MISSING_OR_FAILED -> {
principal
}

null -> {
principal
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package pl.allegro.tech.servicemesh.envoycontrol.snapshot.resource.listeners.fil
import io.envoyproxy.envoy.type.matcher.v3.RegexMatcher
import io.envoyproxy.envoy.type.matcher.v3.StringMatcher
import pl.allegro.tech.servicemesh.envoycontrol.snapshot.TlsAuthenticationProperties
import java.lang.IllegalArgumentException

class SanUriMatcherFactory(
private val tlsProperties: TlsAuthenticationProperties
Expand Down Expand Up @@ -35,8 +34,8 @@ class SanUriMatcherFactory(
private fun getSanUriFormatSplit(): Pair<String, String> {
val format = tlsProperties.sanUriFormat
val parts = format.split(serviceNameTemplate)
if (parts.size != 2) {
throw IllegalArgumentException("SAN URI $format does not properly contain $serviceNameTemplate")
require(parts.size == 2) {
"SAN URI $format does not properly contain $serviceNameTemplate"
}
return parts[0] to parts[1]
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,8 @@ class ServiceTagMetadataGenerator(properties: ServiceTagsProperties = ServiceTag

init {
properties.allowedTagsCombinations.forEach {
if (it.tags.size < 2 || it.tags.size > 3) {
throw IllegalArgumentException(
"A tags combination must contain 2 or 3 tags. Combination with ${it.tags.size} tags found")
require(it.tags.size in 2..3) {
"A tags combination must contain 2 or 3 tags. Combination with ${it.tags.size} tags found"
}
}
val combinationsByService = properties.allowedTagsCombinations
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -130,8 +130,8 @@ private fun measureScannableBuffer(
* To access actual buffer size, we need to extract it from inners(). We don't know how many sources will
* be available, so it must be stated explicitly as innerSources parameter.
*/
(0 until innerSources).forEach {
meterRegistry.gauge("${bufferMetric(name)}_$it", scannable, innerBufferExtractor(it))
for (i in 0 until innerSources) {
meterRegistry.gauge("${bufferMetric(name)}_$i", scannable, innerBufferExtractor(i))
Copy link
Contributor

Choose a reason for hiding this comment

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

why you changed it

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

detekt was failing with information that there is an overhead with forEach and for should be used instead

}
}

Expand Down
1 change: 0 additions & 1 deletion envoy-control-runner/build.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
plugins {
id 'application'
id 'org.springframework.boot' apply false
}

mainClassName = 'pl.allegro.tech.servicemesh.envoycontrol.EnvoyControl'
Expand Down
4 changes: 0 additions & 4 deletions envoy-control-services/build.gradle
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
plugins {
id 'org.springframework.boot' apply false
}

dependencies {
implementation group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib'
api group: 'io.projectreactor', name: 'reactor-core'
Expand Down
6 changes: 1 addition & 5 deletions envoy-control-source-consul/build.gradle
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
plugins {
id 'org.springframework.boot' apply false
}

dependencies {
api project(':envoy-control-core')

Expand All @@ -11,7 +7,7 @@ dependencies {
api group: 'com.ecwid.consul', name: 'consul-api', version: versions.ecwid_consul

testImplementation group: 'org.mockito', name: 'mockito-core'
testImplementation group: 'cglib', name: 'cglib-nodep', version: versions.cglib
testImplementation group: 'net.bytebuddy', name: 'byte-buddy', version: versions.bytebuddy

testImplementation group: 'io.projectreactor', name: 'reactor-test'
testImplementation group: 'org.testcontainers', name: 'testcontainers'
Expand Down
5 changes: 0 additions & 5 deletions envoy-control-tests/build.gradle
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
plugins {
id 'org.springframework.boot' apply false
}

dependencies {
implementation project(':envoy-control-runner')

Expand Down Expand Up @@ -42,7 +38,6 @@ task reliabilityTest(type: Test) {
}

task flakyTest(type: Test) {
systemProperty 'RELIABILITY_FAILURE_DURATION_SECONDS', System.getProperty('RELIABILITY_FAILURE_DURATION_SECONDS', '300')
useJUnitPlatform {
includeTags 'flaky'
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ class ConsulContainer(

override fun configure() {
super.configure()
portBindings.add("$externalPort:$internalPort")
portBindings = listOf("$externalPort:$internalPort")
awaitConsulReady()
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ class EgressOperations(val envoy: EnvoyContainer) {
body: RequestBody? = null
) = callWithHostHeader(service, headers, pathAndQuery, method, body)

@Suppress("detekt.ForEachOnRange")
fun callServiceRepeatedly(
service: String,
stats: CallStats,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -220,8 +220,9 @@ class EnvoyControlRunnerTestApp(
.execute().addToCloseableResponses()
}

override fun meterRegistry() = app.context().getBean(MeterRegistry::class.java)
?: throw IllegalStateException("MeterRegistry bean not found in the context")
override fun meterRegistry() = checkNotNull(app.context().getBean(MeterRegistry::class.java)) {
"MeterRegistry bean not found in the context"
}

companion object {
val logger by logger()
Expand Down
Loading