Skip to content

Commit

Permalink
1.10.x (#3120)
Browse files Browse the repository at this point in the history
* Added compatibility plugin

* Revert "Remove deprecated MissingRequiredConfigurationException and its usages (#2987)"

This reverts commit fde4f3d.

* Revert "Remove StatsdConfig.queueSize() (#568)"

This reverts commit 0c919bb.

* Revert "Remove deprecated methods in GangliaConfig"

This reverts commit a8ebe88.

* Revert "Remove deprecated ElasticConfig#documentType"

This reverts commit dfab16a.

* Revert "Remove deprecated constructor and dropwizard dependency"

This reverts commit acb6d7f.

* Revert "Remove deprecated method newLongTaskTimer(Id) on MeterRegistry"

This reverts commit 852991d.

* Revert "Remove Hibernate optional dependency"

This reverts commit 575b85e.

* Revert "Remove deprecated KafkaConsumerMetrics"

This reverts commit 207bb38.

* Revert "Remove deprecated JettyStatisticsMetrics"

This reverts commit 0902d4a.

* Revert "Remove deprecated Hibernate metrics"

This reverts commit 31ad59f.

* Revert "Remove deprecated DiskSpaceMetrics"

This reverts commit 46c8d37.

* Revert "Delete deprecated binders"

This reverts commit f8a508d.

* Revert "Deprecating core.instrument.binder and move classes to binder package (#3043)"

This reverts commit 531cb87.

* Revert "Remove things added back in merge by mistake."

This reverts commit 4cc4c20.

* Ensures binary compatibility

* 1.10.x KeyValue & KeyValues (#3122)

* Trying to fix the Tag & Tags confusion

- we rename Tag & Tags into KeyValue and KeyValues - that way there will be no confusions between the current Tag(s) and the ones from the common module
- TagKey will have the "of" method removed - that way we will not be returning Tags from commons that can be then used by micrometer's core code
- Changed since from 2.0.0 to 1.10.0
  • Loading branch information
marcingrzejszczak authored Apr 12, 2022
1 parent cd5d9e5 commit c8ac1e9
Show file tree
Hide file tree
Showing 141 changed files with 9,707 additions and 622 deletions.
55 changes: 55 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ buildscript {
classpath 'io.spring.nohttp:nohttp-gradle:0.0.10'
classpath 'org.gradle:test-retry-gradle-plugin:1.3.1'
classpath 'io.github.gradle-nexus:publish-plugin:1.1.0'
classpath "me.champeau.gradle:japicmp-gradle-plugin:0.4.0"
classpath "de.undercouch:gradle-download-task:5.0.2"

constraints {
classpath('org.ow2.asm:asm:7.3.1') {
Expand All @@ -39,6 +41,9 @@ allprojects {
group = 'io.micrometer'
ext.'release.stage' = releaseStage ?: 'SNAPSHOT'

// TODO: Change me
version = "1.10.0-SNAPSHOT"

afterEvaluate { project -> println "I'm configuring $project.name with version $project.version" }
}

Expand Down Expand Up @@ -290,6 +295,56 @@ subprojects {
from "$rootDir/NOTICE"
}
}


// new projects
if (["micrometer-commons", "micrometer-observation", "micrometer-observation-test"].every { it != project.name }) {
apply plugin: 'me.champeau.gradle.japicmp'
apply plugin: 'de.undercouch.download'

task downloadBaseline(type: Download) {
onlyIf {
if (project.gradle.startParameter.isOffline()) {
println "Offline: skipping downloading of baseline and JAPICMP"
return false
} else if ("$compatibleVersion" == "SKIP") {
println "SKIP: Instructed to skip the baseline comparison"
return false
} else {
println "Will download and perform baseline comparison with ${compatibleVersion}"
return true
}
}

onlyIfNewer true
compress true
String rootUrl = repositories.mavenCentral().url
if (compatibleVersion.contains("-M") || compatibleVersion.contains("-RC")) {
rootUrl = "https://repo.spring.io/milestone/"
} else {
rootUrl = "https://repo.spring.io/snapshot/"
}
src "${rootUrl}io/micrometer/${project.name}/${compatibleVersion}/${project.name}-${compatibleVersion}.jar"
dest "${buildDir}/baselineLibs/${project.name}-${compatibleVersion}.jar"
}

task japicmp(type: me.champeau.gradle.japicmp.JapicmpTask) {
oldClasspath.from(files("${buildDir}/baselineLibs/${project.name}-${compatibleVersion}.jar"))
newClasspath.from(files(jar.archiveFile, project(":${project.name}").jar))
onlyBinaryIncompatibleModified = true
// TODO: Turn this to true once 1.9.0 is out
failOnModification = false
failOnSourceIncompatibility = true
txtOutputFile = file("${project.buildDir}/reports/japi.txt")
ignoreMissingClasses = true
includeSynthetic = true
onlyIf { "${compatibleVersion}" != "SKIP" }
}

tasks.japicmp.dependsOn(downloadBaseline)
tasks.check.dependsOn(japicmp)
}

}

contacts {
Expand Down
12 changes: 12 additions & 0 deletions buildscript-gradle.lockfile

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions config/checkstyle/checkstyle-suppressions.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,11 @@
<suppressions>
<suppress files="io[\\/]micrometer[\\/]core[\\/]instrument[\\/]binder[\\/]logging[\\/].+" checks="IllegalImport" />
<suppress files="io[\\/]micrometer[\\/]core[\\/]util[\\/]internal[\\/]logging[\\/].+" checks="IllegalImport" />
<suppress files="io[\\/]micrometer[\\/]binder[\\/]logging[\\/].+" checks="IllegalImport" />
<suppress files="io[\\/]micrometer[\\/]common[\\/]util[\\/]internal[\\/]logging[\\/].+" checks="IllegalImport" />
<suppress files="implementations[\\/].+" id="SLF4JIllegalImportCheck" />
<suppress files="samples[\\/].+" checks="IllegalImport" />
<suppress files="test[\\/]java[\\/]io[\\/]micrometer[\\/]jersey.+" checks="IllegalImport" />
<suppress files="test[\\/]java[\\/]io[\\/]micrometer[\\/]core[\\/]instrument[\\/]binder[\\/]jersey[\\/]server.+" checks="(IllegalImport)" />
<suppress files="LogbackMetricsAutoConfiguration" checks="IllegalImport" />
</suppressions>
1 change: 1 addition & 0 deletions dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ def VERSIONS = [
'org.glassfish.jersey.inject:jersey-hk2:2.+',
'org.glassfish.jersey.test-framework.providers:jersey-test-framework-provider-inmemory:2.+',
'org.hdrhistogram:HdrHistogram:latest.release',
'org.hibernate:hibernate-entitymanager:5.+',
'org.hsqldb:hsqldb:2.5.+', // 2.6.0 requires JDK 11.
'org.jooq:jooq:3.14.+',
'org.jsr107.ri:cache-ri-impl:1.0.0',
Expand Down
2 changes: 2 additions & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,6 @@ org.gradle.jvmargs=-Xmx1g
org.gradle.parallel=true
org.gradle.vfs.watch=true

compatibleVersion=1.9.0-SNAPSHOT

nebula.dependencyLockPluginEnabled=false
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,9 @@
*/
package io.micrometer.cloudwatch;

import io.micrometer.core.instrument.config.validate.InvalidReason;
import io.micrometer.core.instrument.config.validate.Validated;
import io.micrometer.core.instrument.config.InvalidConfigurationException;
import io.micrometer.core.instrument.step.StepRegistryConfig;

import static io.micrometer.core.instrument.config.MeterRegistryConfigValidator.check;
import static io.micrometer.core.instrument.config.MeterRegistryConfigValidator.checkAll;
import static io.micrometer.core.instrument.config.MeterRegistryConfigValidator.checkRequired;
import static io.micrometer.core.instrument.config.validate.PropertyValidator.getInteger;
import static io.micrometer.core.instrument.config.validate.PropertyValidator.getString;

/**
* Configuration for CloudWatch exporting.
*
Expand All @@ -43,23 +36,23 @@ default String prefix() {
}

default String namespace() {
return getString(this, "namespace").required().get();
String v = get(prefix() + ".namespace");
if (v == null)
throw new io.micrometer.core.instrument.config.MissingRequiredConfigurationException("namespace must be set to report metrics to CloudWatch");
return v;
}

@Override
default int batchSize() {
return Math.min(getInteger(this, "batchSize").orElse(MAX_BATCH_SIZE), MAX_BATCH_SIZE);
}

@Override
default Validated<?> validate() {
return checkAll(this,
(CloudWatchConfig c) -> StepRegistryConfig.validate(c),
checkRequired("namespace", CloudWatchConfig::namespace),
check("batchSize", CloudWatchConfig::batchSize)
.andThen(v -> v.invalidateWhen(b -> b > MAX_BATCH_SIZE, "cannot be greater than " + MAX_BATCH_SIZE,
InvalidReason.MALFORMED))
);
String v = get(prefix() + ".batchSize");
if (v == null) {
return MAX_BATCH_SIZE;
}
int vInt = Integer.parseInt(v);
if (vInt > MAX_BATCH_SIZE)
throw new InvalidConfigurationException("batchSize must be <= " + MAX_BATCH_SIZE);

return vInt;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,17 @@
*/
package io.micrometer.cloudwatch;

import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.TimeUnit;
import java.util.stream.Stream;

import com.amazonaws.AbortedException;
import com.amazonaws.handlers.AsyncHandler;
import com.amazonaws.services.cloudwatch.AmazonCloudWatchAsync;
Expand All @@ -23,7 +34,18 @@
import com.amazonaws.services.cloudwatch.model.PutMetricDataRequest;
import com.amazonaws.services.cloudwatch.model.PutMetricDataResult;
import com.amazonaws.services.cloudwatch.model.StandardUnit;
import io.micrometer.core.instrument.*;
import io.micrometer.core.instrument.Clock;
import io.micrometer.core.instrument.Counter;
import io.micrometer.core.instrument.DistributionSummary;
import io.micrometer.core.instrument.FunctionCounter;
import io.micrometer.core.instrument.FunctionTimer;
import io.micrometer.core.instrument.Gauge;
import io.micrometer.core.instrument.LongTaskTimer;
import io.micrometer.core.instrument.Meter;
import io.micrometer.core.instrument.Tag;
import io.micrometer.core.instrument.TimeGauge;
import io.micrometer.core.instrument.Timer;
import io.micrometer.core.instrument.config.MissingRequiredConfigurationException;
import io.micrometer.core.instrument.step.StepMeterRegistry;
import io.micrometer.core.instrument.util.NamedThreadFactory;
import io.micrometer.core.instrument.util.StringUtils;
Expand All @@ -32,17 +54,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.TimeUnit;
import java.util.stream.Stream;

import static java.util.stream.Collectors.toList;
import static java.util.stream.StreamSupport.stream;

Expand Down Expand Up @@ -82,6 +93,11 @@ public CloudWatchMeterRegistry(CloudWatchConfig config, Clock clock,
AmazonCloudWatchAsync amazonCloudWatchAsync, ThreadFactory threadFactory) {
super(config, clock);

if (config.namespace() == null) {
throw new MissingRequiredConfigurationException(
"namespace must be set to report metrics to CloudWatch");
}

this.amazonCloudWatchAsync = amazonCloudWatchAsync;
this.config = config;
config().namingConvention(new CloudWatchNamingConvention());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,19 @@
*/
package io.micrometer.elastic;

import java.time.format.DateTimeFormatter;

import io.micrometer.core.instrument.config.validate.InvalidReason;
import io.micrometer.core.instrument.config.validate.Validated;
import io.micrometer.core.instrument.step.StepRegistryConfig;
import io.micrometer.core.lang.Nullable;

import java.time.format.DateTimeFormatter;

import static io.micrometer.core.instrument.config.MeterRegistryConfigValidator.checkAll;
import static io.micrometer.core.instrument.config.MeterRegistryConfigValidator.checkRequired;
import static io.micrometer.core.instrument.config.validate.PropertyValidator.*;
import static io.micrometer.core.instrument.config.validate.PropertyValidator.getBoolean;
import static io.micrometer.core.instrument.config.validate.PropertyValidator.getSecret;
import static io.micrometer.core.instrument.config.validate.PropertyValidator.getString;
import static io.micrometer.core.instrument.config.validate.PropertyValidator.getUrlString;

/**
* Configuration for {@link ElasticMeterRegistry}.
Expand Down Expand Up @@ -181,15 +184,19 @@ default String apiKeyCredentials() {
return getSecret(this, "apiKeyCredentials").orElse(null);
}


/**
* Enable {@literal _source} in the index template.
* Default is: {@code false}
* The type to be used when writing metrics documents to an index.
* This configuration is only used with Elasticsearch versions before 7.
* Default is: "doc"
*
* @return whether {@literal _source} will be enabled in the index template
* @since 2.0.0
* @return document type
* @since 1.4.0
* @deprecated This is no-op due to removal of mapping types since Elasticsearch 7.
*/
default boolean enableSource() {
return getBoolean(this, "enableSource").orElse(false);
@Deprecated
default String documentType() {
return getString(this, "documentType").orElse("doc");
}

@Override
Expand All @@ -212,7 +219,8 @@ default Validated<?> validate() {
return true;
}
}, "invalid date format", InvalidReason.MALFORMED)),
checkRequired("indexDateSeparator", ElasticConfig::indexDateSeparator)
checkRequired("indexDateSeparator", ElasticConfig::indexDateSeparator),
checkRequired("documentType", ElasticConfig::documentType)
);
}
}
Loading

0 comments on commit c8ac1e9

Please sign in to comment.