diff --git a/.codespellrc b/.codespellrc deleted file mode 100644 index a1634fb0c..000000000 --- a/.codespellrc +++ /dev/null @@ -1,6 +0,0 @@ -[codespell] -# nd: legitimate variable name in quantile algorithms -# atmost: AssertJ atMost() matcher -# re-use: hyphenated form used in comments -# errorprone: Google ErrorProne tool name -ignore-words-list = nd,atmost,re-use,errorprone diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..7ab27c559 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,4 @@ +CHANGELOG.md linguist-generated +**/src/main/generated/** linguist-generated +docs/apidiffs/** linguist-generated +docs/** linguist-documentation diff --git a/.github/config/.release-please-manifest.json b/.github/config/.release-please-manifest.json index 093be7e34..64e0684f3 100644 --- a/.github/config/.release-please-manifest.json +++ b/.github/config/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "1.6.1" + ".": "1.7.0" } diff --git a/.github/config/_typos.toml b/.github/config/_typos.toml new file mode 100644 index 000000000..291218241 --- /dev/null +++ b/.github/config/_typos.toml @@ -0,0 +1,10 @@ +[default] +extend-ignore-re = [ + 're-use', + '\.atMost\(', + 'errorprone', + 'com\.google\.errorprone', + '\bNormalDistribution nd\b', + '\bnd\.inverseCumulativeProbability\(', + 'BQAwFDESMBAGA1UEAwwJbG9jYWxob3N0MCAXDTI0MDUxMDE0MzY1NloYDzIxMjQw', +] diff --git a/.github/config/flint.toml b/.github/config/flint.toml index e11556a6a..45ec061d4 100644 --- a/.github/config/flint.toml +++ b/.github/config/flint.toml @@ -1,7 +1,5 @@ [settings] -# These paths are generated, vendored, or handled by other checks. -exclude = ["CHANGELOG.md", "**/src/main/generated/**", "docs/themes/**", "mvnw", "simpleclient-archive/**"] -setup_migration_version = 2 +exclude = ["docs/themes/**", "mvnw", "simpleclient-archive/**"] [checks.renovate-deps] exclude_managers = ["github-actions", "github-runners", "maven"] diff --git a/.github/renovate-tracked-deps.json b/.github/renovate-tracked-deps.json index 2dde2330f..eebbdf0d6 100644 --- a/.github/renovate-tracked-deps.json +++ b/.github/renovate-tracked-deps.json @@ -1,142 +1,193 @@ { - ".github/renovate.json5": { - "renovate-config-presets": [ - "grafana/flint" - ] - }, - ".github/workflows/acceptance-tests.yml": { - "regex": [ - "mise" - ] - }, - ".github/workflows/build.yml": { - "regex": [ - "mise" - ] - }, - ".github/workflows/generate-protobuf.yml": { - "regex": [ - "mise" - ] - }, - ".github/workflows/github-pages.yaml": { - "regex": [ - "mise" - ] - }, - ".github/workflows/java-version-matrix-tests.yml": { - "regex": [ - "mise" - ] - }, - ".github/workflows/lint.yml": { - "regex": [ - "mise" - ] - }, - ".github/workflows/native-tests.yml": { - "regex": [ - "mise" - ] - }, - ".github/workflows/nightly-benchmarks.yml": { - "regex": [ - "mise" - ] - }, - ".github/workflows/release.yml": { - "regex": [ - "mise" - ] - }, - ".github/workflows/test-release-build.yml": { - "regex": [ - "mise" - ] - }, - ".mise/envs/native/mise.toml": { - "mise": [ - "java" - ] - }, - ".mvn/wrapper/maven-wrapper.properties": { - "maven-wrapper": [ - "maven" - ] - }, - "examples/example-custom-buckets/docker-compose.yaml": { - "docker-compose": [ - "eclipse-temurin", - "grafana/grafana", - "prom/prometheus" - ] - }, - "examples/example-exemplars-tail-sampling/docker-compose.yaml": { - "docker-compose": [ - "grafana/grafana", - "grafana/k6", - "grafana/tempo", - "opentelemetry-java-agent", - "otel/opentelemetry-collector-contrib", - "prom/prometheus" - ] - }, - "examples/example-exporter-opentelemetry/docker-compose.yaml": { - "docker-compose": [ - "openjdk", - "otel/opentelemetry-collector-contrib", - "prom/prometheus" - ] - }, - "examples/example-exporter-opentelemetry/oats-tests/agent/Dockerfile": { - "dockerfile": [ - "eclipse-temurin" - ] - }, - "examples/example-exporter-opentelemetry/oats-tests/http/Dockerfile": { - "dockerfile": [ - "eclipse-temurin" - ] - }, - "examples/example-native-histogram/docker-compose.yaml": { - "docker-compose": [ - "eclipse-temurin", - "grafana/grafana", - "prom/prometheus" - ] - }, - "mise.toml": { - "mise": [ - "actionlint", - "aqua:owenlamont/ryl", - "biome", - "editorconfig-checker", - "github:google/google-java-format", - "github:grafana/flint", - "github:jonwiggins/xmloxide", - "github:koalaman/shellcheck", - "go:github.com/grafana/oats", - "hugo", - "java", - "lychee", - "node", - "npm:renovate", - "pipx:codespell", - "protoc", - "ruff", - "rumdl", - "shfmt", - "taplo" - ] - }, - "mvnw": { - "maven-wrapper": [ - "maven-wrapper" - ] - }, - "mvnw.cmd": { - "maven-wrapper": [ - "maven-wrapper" - ] + "meta": { + "protoc": { + "packageName": "protocolbuffers/protobuf", + "datasource": "github-releases" + } + }, + "files": { + ".github/renovate.json5": { + "renovate-config": [ + "grafana/flint" + ] + }, + ".github/workflows/acceptance-tests.yml": { + "regex": [ + "mise" + ] + }, + ".github/workflows/api-diff.yml": { + "regex": [ + "mise" + ] + }, + ".github/workflows/build.yml": { + "regex": [ + "mise" + ] + }, + ".github/workflows/generate-api-diff-baseline.yml": { + "regex": [ + "mise" + ] + }, + ".github/workflows/generate-protobuf.yml": { + "regex": [ + "mise" + ] + }, + ".github/workflows/github-pages.yaml": { + "regex": [ + "mise" + ] + }, + ".github/workflows/java-version-matrix-tests.yml": { + "regex": [ + "mise" + ] + }, + ".github/workflows/jmx-exporter-compatibility.yml": { + "regex": [ + "mise" + ] + }, + ".github/workflows/lint.yml": { + "regex": [ + "mise" + ] + }, + ".github/workflows/micrometer-compatibility.yml": { + "regex": [ + "micrometer-metrics/micrometer", + "mise", + "zeitlinger/micrometer" + ] + }, + ".github/workflows/native-tests.yml": { + "regex": [ + "mise" + ] + }, + ".github/workflows/nightly-benchmarks.yml": { + "regex": [ + "mise" + ] + }, + ".github/workflows/release.yml": { + "regex": [ + "mise" + ] + }, + ".github/workflows/test-release-build.yml": { + "regex": [ + "mise" + ] + }, + ".mise/envs/jmx-exporter/mise.toml": { + "mise": [ + "java" + ] + }, + ".mise/envs/micrometer/mise.toml": { + "mise": [ + "java" + ] + }, + ".mise/envs/native/mise.toml": { + "mise": [ + "java" + ] + }, + ".mvn/wrapper/maven-wrapper.properties": { + "maven-wrapper": [ + "maven" + ] + }, + "examples/example-custom-buckets/docker-compose.yaml": { + "docker-compose": [ + "eclipse-temurin", + "grafana/grafana", + "prom/prometheus" + ] + }, + "examples/example-exemplars-tail-sampling/docker-compose.yaml": { + "docker-compose": [ + "grafana/grafana", + "grafana/k6", + "grafana/tempo", + "opentelemetry-java-agent", + "otel/opentelemetry-collector-contrib", + "prom/prometheus" + ] + }, + "examples/example-exporter-opentelemetry/docker-compose.yaml": { + "docker-compose": [ + "openjdk", + "otel/opentelemetry-collector-contrib", + "prom/prometheus" + ] + }, + "examples/example-exporter-opentelemetry/oats-tests/agent/Dockerfile": { + "dockerfile": [ + "eclipse-temurin" + ] + }, + "examples/example-exporter-opentelemetry/oats-tests/http/Dockerfile": { + "dockerfile": [ + "eclipse-temurin" + ] + }, + "examples/example-native-histogram/docker-compose.yaml": { + "docker-compose": [ + "eclipse-temurin", + "grafana/grafana", + "prom/prometheus" + ] + }, + "mise.toml": { + "mise": [ + "actionlint", + "aqua:grafana/flint", + "aqua:jonwiggins/xmloxide", + "aqua:owenlamont/ryl", + "biome", + "editorconfig-checker", + "go:github.com/grafana/oats", + "google-java-format", + "hugo", + "java", + "lychee", + "node", + "npm:renovate", + "protoc", + "ruff", + "rumdl", + "shellcheck", + "shfmt", + "taplo", + "typos", + "zizmor" + ], + "regex": [ + "grafana/docker-otel-lgtm", + "micrometer-metrics/micrometer", + "prometheus/jmx_exporter" + ] + }, + "mvnw": { + "maven-wrapper": [ + "maven-wrapper" + ] + }, + "mvnw.cmd": { + "maven-wrapper": [ + "maven-wrapper" + ] + }, + "pom.xml": { + "regex": [ + "io.prometheus:prometheus-metrics-core" + ] + } } } diff --git a/.github/renovate.json5 b/.github/renovate.json5 index 0cf99589c..b959e853e 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -1,6 +1,6 @@ { $schema: "https://docs.renovatebot.com/renovate-schema.json", - extends: ["config:best-practices", "config:recommended", "github>grafana/flint#v0.21.0"], + extends: ["config:best-practices", "config:recommended", "github>grafana/flint#v0.22.4"], platformCommit: "enabled", automerge: true, ignorePaths: [ @@ -23,6 +23,13 @@ groupName: "java graalvm", additionalBranchPrefix: "graalvm-", }, + { + description: "Compat tests pin an LTS JDK the upstream release supports; block major JDK bumps that would break those builds", + matchFileNames: [".mise/envs/jmx-exporter/mise.toml", ".mise/envs/micrometer/mise.toml"], + matchDepNames: ["java"], + matchUpdateTypes: ["major"], + enabled: false, + }, { matchPackageNames: ["io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha"], ignoreUnstable: false, @@ -38,6 +45,53 @@ groupName: "protobuf", separateMajorMinor: false, }, + { + description: "Isolate the api-diff baseline on renovate/api-diff-baseline so generate-api-diff-baseline can regenerate docs/apidiffs; merge manually after a close/reopen re-runs CI", + matchFileNames: ["pom.xml"], + matchPackageNames: ["io.prometheus:prometheus-metrics-core"], + groupName: "api-diff-baseline", + automerge: false, + }, + { + "description": "Flint autofix: align extractVersion for protoc", + "extractVersion": "^(?.+)\\.0\\.0$", + "matchDepNames": [ + "protoc" + ] + } + ], + customManagers: [ + { + "customType": "regex", + "description": "update _VERSION variables in mise.toml", + "managerFilePatterns": ["/^mise\\.toml$/"], + "matchStrings": [ + "# renovate: datasource=(?[a-z-]+?)(?: depName=(?.+?))?(?: packageName=(?.+?))?(?: versioning=(?[a-z-]+?))?\\s.+?_VERSION\\s*=\\s*\"?(?[^@\"]+?)(?:@(?sha256:[a-f0-9]+))?\"?\\s" + ] + }, + { + "customType": "regex", + "description": "update the api-diff baseline to the latest published release", + "managerFilePatterns": ["/^pom\\.xml$/"], + "matchStrings": [ + "\\s*(?[^<]+)" + ] + }, + { + customType: "regex", + description: "track the latest Micrometer release for upstream compatibility", + managerFilePatterns: ["/^\\.github\\/workflows\\/micrometer-compatibility\\.yml$/"], + matchStrings: [ + "# renovate: datasource=(?\\S+) depName=(?\\S+) packageName=(?\\S+)\\n\\s*ref:\\s*(?v[0-9][^\\s]*)", + ], + }, + { + customType: "regex", + description: "pin the Micrometer typed-descriptor compatibility ref", + managerFilePatterns: ["/^\\.github\\/workflows\\/micrometer-compatibility\\.yml$/"], + matchStrings: [ + "# renovate: datasource=(?\\S+) depName=(?\\S+) packageName=(?\\S+) currentValue=(?\\S+)\\n\\s*ref:\\s*(?[a-f0-9]{40})", + ], + }, ], - customManagers: [], } diff --git a/.github/scripts/sync-api-diffs.sh b/.github/scripts/sync-api-diffs.sh new file mode 100755 index 000000000..34fe18ff5 --- /dev/null +++ b/.github/scripts/sync-api-diffs.sh @@ -0,0 +1,38 @@ +#!/usr/bin/env bash +# Refresh docs/apidiffs/current_vs_latest/ from the japicmp reports produced by +# `mvn verify -P api-diff`. +# +# Each StableApi module gets one committed .txt describing how its +# published API surface differs from the baseline release +# ( in pom.xml). Committing these makes every API +# change visible in the pull request diff. The CI check fails when the +# regenerated files differ from what is committed. +# +# The layout and format match opentelemetry-java's docs/apidiffs: the +# "Comparing ... .jar against ... .jar" header is kept, while the constant +# ignore-missing-classes warning and the semantic-versioning suggestion are +# dropped as noise. +set -euo pipefail + +repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" +out_dir="$repo_root/docs/apidiffs/current_vs_latest" + +shopt -s nullglob globstar + +reports=("$repo_root"/**/target/japicmp/api-diff.diff) +if [ "${#reports[@]}" -eq 0 ]; then + echo "No japicmp reports found. Run 'mvn verify -P api-diff' first." >&2 + exit 1 +fi + +rm -rf "$out_dir" +mkdir -p "$out_dir" + +for report in "${reports[@]}"; do + # report path: //target/japicmp/api-diff.diff + module="$(basename "$(dirname "$(dirname "$(dirname "$report")")")")" + grep -vE '^(WARNING: You are using the option|Semantic versioning suggestion)' \ + "$report" >"$out_dir/$module.txt" +done + +echo "Wrote ${#reports[@]} API diff report(s) to docs/apidiffs/current_vs_latest/." diff --git a/.github/workflows/acceptance-tests.yml b/.github/workflows/acceptance-tests.yml index 32f4b8a53..404e73407 100644 --- a/.github/workflows/acceptance-tests.yml +++ b/.github/workflows/acceptance-tests.yml @@ -12,10 +12,10 @@ jobs: - name: Check out with: persist-credentials: false - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 - uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4.0.1 with: - version: v2026.5.0 - sha256: 7db5db7a36d28203eb8329140d98fb26b41f5efea32d762f69a1e4b369e1e1a8 + version: v2026.5.18 + sha256: cfac593469d028d7ae5fe36e37bd7c59118b5238e92d8a876209578464f24a84 - name: Run acceptance tests run: mise run acceptance-test diff --git a/.github/workflows/api-diff.yml b/.github/workflows/api-diff.yml new file mode 100644 index 000000000..548b7139f --- /dev/null +++ b/.github/workflows/api-diff.yml @@ -0,0 +1,90 @@ +--- +name: API Diff + +on: + pull_request: + types: + - opened + - synchronize + - reopened + - labeled + - unlabeled + workflow_dispatch: + inputs: + baseline_version: + description: >- + Override the baseline version to compare against. + Defaults to in pom.xml. + required: false + default: "" + +permissions: + contents: read + +jobs: + api-diff: + runs-on: ubuntu-24.04 + env: + # Empty unless overridden via workflow_dispatch; the api-diff task then + # falls back to in pom.xml. + API_DIFF_BASELINE_VERSION: ${{ inputs.baseline_version }} + BREAKING_API_CHANGE_ACCEPTED: >- + ${{ contains(github.event.pull_request.labels.*.name, 'breaking-api-change-accepted') }} + + steps: + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 + with: + persist-credentials: false + - uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4.0.1 + with: + version: v2026.5.18 + sha256: cfac593469d028d7ae5fe36e37bd7c59118b5238e92d8a876209578464f24a84 + - name: Cache local Maven repository + uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + - name: Run japicmp API diff + run: mise run api-diff + - name: Check docs/apidiffs is up to date + run: | + if ! git diff --exit-code -- docs/apidiffs; then + echo "::error::Published API surface changed but docs/apidiffs is stale." + echo "Run 'mise run api-diff' locally and commit the updated docs/apidiffs." + exit 1 + fi + - name: Fail on incompatible published API changes + run: | + python3 - <<'PY' + import os + from pathlib import Path + import sys + import xml.etree.ElementTree as ET + + failures = [] + for report in sorted(Path(".").glob("**/target/japicmp/api-diff.xml")): + parts = report.parts + module = "/".join(parts[: parts.index("target")]) + tree = ET.parse(report) + for change in tree.findall(".//compatibilityChange"): + binary = change.get("binaryCompatible") == "false" + source = change.get("sourceCompatible") == "false" + if binary or source: + failures.append((module, change.get("type", "unknown"))) + + if not failures: + print("No incompatible published API changes detected.") + sys.exit(0) + + print("Incompatible published API changes detected:") + for module, change_type in failures[:100]: + print(f"- {module}: {change_type}") + if len(failures) > 100: + print(f"... and {len(failures) - 100} more") + if os.environ.get("BREAKING_API_CHANGE_ACCEPTED") == "true": + print("Accepted by PR label `breaking-api-change-accepted`.") + sys.exit(0) + print("Run `mise run api-diff` locally for full japicmp output.") + print("Reports are written to `**/target/japicmp/*`.") + sys.exit(1) + PY diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 392fd0c2f..b686c28cf 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,19 +9,17 @@ jobs: build: runs-on: ubuntu-24.04 steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 with: persist-credentials: false - uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4.0.1 with: - version: v2026.5.0 - sha256: 7db5db7a36d28203eb8329140d98fb26b41f5efea32d762f69a1e4b369e1e1a8 + version: v2026.5.18 + sha256: cfac593469d028d7ae5fe36e37bd7c59118b5238e92d8a876209578464f24a84 - name: Cache local Maven repository uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 with: path: ~/.m2/repository key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} - restore-keys: | - ${{ runner.os }}-maven- - name: Run the Maven verify phase run: mise run ci diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml new file mode 100644 index 000000000..1de0ca840 --- /dev/null +++ b/.github/workflows/codeql.yml @@ -0,0 +1,61 @@ +--- +name: CodeQL Security Analysis + +on: + push: + branches: [main] + pull_request: + branches: [main] + schedule: + - cron: "29 13 * * 2" # Weekly Tuesday 13:29 UTC + +permissions: {} + +jobs: + analyze: + name: Analyze Java + runs-on: ubuntu-24.04 + permissions: + actions: read # required for github/codeql-action/init to get workflow details + contents: read + security-events: write # required for github/codeql-action/analyze to upload SARIF + steps: + - name: Checkout repository + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 + with: + persist-credentials: false + + - name: Set up Java + uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 + with: + distribution: temurin + java-version: "25" + + - name: Cache Maven repository + uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-codeql-${{ hashFiles('**/pom.xml') }} + - name: Initialize CodeQL + uses: github/codeql-action/init@87557b9c84dde89fdd9b10e88954ac2f4248e463 # v4.36.1 + with: + languages: java + tools: linked + queries: security-extended + + # Do not use autobuild — the multi-module Maven structure requires explicit + # build invocation so that CodeQL can trace the compilation correctly. + # Do not use mise-action here — CodeQL needs to trace the raw Maven build. + - name: Build (CodeQL traces the build) + run: > + ./mvnw clean compile + -P '!default' + -DskipTests + -Dcoverage.skip=true + -Dcheckstyle.skip=true + -Djavadoc.skip=true + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@87557b9c84dde89fdd9b10e88954ac2f4248e463 # v4.36.1 + with: + category: /language:java diff --git a/.github/workflows/generate-api-diff-baseline.yml b/.github/workflows/generate-api-diff-baseline.yml new file mode 100644 index 000000000..a3ad47e86 --- /dev/null +++ b/.github/workflows/generate-api-diff-baseline.yml @@ -0,0 +1,117 @@ +--- +name: Generate API Diff Baseline + +# When Renovate bumps (on the renovate/api-diff-baseline +# branch), regenerate docs/apidiffs against the new baseline and push the result +# back onto the PR. Renovate only proposes versions already published to Maven +# Central, so japicmp can always resolve the new baseline. +# +# Before regenerating, the previous current_vs_latest is archived as +# docs/apidiffs/_vs_/ to keep a per-release history (like +# opentelemetry-java). This is an approximation of a release-vs-release diff: +# the archived files compare the dev snapshot (which has just become ) +# against , so any commits merged between the release and this bump are +# included too. +# +# Mirrors generate-protobuf.yml: a read-only `generate` job produces a patch +# artifact and a privileged `publish` job pushes it back. + +on: + push: + branches: + - "renovate/api-diff-baseline" + +permissions: {} + +jobs: + generate: + runs-on: ubuntu-24.04 + permissions: + contents: read # checkout + read-only `git fetch origin main` for the verify step + steps: + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 + with: + ref: ${{ github.ref }} + persist-credentials: false + - uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4.0.1 + with: + version: v2026.5.18 + sha256: cfac593469d028d7ae5fe36e37bd7c59118b5238e92d8a876209578464f24a84 + - name: Cache local Maven repository + uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-maven- + - name: Archive the previous current_vs_latest + run: | + git fetch origin main + baseline() { + grep -oP '(?<=)[^<]+' "$1" + } + OLD=$(git show origin/main:pom.xml | baseline /dev/stdin) + NEW=$(baseline pom.xml) + if [[ -z "$OLD" || -z "$NEW" ]]; then + echo "::error::Could not read api.diff.baseline.version" + exit 1 + fi + if [[ "$OLD" == "$NEW" ]]; then + echo "::error::api.diff.baseline.version unchanged ($NEW); nothing to bump" + exit 1 + fi + if [[ -d docs/apidiffs/current_vs_latest ]]; then + cp -r docs/apidiffs/current_vs_latest "docs/apidiffs/${NEW}_vs_${OLD}" + echo "Archived current_vs_latest as ${NEW}_vs_${OLD}" + fi + - name: Regenerate docs/apidiffs + run: mise run api-diff + - name: Validate and export docs/apidiffs as a patch + run: | + # Stage first so newly added files (the archived dir) are captured. + git add docs/apidiffs + OUTSIDE=$(git status --porcelain -- ':(exclude)docs/apidiffs') + if [[ -n "$OUTSIDE" ]]; then + echo "::error::Unexpected changes outside docs/apidiffs:" + echo "$OUTSIDE" + exit 1 + fi + git diff --cached -- docs/apidiffs > /tmp/api-diff-baseline.patch + - name: Upload generated patch + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: api-diff-baseline-patch + path: /tmp/api-diff-baseline.patch + retention-days: 5 + + publish: + runs-on: ubuntu-24.04 + needs: generate + permissions: + contents: write # push regenerated docs/apidiffs back to the renovate branch + steps: + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 + with: + ref: ${{ github.ref }} + # zizmor: ignore[artipacked] -- needs credentials to push + persist-credentials: true + - name: Download generated patch + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 + with: + name: api-diff-baseline-patch + path: /tmp/patch + - name: Commit and push regenerated docs/apidiffs + run: | + PATCH=/tmp/patch/api-diff-baseline.patch + if [[ ! -s "$PATCH" ]]; then + echo "No regenerated changes to commit" + exit 0 + fi + git apply "$PATCH" + # Note: GITHUB_TOKEN pushes don't trigger CI re-runs. + # Close and reopen the PR to trigger CI after this commit. + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git add docs/apidiffs + git commit -m "chore: regenerate docs/apidiffs" + git push diff --git a/.github/workflows/generate-protobuf.yml b/.github/workflows/generate-protobuf.yml index d144d0296..e186836c8 100644 --- a/.github/workflows/generate-protobuf.yml +++ b/.github/workflows/generate-protobuf.yml @@ -12,17 +12,16 @@ jobs: generate: runs-on: ubuntu-24.04 permissions: - contents: write + contents: read # checkout + read-only `git fetch origin main` for the verify step steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 with: ref: ${{ github.ref }} - # zizmor: ignore[artipacked] -- needs credentials to push - persist-credentials: true + persist-credentials: false - uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4.0.1 with: - version: v2026.5.0 - sha256: 7db5db7a36d28203eb8329140d98fb26b41f5efea32d762f69a1e4b369e1e1a8 + version: v2026.5.18 + sha256: cfac593469d028d7ae5fe36e37bd7c59118b5238e92d8a876209578464f24a84 - name: Cache local Maven repository uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 with: @@ -45,18 +44,48 @@ jobs: fi - name: Generate protobuf sources run: mise run generate - - name: Commit and push generated sources + - name: Validate and export generated sources as a patch run: | - git diff --quiet && exit 0 UNEXPECTED=$(git diff --name-only | grep -v '\.java$' || true) if [[ -n "$UNEXPECTED" ]]; then echo "::error::Unexpected files changed:" echo "$UNEXPECTED" exit 1 fi + git diff --binary > /tmp/protobuf-sources.patch + - name: Upload generated patch + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: protobuf-sources-patch + path: /tmp/protobuf-sources.patch + retention-days: 5 + + publish: + runs-on: ubuntu-24.04 + needs: generate + permissions: + contents: write # push regenerated sources back to the renovate branch + steps: + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 + with: + ref: ${{ github.ref }} + # zizmor: ignore[artipacked] -- needs credentials to push + persist-credentials: true + - name: Download generated patch + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 + with: + name: protobuf-sources-patch + path: /tmp/patch + - name: Commit and push generated sources + run: | + PATCH=/tmp/patch/protobuf-sources.patch + if [[ ! -s "$PATCH" ]]; then + echo "No generated changes to commit" + exit 0 + fi + git apply "$PATCH" # Note: GITHUB_TOKEN pushes don't trigger CI re-runs. # Close and reopen the PR to trigger CI after this commit. - # TODO: switch to PROMBOT_GITHUB_TOKEN once it's added to this repo. git config user.name "github-actions[bot]" git config user.email "41898282+github-actions[bot]@users.noreply.github.com" git add '*.java' diff --git a/.github/workflows/github-pages.yaml b/.github/workflows/github-pages.yaml index 255cd0bff..270cdf677 100644 --- a/.github/workflows/github-pages.yaml +++ b/.github/workflows/github-pages.yaml @@ -32,15 +32,15 @@ jobs: if: github.repository == 'prometheus/client_java' runs-on: ubuntu-24.04 steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 with: persist-credentials: false fetch-tags: "true" fetch-depth: 0 - uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4.0.1 with: - version: v2026.5.0 - sha256: 7db5db7a36d28203eb8329140d98fb26b41f5efea32d762f69a1e4b369e1e1a8 + version: v2026.5.18 + sha256: cfac593469d028d7ae5fe36e37bd7c59118b5238e92d8a876209578464f24a84 cache: "false" - name: Setup Pages id: pages diff --git a/.github/workflows/issue-management-stale-action.yml b/.github/workflows/issue-management-stale-action.yml index 495904d22..f06dfb4ec 100644 --- a/.github/workflows/issue-management-stale-action.yml +++ b/.github/workflows/issue-management-stale-action.yml @@ -25,7 +25,7 @@ jobs: # Handle stale PRs # - After 120 days inactive: Adds "stale" label + warning comment # - After 30 more days inactive: Closes - - uses: actions/stale@b5d41d4e1d5dceea10e7104786b73624c18a190f # v10.2.0 + - uses: actions/stale@eb5cf3af3ac0a1aa4c9c45633dd1ae542a27a899 # v10.3.0 with: days-before-issue-stale: -1 days-before-issue-close: -1 @@ -43,7 +43,7 @@ jobs: # Handle stale issues # - After 360 days (12 months) inactive: Adds "stale" label + warning comment # - After 30 more days inactive: Closes - - uses: actions/stale@b5d41d4e1d5dceea10e7104786b73624c18a190f # v10.2.0 + - uses: actions/stale@eb5cf3af3ac0a1aa4c9c45633dd1ae542a27a899 # v10.3.0 with: days-before-issue-stale: 360 days-before-issue-close: 30 diff --git a/.github/workflows/java-version-matrix-tests.yml b/.github/workflows/java-version-matrix-tests.yml index 8fa4b7e3a..ad8526c66 100644 --- a/.github/workflows/java-version-matrix-tests.yml +++ b/.github/workflows/java-version-matrix-tests.yml @@ -26,24 +26,21 @@ jobs: java-version: [8, 11, 17, 21, 25] steps: - name: Check out - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: persist-credentials: false - name: Set up mise uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4.0.1 with: - version: v2026.5.0 - sha256: 7db5db7a36d28203eb8329140d98fb26b41f5efea32d762f69a1e4b369e1e1a8 + version: v2026.5.18 + sha256: cfac593469d028d7ae5fe36e37bd7c59118b5238e92d8a876209578464f24a84 - name: Cache local Maven repository uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 with: path: ~/.m2/repository key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} - restore-keys: | - ${{ runner.os }}-maven- - - name: Build core library artifacts run: mise exec -- ./mvnw install -DskipTests -Dcoverage.skip=true -Dcheckstyle.skip=true -Dwarnings=-nowarn -pl '!integration-tests' diff --git a/.github/workflows/jmx-exporter-compatibility.yml b/.github/workflows/jmx-exporter-compatibility.yml new file mode 100644 index 000000000..79a1e9eb9 --- /dev/null +++ b/.github/workflows/jmx-exporter-compatibility.yml @@ -0,0 +1,40 @@ +--- +name: JMX Exporter Compatibility + +on: + pull_request: + workflow_dispatch: + inputs: + repository: + description: JMX Exporter repository to test, in owner/name form + required: false + default: prometheus/jmx_exporter + ref: + description: JMX Exporter branch, tag, or commit to test + required: true + +permissions: {} + +jobs: + jmx-exporter-compatibility: + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 + with: + persist-credentials: false + - uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4.0.1 + with: + version: v2026.5.18 + sha256: cfac593469d028d7ae5fe36e37bd7c59118b5238e92d8a876209578464f24a84 + working_directory: .mise/envs/jmx-exporter + - name: Cache local Maven repository + uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + - name: Run JMX Exporter compatibility tests + working-directory: .mise/envs/jmx-exporter + env: + JMX_EXPORTER_REPOSITORY: ${{ inputs.repository || 'prometheus/jmx_exporter' }} + JMX_EXPORTER_REF: ${{ inputs.ref }} + run: mise compat-test diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 75a59f177..bcac21fc3 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -15,7 +15,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: persist-credentials: false fetch-depth: 0 # needed for git diff --merge-base in lint:links @@ -23,8 +23,8 @@ jobs: - name: Setup mise uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4.0.1 with: - version: v2026.5.0 - sha256: 7db5db7a36d28203eb8329140d98fb26b41f5efea32d762f69a1e4b369e1e1a8 + version: v2026.5.18 + sha256: cfac593469d028d7ae5fe36e37bd7c59118b5238e92d8a876209578464f24a84 - name: Lint env: diff --git a/.github/workflows/micrometer-compatibility.yml b/.github/workflows/micrometer-compatibility.yml new file mode 100644 index 000000000..11c4e8553 --- /dev/null +++ b/.github/workflows/micrometer-compatibility.yml @@ -0,0 +1,61 @@ +--- +name: Micrometer Compatibility + +on: + pull_request: + workflow_dispatch: + +permissions: {} + +jobs: + compat-test: + name: ${{ matrix.name }} + runs-on: ubuntu-24.04 + strategy: + fail-fast: false + matrix: + include: + - name: upstream + repository: micrometer-metrics/micrometer + # renovate: datasource=github-releases depName=micrometer-metrics/micrometer packageName=micrometer-metrics/micrometer + ref: v1.16.5 + - name: typed-descriptor + # TODO: remove this temporary opt-in leg once Micrometer switches the + # Prometheus client integration to typed descriptors by default. + # Follow-up: https://github.com/prometheus/client_java/issues/2182 + repository: zeitlinger/micrometer + # renovate: datasource=git-refs depName=zeitlinger/micrometer packageName=https://github.com/zeitlinger/micrometer currentValue=feat/prometheus-client-opt-in + ref: 1af1b3185058941eea57dc467bfe0df5a4786fe4 + steps: + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + with: + persist-credentials: false + - uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4.0.1 + with: + version: v2026.5.18 + sha256: cfac593469d028d7ae5fe36e37bd7c59118b5238e92d8a876209578464f24a84 + working_directory: .mise/envs/micrometer + - name: Cache local Maven repository + uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + - name: Run Micrometer compatibility tests + working-directory: .mise/envs/micrometer + env: + MICROMETER_REPOSITORY: ${{ matrix.repository }} + MICROMETER_REF: ${{ matrix.ref }} + run: mise compat-test + + micrometer-compatibility: + name: micrometer-compatibility + runs-on: ubuntu-24.04 + needs: compat-test + if: always() + steps: + - name: Aggregate matrix results + run: | + if [[ "${{ needs.compat-test.result }}" != "success" ]]; then + echo "compat-test matrix failed: ${{ needs.compat-test.result }}" + exit 1 + fi diff --git a/.github/workflows/multi-version-test.yml b/.github/workflows/multi-version-test.yml index 4e5252826..3545ce207 100644 --- a/.github/workflows/multi-version-test.yml +++ b/.github/workflows/multi-version-test.yml @@ -15,7 +15,7 @@ jobs: java: [17, 21, 25] steps: - name: Check out - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 with: persist-credentials: false @@ -31,9 +31,5 @@ jobs: with: path: ~/.m2/repository key: ${{ runner.os }}-maven-java${{ matrix.java }}-${{ hashFiles('**/pom.xml') }} - restore-keys: | - ${{ runner.os }}-maven-java${{ matrix.java }}- - ${{ runner.os }}-maven- - - name: Build and test on Java ${{ matrix.java }} run: ./mvnw clean install -Dtest.java.version=${{ matrix.java }} -Dcheckstyle.skip=true -Dwarnings=-nowarn -Dcoverage.skip=true diff --git a/.github/workflows/native-tests.yml b/.github/workflows/native-tests.yml index 80caff392..e21b9d94a 100644 --- a/.github/workflows/native-tests.yml +++ b/.github/workflows/native-tests.yml @@ -12,11 +12,11 @@ jobs: - name: Check out with: persist-credentials: false - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 - uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4.0.1 with: - version: v2026.5.0 - sha256: 7db5db7a36d28203eb8329140d98fb26b41f5efea32d762f69a1e4b369e1e1a8 + version: v2026.5.18 + sha256: cfac593469d028d7ae5fe36e37bd7c59118b5238e92d8a876209578464f24a84 working_directory: .mise/envs/native - name: Run native tests working-directory: .mise/envs/native diff --git a/.github/workflows/nightly-benchmarks.yml b/.github/workflows/nightly-benchmarks.yml index e3a318b1c..134209cc5 100644 --- a/.github/workflows/nightly-benchmarks.yml +++ b/.github/workflows/nightly-benchmarks.yml @@ -25,19 +25,19 @@ jobs: benchmark: runs-on: ubuntu-24.04 permissions: - contents: write + contents: read # checkout only steps: - name: Checkout main branch - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: - persist-credentials: true + persist-credentials: false fetch-depth: 0 - name: Setup mise uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4.0.1 with: - version: v2026.5.0 - sha256: 7db5db7a36d28203eb8329140d98fb26b41f5efea32d762f69a1e4b369e1e1a8 + version: v2026.5.18 + sha256: cfac593469d028d7ae5fe36e37bd7c59118b5238e92d8a876209578464f24a84 - name: Cache local Maven repository uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 @@ -61,12 +61,34 @@ jobs: env: GITHUB_REPOSITORY: ${{ github.repository }} + - name: Upload benchmark results + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: benchmark-results + path: benchmark-results + retention-days: 5 + + publish: + runs-on: ubuntu-24.04 + needs: benchmark + permissions: + contents: write # push generated results to the benchmarks branch + steps: + - name: Checkout + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + with: + # zizmor: ignore[artipacked] -- needs credentials to push to benchmarks branch + persist-credentials: true + fetch-depth: 0 + + - name: Download benchmark results + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 + with: + name: benchmark-results + path: /tmp/benchmark-output + - name: Commit and push results to benchmarks branch run: | - # Save results to a temp location - mkdir -p /tmp/benchmark-output - cp -r benchmark-results/* /tmp/benchmark-output/ - git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" diff --git a/.github/workflows/pr-title.yml b/.github/workflows/pr-title.yml index 76a13e3df..5434323e0 100644 --- a/.github/workflows/pr-title.yml +++ b/.github/workflows/pr-title.yml @@ -6,12 +6,13 @@ on: types: - opened - edited -permissions: - pull-requests: read +permissions: {} jobs: lint: runs-on: ubuntu-latest + permissions: + pull-requests: read # action-semantic-pull-request reads the PR title steps: - uses: amannn/action-semantic-pull-request@48f256284bd46cdaab1048c3721360e808335d50 # v6.1.1 env: diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index b72ee5457..9e2b1cf62 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -6,16 +6,17 @@ on: branches: - main -permissions: - actions: write - contents: write - issues: write - pull-requests: write +permissions: {} jobs: release-please: if: ${{ github.repository == 'prometheus/client_java' }} runs-on: ubuntu-24.04 + permissions: + contents: write # release-please creates release commits, tags, and the GitHub release + pull-requests: write # release-please opens/updates the release PR + issues: write # release-please comments on/labels issues included in the release + actions: write # required to trigger release.yml via `gh workflow run` steps: - uses: googleapis/release-please-action@45996ed1f6d02564a971a2fa1b5860e934307cf7 # v5.0 id: release-please @@ -28,6 +29,7 @@ jobs: if: ${{ steps.release-please.outputs.releases_created == 'true' }} env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + TAG_NAME: ${{ steps.release-please.outputs.tag_name }} run: > gh workflow run release.yml --repo "${GITHUB_REPOSITORY}" - -f tag=${{ steps.release-please.outputs.tag_name }} + -f "tag=${TAG_NAME}" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4a85f433b..6ba78b44a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -8,9 +8,12 @@ on: description: "Release tag to deploy (e.g. v1.5.1)" required: true +permissions: {} + jobs: deploy: if: ${{ github.repository == 'prometheus/client_java' }} + environment: release runs-on: ubuntu-24.04 permissions: {} @@ -22,15 +25,15 @@ jobs: echo "${#GPG_SIGNING_KEY}" echo "${GPG_SIGNING_KEY}" | gpg --batch --import-options import-show --import - name: Checkout Plugin Repository - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 with: ref: ${{ inputs.tag }} persist-credentials: false - uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4.0.1 with: - version: v2026.5.0 - sha256: 7db5db7a36d28203eb8329140d98fb26b41f5efea32d762f69a1e4b369e1e1a8 + version: v2026.5.18 + sha256: cfac593469d028d7ae5fe36e37bd7c59118b5238e92d8a876209578464f24a84 cache: false - name: Build release version diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml new file mode 100644 index 000000000..6e2f53bd7 --- /dev/null +++ b/.github/workflows/scorecard.yml @@ -0,0 +1,46 @@ +--- +name: OSSF Scorecard + +on: + push: + branches: [main] + schedule: + - cron: "43 6 * * 5" # Weekly Friday 06:43 UTC + workflow_dispatch: + +permissions: {} + +jobs: + analysis: + name: Scorecard analysis + runs-on: ubuntu-24.04 + # Prevents fork runs from failing due to missing write permissions or secrets. + if: ${{ github.repository == 'prometheus/client_java' }} + permissions: + contents: read + security-events: write # required to upload SARIF results + id-token: write # required by scorecard-action for OIDC token + steps: + - name: Checkout repository + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 + with: + persist-credentials: false + + - name: Run OSSF Scorecard analysis + uses: ossf/scorecard-action@4eaacf0543bb3f2c246792bd56e8cdeffafb205a # v2.4.3 + with: + results_file: results.sarif + results_format: sarif + publish_results: true + + - name: Upload artifact + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: SARIF file + path: results.sarif + retention-days: 5 + + - name: Upload to code scanning + uses: github/codeql-action/upload-sarif@87557b9c84dde89fdd9b10e88954ac2f4248e463 # v4.36.1 + with: + sarif_file: results.sarif diff --git a/.github/workflows/test-release-build.yml b/.github/workflows/test-release-build.yml index c31fe4ce6..ff9ffbdad 100644 --- a/.github/workflows/test-release-build.yml +++ b/.github/workflows/test-release-build.yml @@ -13,22 +13,20 @@ jobs: build: runs-on: ubuntu-24.04 steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 with: persist-credentials: false fetch-tags: "true" fetch-depth: 0 - uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4.0.1 with: - version: v2026.5.0 - sha256: 7db5db7a36d28203eb8329140d98fb26b41f5efea32d762f69a1e4b369e1e1a8 + version: v2026.5.18 + sha256: cfac593469d028d7ae5fe36e37bd7c59118b5238e92d8a876209578464f24a84 - name: Cache local Maven repository uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 with: path: ~/.m2/repository key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} - restore-keys: | - ${{ runner.os }}-maven- - name: Build GitHub Pages run: mise run build-gh-pages env: diff --git a/.mise/envs/jmx-exporter/mise.toml b/.mise/envs/jmx-exporter/mise.toml new file mode 100644 index 000000000..a04b4948c --- /dev/null +++ b/.mise/envs/jmx-exporter/mise.toml @@ -0,0 +1,10 @@ +# The pinned JMX Exporter release does not build on the primary JDK (Java 25): +# its spotless google-java-format predates JDK 25 support. Build it under an LTS +# JDK the release supports instead. +[tools] +java = "temurin-21.0.11+10.0.LTS" + +[tasks.compat-test] +description = "Run JMX Exporter compatibility tests under a supported JDK" +dir = "../../.." +run = "python3 .mise/tasks/jmx-exporter/test.py" diff --git a/.mise/envs/micrometer/mise.toml b/.mise/envs/micrometer/mise.toml new file mode 100644 index 000000000..e5318c1d6 --- /dev/null +++ b/.mise/envs/micrometer/mise.toml @@ -0,0 +1,10 @@ +# The pinned Micrometer release does not build on the primary JDK (Java 25): +# its bundled Kotlin compiler predates JDK 25 support. Build it under an LTS JDK +# the release supports instead. +[tools] +java = "temurin-21.0.11+10.0.LTS" + +[tasks.compat-test] +description = "Run Micrometer compatibility tests under a supported JDK" +dir = "../../.." +run = "python3 .mise/tasks/micrometer/test.py" diff --git a/.mise/lib/jmx_exporter_compat.py b/.mise/lib/jmx_exporter_compat.py new file mode 100755 index 000000000..b55080b5e --- /dev/null +++ b/.mise/lib/jmx_exporter_compat.py @@ -0,0 +1,161 @@ +#!/usr/bin/env python3 + +from __future__ import annotations + +import os +import re +import subprocess +import xml.etree.ElementTree as ET +from pathlib import Path +from typing import Optional + + +DEFAULT_JMX_EXPORTER_DIR = Path( + os.environ.get("JMX_EXPORTER_DIR", "/tmp/jmx-exporter-compat") +) +DEFAULT_JMX_EXPORTER_REPOSITORY = os.environ.get( + "JMX_EXPORTER_REPOSITORY", "prometheus/jmx_exporter" +) +DEFAULT_JMX_EXPORTER_REMOTE = os.environ.get("JMX_EXPORTER_REMOTE", "origin") +# Test jmx_exporter main rather than the latest release: the integration_test_suite +# only compiles against client_java once a release adopts the stable Metrics class +# (see the tracking issue referenced in mise.toml's DEFAULT_JMX_EXPORTER_VERSION). +DEFAULT_JMX_EXPORTER_REF = os.environ.get("JMX_EXPORTER_REF") or "main" +DEFAULT_PROM_VERSION = os.environ.get("PROM_VERSION") + +# Quick test configuration: the integration_test_suite runs one matrix cell +# (single Java + Prometheus distribution) instead of the full smoke-test matrix. +# The distributions are read from the checked-out jmx_exporter's run-quick-test.sh +# so they stay aligned with upstream rather than drifting from a hardcoded copy. +QUICK_TEST_SCRIPT = "run-quick-test.sh" +QUICK_TEST_IMAGE_VARS = ("JAVA_DOCKER_IMAGES", "PROMETHEUS_DOCKER_IMAGES") + + +def run_cmd( + cmd: list[str], + cwd: Optional[Path] = None, + env: Optional[dict[str, str]] = None, +) -> None: + subprocess.run(cmd, cwd=cwd, check=True, env=env) + + +def jmx_exporter_repository_url(repository: str) -> str: + return f"https://github.com/{repository}.git" + + +def check_clean_worktree(jmx_exporter_dir: Path) -> None: + result = subprocess.run( + ["git", "status", "--short"], + cwd=jmx_exporter_dir, + check=True, + capture_output=True, + text=True, + ) + if result.stdout.strip(): + raise RuntimeError( + f"{jmx_exporter_dir} has uncommitted changes; use a clean clone or set " + "JMX_EXPORTER_DIR" + ) + + +def get_prom_version(root_dir: Path = Path.cwd()) -> str: + configured_version = DEFAULT_PROM_VERSION + if configured_version: + return configured_version + pom = ET.parse(root_dir / "pom.xml") + root = pom.getroot() + version = root.findtext("./{*}version") + if not version: + version = root.findtext("./{*}parent/{*}version") + if not version: + raise RuntimeError("could not determine Prometheus version from pom.xml") + return version + + +def prepare_repo( + jmx_exporter_dir: Path = DEFAULT_JMX_EXPORTER_DIR, + repository: str = DEFAULT_JMX_EXPORTER_REPOSITORY, + remote: str = DEFAULT_JMX_EXPORTER_REMOTE, + ref: str = DEFAULT_JMX_EXPORTER_REF, +) -> None: + repository_url = jmx_exporter_repository_url(repository) + if (jmx_exporter_dir / ".git").is_dir(): + check_clean_worktree(jmx_exporter_dir) + run_cmd( + ["git", "remote", "set-url", remote, repository_url], + cwd=jmx_exporter_dir, + ) + run_cmd(["git", "fetch", remote, ref], cwd=jmx_exporter_dir) + else: + run_cmd(["git", "clone", repository_url, str(jmx_exporter_dir)]) + run_cmd(["git", "fetch", remote, ref], cwd=jmx_exporter_dir) + run_cmd( + ["git", "checkout", "-B", "jmx-exporter-compat", "FETCH_HEAD"], + cwd=jmx_exporter_dir, + ) + + +def install_local_artifacts(root_dir: Path = Path.cwd()) -> None: + run_cmd( + [ + "./mvnw", + "install", + # Skip test compilation too (not just execution): downstream needs only + # our main artifacts, and our test sources target a newer release than + # the compatibility JDK supports. + "-Dmaven.test.skip=true", + # Deactivate the activeByDefault profiles that add test-only + # dependencies (incl. a test-jar). With maven.test.skip those are not + # built, so leaving the profile active breaks dependency resolution. + # Same approach the release task uses (-P 'release,!default'). + "-P", + "!default", + "-Dcoverage.skip=true", + "-Dcheckstyle.skip=true", + "-Dwarnings=-nowarn", + ], + cwd=root_dir, + ) + + +def quick_test_images( + jmx_exporter_dir: Path = DEFAULT_JMX_EXPORTER_DIR, +) -> dict[str, str]: + """Read the quick test docker image pins from the checked-out jmx_exporter's + run-quick-test.sh. An explicit env var overrides the script value.""" + script_path = jmx_exporter_dir / QUICK_TEST_SCRIPT + script = script_path.read_text() + images: dict[str, str] = {} + for var in QUICK_TEST_IMAGE_VARS: + override = os.environ.get(var) + if override: + images[var] = override + continue + match = re.search(rf'^\s*export\s+{var}="([^"]+)"', script, re.MULTILINE) + if not match: + raise RuntimeError(f"could not find {var} in {script_path}") + images[var] = match.group(1) + return images + + +def run_maven_test( + jmx_exporter_dir: Path = DEFAULT_JMX_EXPORTER_DIR, + prom_version: Optional[str] = None, +) -> None: + if prom_version is None: + prom_version = get_prom_version() + # Build the full reactor (including the integration_test_suite) the same way + # run-quick-test.sh does, but against our locally installed io.prometheus + # artifacts. The pinned distribution env vars keep this to the quick (single + # cell) matrix rather than the full smoke-test matrix. + env = {**os.environ, **quick_test_images(jmx_exporter_dir)} + cmd = [ + "./mvnw", + "-B", + "clean", + "install", + f"-Dprometheus.metrics.version={prom_version}", + f"-Dparamixel.parallelism={os.cpu_count() or 1}", + "-Djacoco.skip=true", + ] + run_cmd(cmd, cwd=jmx_exporter_dir, env=env) diff --git a/.mise/lib/micrometer_compat.py b/.mise/lib/micrometer_compat.py new file mode 100755 index 000000000..dc3b9191f --- /dev/null +++ b/.mise/lib/micrometer_compat.py @@ -0,0 +1,160 @@ +#!/usr/bin/env python3 + +from __future__ import annotations + +import os +import subprocess +import xml.etree.ElementTree as ET +from pathlib import Path +from typing import Optional + + +DEFAULT_MICROMETER_DIR = Path( + os.environ.get("MICROMETER_DIR", "/tmp/micrometer-compat") +) +DEFAULT_MICROMETER_REPOSITORY = os.environ.get( + "MICROMETER_REPOSITORY", "micrometer-metrics/micrometer" +) +DEFAULT_MICROMETER_REMOTE = os.environ.get("MICROMETER_REMOTE", "origin") +DEFAULT_MICROMETER_REF = ( + os.environ.get("MICROMETER_REF") + or os.environ.get("DEFAULT_MICROMETER_VERSION") + or "main" +) +DEFAULT_INIT_SCRIPT = Path( + os.environ.get("MICROMETER_INIT_SCRIPT", "/tmp/micrometer-prom-local.init.gradle") +) +DEFAULT_PROM_VERSION = os.environ.get("PROM_VERSION") + + +def run_cmd(cmd: list[str], cwd: Optional[Path] = None) -> None: + subprocess.run(cmd, cwd=cwd, check=True) + + +def micrometer_repository_url(repository: str) -> str: + return f"https://github.com/{repository}.git" + + +def check_clean_worktree(micrometer_dir: Path) -> None: + result = subprocess.run( + ["git", "status", "--short"], + cwd=micrometer_dir, + check=True, + capture_output=True, + text=True, + ) + if result.stdout.strip(): + raise RuntimeError( + f"{micrometer_dir} has uncommitted changes; use a clean clone or set MICROMETER_DIR" + ) + + +def get_prom_version(root_dir: Path = Path.cwd()) -> str: + configured_version = DEFAULT_PROM_VERSION + if configured_version: + return configured_version + pom = ET.parse(root_dir / "pom.xml") + root = pom.getroot() + version = root.findtext("./{*}version") + if not version: + version = root.findtext("./{*}parent/{*}version") + if not version: + raise RuntimeError("could not determine Prometheus version from pom.xml") + return version + + +def write_init_script( + init_script: Path = DEFAULT_INIT_SCRIPT, prom_version: Optional[str] = None +) -> None: + if prom_version is None: + prom_version = get_prom_version() + init_script.write_text( + f"""allprojects {{ + repositories {{ + mavenLocal() + mavenCentral() + gradlePluginPortal() + }} + configurations.configureEach {{ + resolutionStrategy.eachDependency {{ details -> + if (details.requested.group == 'io.prometheus') {{ + details.useVersion('{prom_version}') + details.because( + 'Use local prom_client_java artifacts for downstream compatibility testing' + ) + }} + }} + }} +}} +""", + encoding="utf-8", + ) + + +def prepare_repo( + micrometer_dir: Path = DEFAULT_MICROMETER_DIR, + repository: str = DEFAULT_MICROMETER_REPOSITORY, + remote: str = DEFAULT_MICROMETER_REMOTE, + ref: str = DEFAULT_MICROMETER_REF, +) -> None: + repository_url = micrometer_repository_url(repository) + if (micrometer_dir / ".git").is_dir(): + check_clean_worktree(micrometer_dir) + run_cmd( + ["git", "remote", "set-url", remote, repository_url], cwd=micrometer_dir + ) + run_cmd(["git", "fetch", remote, ref], cwd=micrometer_dir) + else: + run_cmd( + [ + "git", + "clone", + repository_url, + str(micrometer_dir), + ] + ) + run_cmd(["git", "fetch", remote, ref], cwd=micrometer_dir) + run_cmd( + ["git", "checkout", "-B", "micrometer-compat", "FETCH_HEAD"], + cwd=micrometer_dir, + ) + + +def install_local_artifacts(root_dir: Path = Path.cwd()) -> None: + run_cmd( + [ + "./mvnw", + "install", + # Skip test compilation too (not just execution): downstream needs only + # our main artifacts, and our test sources target a newer release than + # the compatibility JDK supports. + "-Dmaven.test.skip=true", + # Deactivate the activeByDefault profiles that add test-only + # dependencies (incl. a test-jar). With maven.test.skip those are not + # built, so leaving the profile active breaks dependency resolution. + # Same approach the release task uses (-P 'release,!default'). + "-P", + "!default", + "-Dcoverage.skip=true", + "-Dcheckstyle.skip=true", + "-Dwarnings=-nowarn", + ], + cwd=root_dir, + ) + + +def run_gradle_test( + test_selector: Optional[str] = None, + micrometer_dir: Path = DEFAULT_MICROMETER_DIR, + init_script: Path = DEFAULT_INIT_SCRIPT, +) -> None: + cmd = [ + "./gradlew", + "--no-daemon", + "-I", + str(init_script), + ":micrometer-registry-prometheus:test", + ] + if test_selector: + cmd.extend(["--tests", test_selector]) + run_cmd(cmd, cwd=micrometer_dir) diff --git a/.mise/tasks/jmx-exporter/prepare.py b/.mise/tasks/jmx-exporter/prepare.py new file mode 100755 index 000000000..348415f7f --- /dev/null +++ b/.mise/tasks/jmx-exporter/prepare.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python3 + +# [MISE] description="Install local artifacts and check out a target JMX Exporter ref" +# [MISE] alias="jmx-exporter:prepare" + +import sys + + +sys.path.insert(0, ".mise/lib") + + +def main() -> int: + from jmx_exporter_compat import install_local_artifacts, prepare_repo + + install_local_artifacts() + prepare_repo() + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/.mise/tasks/jmx-exporter/test.py b/.mise/tasks/jmx-exporter/test.py new file mode 100755 index 000000000..3e3989300 --- /dev/null +++ b/.mise/tasks/jmx-exporter/test.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python3 + +# [MISE] description="Run JMX Exporter tests against a target ref" +# [MISE] alias="jmx-exporter:test" + +import sys + + +sys.path.insert(0, ".mise/lib") + + +def main() -> int: + from jmx_exporter_compat import ( + install_local_artifacts, + prepare_repo, + run_maven_test, + ) + + install_local_artifacts() + prepare_repo() + run_maven_test() + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/.mise/tasks/micrometer/prepare.py b/.mise/tasks/micrometer/prepare.py new file mode 100755 index 000000000..ba13acf69 --- /dev/null +++ b/.mise/tasks/micrometer/prepare.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python3 + +# [MISE] description="Install local artifacts and check out a target Micrometer ref" +# [MISE] alias="micrometer:prepare" + +import sys + + +sys.path.insert(0, ".mise/lib") + + +def main() -> int: + from micrometer_compat import ( + install_local_artifacts, + prepare_repo, + write_init_script, + ) + + install_local_artifacts() + prepare_repo() + write_init_script() + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/.mise/tasks/micrometer/test.py b/.mise/tasks/micrometer/test.py new file mode 100755 index 000000000..40316f569 --- /dev/null +++ b/.mise/tasks/micrometer/test.py @@ -0,0 +1,28 @@ +#!/usr/bin/env python3 + +# [MISE] description="Run Micrometer Prometheus registry tests against a target Micrometer ref" +# [MISE] alias="micrometer:test" + +import sys + + +sys.path.insert(0, ".mise/lib") + + +def main() -> int: + from micrometer_compat import ( + install_local_artifacts, + prepare_repo, + run_gradle_test, + write_init_script, + ) + + install_local_artifacts() + prepare_repo() + write_init_script() + run_gradle_test() + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties index 475e64909..e788e5e69 100644 --- a/.mvn/wrapper/maven-wrapper.properties +++ b/.mvn/wrapper/maven-wrapper.properties @@ -1,2 +1,2 @@ distributionType=only-script -distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.15/apache-maven-3.9.15-bin.zip +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.16/apache-maven-3.9.16-bin.zip diff --git a/AGENTS.md b/AGENTS.md index f9da50dcd..24481b8e5 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -102,7 +102,15 @@ Pre-built instrumentations: - Do not prefix PR titles with `[codex]`. - Match the PR title type to the primary user-facing change. -## Linting and Validation +## Linting + +Run `mise run lint:fix` before committing changes. +If output includes `fixed`, keep those changes. +If output includes `partial` or `review`, address the remaining issues and +run `mise run lint:fix` again. + +Example output: +flint: fixed: gofmt — commit before pushing | partial: cargo-clippy **CRITICAL**: These checks MUST be run before creating any commits. CI will fail if these checks fail. @@ -117,39 +125,6 @@ commits. CI will fail if these checks fail. - Build succeeds (tests are skipped; run `mise run test` or `mise run test-all` for tests) -### Non-Java Files (Markdown, YAML, JSON, shell scripts) - -- **ALWAYS** run `mise run lint` after modifying non-Java - files (runs super-linter + link checking + BOM check) -- `mise run lint:fix` autofixes linting issues -- Super-linter will **autofix** many issues - (formatting, trailing whitespace, etc.) -- It only reports ERROR-level issues - (configured via `LOG_LEVEL=ERROR` in - `.github/super-linter.env`) -- Common issues caught: - - Lines exceeding 100 characters in Markdown files - - Missing language tags in fenced code blocks - - Table formatting issues - - YAML/JSON syntax errors - -### Running Linters - -```bash -# After modifying Java files (run BEFORE committing) -mise run build - -# After modifying non-Java files (run BEFORE committing) -mise run lint -# or to autofix: mise run lint:fix -``` - -### Before Pushing - -**ALWAYS** run `mise run lint` before pushing to verify -all lints pass. CI runs the same checks and will fail -if any lint is violated. - ## Testing - JUnit 5 (Jupiter) with `@Test` annotations diff --git a/CHANGELOG.md b/CHANGELOG.md index 7daa57cd4..68cdfb6e8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,44 @@ # Changelog +## [1.7.0](https://github.com/prometheus/client_java/compare/v1.6.1...v1.7.0) (2026-06-03) + + +### Features + +* Add StableApi marker and API diff check ([#2168](https://github.com/prometheus/client_java/issues/2168)) ([768fd3a](https://github.com/prometheus/client_java/commit/768fd3a7aab5f11f3558a35c0d6257b5a217a078)) +* add typed metric family descriptors ([#2114](https://github.com/prometheus/client_java/issues/2114)) ([9c3b097](https://github.com/prometheus/client_java/commit/9c3b097f6842ffc08fb3a2ed00217c73a6c2b191)) +* track api-diff baseline via Renovate and store diffs in docs/apidiffs ([#2174](https://github.com/prometheus/client_java/issues/2174)) ([3adb890](https://github.com/prometheus/client_java/commit/3adb89078df4bf3d7739886612d4cf051176a6f3)) + + +### Bug Fixes + +* **deps:** update dependency com.github.ben-manes.caffeine:caffeine to v3.2.4 ([#2088](https://github.com/prometheus/client_java/issues/2088)) ([144eb61](https://github.com/prometheus/client_java/commit/144eb61030d412afe83631b8f341d2cb1595ab1c)) +* **deps:** update dependency io.dropwizard.metrics:metrics-core to v4.2.39 ([#2139](https://github.com/prometheus/client_java/issues/2139)) ([5817d13](https://github.com/prometheus/client_java/commit/5817d1395dc348b6634ea169264fd13f4ad56e82)) +* **deps:** update dependency io.dropwizard.metrics5:metrics-core to v5.0.7 ([#2140](https://github.com/prometheus/client_java/issues/2140)) ([261c451](https://github.com/prometheus/client_java/commit/261c4510eefe156ad688e019b9239cfcfd39bd2b)) +* **deps:** update dependency io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha to v2.28.0-alpha ([#2126](https://github.com/prometheus/client_java/issues/2126)) ([b62b5d0](https://github.com/prometheus/client_java/commit/b62b5d0ab4b8d3a1335286bd3d36e8c9ac5aa269)) +* **deps:** update dependency io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha to v2.28.0-alpha ([#2127](https://github.com/prometheus/client_java/issues/2127)) ([e11ce3d](https://github.com/prometheus/client_java/commit/e11ce3de19daf5acd2f73ffb90c96689c172f3c3)) +* **deps:** update dependency io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha to v2.28.1-alpha ([#2132](https://github.com/prometheus/client_java/issues/2132)) ([b09be38](https://github.com/prometheus/client_java/commit/b09be3882f0ad95ff299db41d706a2e52faa7525)) +* **deps:** update dependency io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha to v2.28.1-alpha ([#2133](https://github.com/prometheus/client_java/issues/2133)) ([a241c16](https://github.com/prometheus/client_java/commit/a241c165927d3cbb91b97eedd52de9c9eff595d0)) +* **deps:** update dependency org.apache.tomcat.embed:tomcat-embed-core to v11.0.22 ([#2099](https://github.com/prometheus/client_java/issues/2099)) ([22125c5](https://github.com/prometheus/client_java/commit/22125c5f531467030793fc48cb2308ff14bbcaa7)) +* **deps:** update jetty monorepo to v12.1.10 ([#2169](https://github.com/prometheus/client_java/issues/2169)) ([ddd3991](https://github.com/prometheus/client_java/commit/ddd3991096d409a3e58ae2003ce13457a51b8876)) +* **deps:** update jetty monorepo to v12.1.9 ([#2102](https://github.com/prometheus/client_java/issues/2102)) ([04bee70](https://github.com/prometheus/client_java/commit/04bee70efff866f8c4966643926905c28a4eae3a)) +* **deps:** update protobuf ([#2129](https://github.com/prometheus/client_java/issues/2129)) ([320538a](https://github.com/prometheus/client_java/commit/320538a09efad128c6d80bcc3d6eecca394603db)) +* Reduce allocations for classic histogram buckets ([#2081](https://github.com/prometheus/client_java/issues/2081)) ([edd160a](https://github.com/prometheus/client_java/commit/edd160ab93254c80250d7cf58a1dcb399fef67a1)) +* restore legacy suffix compatibility ([#2100](https://github.com/prometheus/client_java/issues/2100)) ([b2ae70f](https://github.com/prometheus/client_java/commit/b2ae70ffd4ac0830fb567319beae9d1c3ad8bc2f)) +* restore reserved suffix stripping in `PrometheusNaming.sanitizeMetricName()` ([#2124](https://github.com/prometheus/client_java/issues/2124)) ([2d0f508](https://github.com/prometheus/client_java/commit/2d0f508efd2f5e009b6f09f6a9ccb451cf9f3b6f)) + + +### Performance Improvements + +* Refactored sorting to use optimized sort algorithms ([#2161](https://github.com/prometheus/client_java/issues/2161)) ([25b94fc](https://github.com/prometheus/client_java/commit/25b94fc16273659892af0132cedb71f57597adf7)) + + +### Documentation + +* clarify downstream adapter validation requirements ([#2101](https://github.com/prometheus/client_java/issues/2101)) ([ef8c75c](https://github.com/prometheus/client_java/commit/ef8c75cf352bddd0d3a2052c3f1b0c8b6103a6f4)) +* Document OM2 ([#2059](https://github.com/prometheus/client_java/issues/2059)) ([45d753c](https://github.com/prometheus/client_java/commit/45d753c418f005fbb17bf7caca3dc94655717687)) +* document PushGateway shading workaround ([#2106](https://github.com/prometheus/client_java/issues/2106)) ([8ca0eb8](https://github.com/prometheus/client_java/commit/8ca0eb8d79b800ad8d7a08f10762ed631f4f2a70)) + ## [1.6.1](https://github.com/prometheus/client_java/compare/v1.6.0...v1.6.1) (2026-04-27) > Note: With the OM2 metric-name preservation fix in this release, OpenMetrics 2.0 can now be diff --git a/benchmarks/pom.xml b/benchmarks/pom.xml index 4326c2cb7..abef2dd18 100644 --- a/benchmarks/pom.xml +++ b/benchmarks/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT benchmarks diff --git a/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-annotations.txt b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-annotations.txt new file mode 100644 index 000000000..b2f6a39d8 --- /dev/null +++ b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-annotations.txt @@ -0,0 +1,11 @@ +Comparing source compatibility of prometheus-metrics-annotations-1.6.2-SNAPSHOT.jar against ++++ NEW ANNOTATION: PUBLIC(+) ABSTRACT(+) io.prometheus.metrics.annotations.StableApi (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: java.lang.annotation.Annotation + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW ANNOTATION: java.lang.annotation.Documented + +++ NEW ANNOTATION: java.lang.annotation.Target + +++ NEW ELEMENT: value=java.lang.annotation.ElementType.TYPE,java.lang.annotation.ElementType.CONSTRUCTOR,java.lang.annotation.ElementType.METHOD,java.lang.annotation.ElementType.FIELD (+) + +++ NEW ANNOTATION: java.lang.annotation.Retention + +++ NEW ELEMENT: value=java.lang.annotation.RetentionPolicy.CLASS (+) + diff --git a/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-config.txt b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-config.txt new file mode 100644 index 000000000..dd61db431 --- /dev/null +++ b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-config.txt @@ -0,0 +1,263 @@ +Comparing source compatibility of prometheus-metrics-config-1.6.2-SNAPSHOT.jar against prometheus-metrics-config-1.6.1.jar ++++ NEW ENUM: PUBLIC(+) FINAL(+) io.prometheus.metrics.config.EscapingScheme (compatible) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: java.lang.constant.Constable + +++ NEW INTERFACE: java.lang.Comparable + +++ NEW INTERFACE: java.io.Serializable + +++ NEW SUPERCLASS: java.lang.Enum + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.config.EscapingScheme DOTS_ESCAPING + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.config.EscapingScheme ALLOW_UTF8 + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.config.EscapingScheme UNDERSCORE_ESCAPING + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.config.EscapingScheme VALUE_ENCODING_ESCAPING + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.config.EscapingScheme DEFAULT + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.config.EscapingScheme fromAcceptHeader(java.lang.String) + +++ NEW METHOD: PUBLIC(+) FINAL(+) java.lang.String getValue() + +++ NEW METHOD: PUBLIC(+) java.lang.String toHeaderFormat() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.config.EscapingScheme valueOf(java.lang.String) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.config.EscapingScheme[] values() ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.config.ExemplarsProperties (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.config.ExemplarsProperties$Builder builder() + +++ NEW METHOD: PUBLIC(+) java.lang.Integer getMaxRetentionPeriodSeconds() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.lang.Integer getMinRetentionPeriodSeconds() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.lang.Integer getSampleIntervalMilliseconds() + +++ NEW ANNOTATION: javax.annotation.Nullable ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.config.ExemplarsProperties$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExemplarsProperties build() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExemplarsProperties$Builder maxRetentionPeriodSeconds(int) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExemplarsProperties$Builder minRetentionPeriodSeconds(int) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExemplarsProperties$Builder sampleIntervalMilliseconds(int) ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.config.ExporterFilterProperties (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) java.lang.String METRIC_NAME_MUST_NOT_BE_EQUAL_TO + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) java.lang.String METRIC_NAME_MUST_START_WITH + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) java.lang.String METRIC_NAME_MUST_NOT_START_WITH + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) java.lang.String METRIC_NAME_MUST_BE_EQUAL_TO + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.config.ExporterFilterProperties$Builder builder() + +++ NEW METHOD: PUBLIC(+) java.util.List getAllowedMetricNamePrefixes() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.util.List getAllowedMetricNames() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.util.List getExcludedMetricNamePrefixes() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.util.List getExcludedMetricNames() + +++ NEW ANNOTATION: javax.annotation.Nullable ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.config.ExporterFilterProperties$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExporterFilterProperties$Builder allowedNames(java.lang.String[]) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExporterFilterProperties$Builder allowedPrefixes(java.lang.String[]) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExporterFilterProperties build() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExporterFilterProperties$Builder excludedNames(java.lang.String[]) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExporterFilterProperties$Builder excludedPrefixes(java.lang.String[]) ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.config.ExporterHttpServerProperties (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.config.ExporterHttpServerProperties$Builder builder() + +++ NEW METHOD: PUBLIC(+) java.lang.Integer getPort() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) boolean isPreferUncompressedResponse() ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.config.ExporterHttpServerProperties$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExporterHttpServerProperties build() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExporterHttpServerProperties$Builder port(int) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExporterHttpServerProperties$Builder preferUncompressedResponse(boolean) ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.config.ExporterOpenTelemetryProperties (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.config.ExporterOpenTelemetryProperties$Builder builder() + +++ NEW METHOD: PUBLIC(+) java.lang.String getEndpoint() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.util.Map getHeaders() + +++ NEW METHOD: PUBLIC(+) java.lang.String getInterval() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.lang.Boolean getPreserveNames() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.lang.String getProtocol() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.util.Map getResourceAttributes() + +++ NEW METHOD: PUBLIC(+) java.lang.String getServiceInstanceId() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.lang.String getServiceName() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.lang.String getServiceNamespace() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.lang.String getServiceVersion() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.lang.String getTimeout() + +++ NEW ANNOTATION: javax.annotation.Nullable ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.config.ExporterOpenTelemetryProperties$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExporterOpenTelemetryProperties build() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExporterOpenTelemetryProperties$Builder endpoint(java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExporterOpenTelemetryProperties$Builder header(java.lang.String, java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExporterOpenTelemetryProperties$Builder intervalSeconds(int) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExporterOpenTelemetryProperties$Builder preserveNames(boolean) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExporterOpenTelemetryProperties$Builder protocol(java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExporterOpenTelemetryProperties$Builder resourceAttribute(java.lang.String, java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExporterOpenTelemetryProperties$Builder serviceInstanceId(java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExporterOpenTelemetryProperties$Builder serviceName(java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExporterOpenTelemetryProperties$Builder serviceNamespace(java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExporterOpenTelemetryProperties$Builder serviceVersion(java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExporterOpenTelemetryProperties$Builder timeoutSeconds(int) ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.config.ExporterProperties (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.config.ExporterProperties$Builder builder() + +++ NEW METHOD: PUBLIC(+) boolean getExemplarsOnAllMetricTypes() + +++ NEW METHOD: PUBLIC(+) boolean getIncludeCreatedTimestamps() + +++ NEW METHOD: PUBLIC(+) boolean getPrometheusTimestampsInMs() ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.config.ExporterProperties$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExporterProperties build() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExporterProperties$Builder exemplarsOnAllMetricTypes(boolean) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExporterProperties$Builder includeCreatedTimestamps(boolean) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExporterProperties$Builder prometheusTimestampsInMs(boolean) ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.config.ExporterPushgatewayProperties (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.config.ExporterPushgatewayProperties$Builder builder() + +++ NEW METHOD: PUBLIC(+) java.lang.String getAddress() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.time.Duration getConnectTimeout() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.EscapingScheme getEscapingScheme() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.lang.String getJob() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.time.Duration getReadTimeout() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.lang.String getScheme() + +++ NEW ANNOTATION: javax.annotation.Nullable ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.config.ExporterPushgatewayProperties$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExporterPushgatewayProperties$Builder address(java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExporterPushgatewayProperties build() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExporterPushgatewayProperties$Builder connectTimeout(java.time.Duration) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExporterPushgatewayProperties$Builder escapingScheme(io.prometheus.metrics.config.EscapingScheme) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExporterPushgatewayProperties$Builder job(java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExporterPushgatewayProperties$Builder readTimeout(java.time.Duration) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExporterPushgatewayProperties$Builder scheme(java.lang.String) ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.config.MetricsProperties (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW CONSTRUCTOR: PUBLIC(+) MetricsProperties(java.lang.Boolean, java.lang.Boolean, java.lang.Boolean, java.util.List, java.lang.Integer, java.lang.Double, java.lang.Double, java.lang.Integer, java.lang.Long, java.util.List, java.util.List, java.lang.Long, java.lang.Integer) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.config.MetricsProperties$Builder builder() + +++ NEW METHOD: PUBLIC(+) java.lang.Boolean getExemplarsEnabled() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.lang.Boolean getHistogramClassicOnly() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.util.List getHistogramClassicUpperBounds() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.lang.Integer getHistogramNativeInitialSchema() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.lang.Integer getHistogramNativeMaxNumberOfBuckets() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.lang.Double getHistogramNativeMaxZeroThreshold() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.lang.Double getHistogramNativeMinZeroThreshold() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.lang.Boolean getHistogramNativeOnly() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.lang.Long getHistogramNativeResetDurationSeconds() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.lang.Long getSummaryMaxAgeSeconds() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.lang.Integer getSummaryNumberOfAgeBuckets() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.util.List getSummaryQuantileErrors() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.util.List getSummaryQuantiles() + +++ NEW ANNOTATION: javax.annotation.Nullable ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.config.MetricsProperties$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.MetricsProperties build() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.MetricsProperties$Builder exemplarsEnabled(java.lang.Boolean) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.MetricsProperties$Builder histogramClassicOnly(java.lang.Boolean) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.MetricsProperties$Builder histogramClassicUpperBounds(double[]) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.MetricsProperties$Builder histogramNativeInitialSchema(java.lang.Integer) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.MetricsProperties$Builder histogramNativeMaxNumberOfBuckets(java.lang.Integer) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.MetricsProperties$Builder histogramNativeMaxZeroThreshold(java.lang.Double) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.MetricsProperties$Builder histogramNativeMinZeroThreshold(java.lang.Double) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.MetricsProperties$Builder histogramNativeOnly(java.lang.Boolean) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.MetricsProperties$Builder histogramNativeResetDurationSeconds(java.lang.Long) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.MetricsProperties$Builder summaryMaxAgeSeconds(java.lang.Long) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.MetricsProperties$Builder summaryNumberOfAgeBuckets(java.lang.Integer) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.MetricsProperties$Builder summaryQuantileErrors(double[]) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.MetricsProperties$Builder summaryQuantiles(double[]) ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.config.OpenMetrics2Properties (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.config.OpenMetrics2Properties$Builder builder() + +++ NEW METHOD: PUBLIC(+) boolean getCompositeValues() + +++ NEW METHOD: PUBLIC(+) boolean getContentNegotiation() + +++ NEW METHOD: PUBLIC(+) boolean getEnabled() + +++ NEW METHOD: PUBLIC(+) boolean getExemplarCompliance() + +++ NEW METHOD: PUBLIC(+) boolean getNativeHistograms() ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.config.OpenMetrics2Properties$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.OpenMetrics2Properties build() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.OpenMetrics2Properties$Builder compositeValues(boolean) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.OpenMetrics2Properties$Builder contentNegotiation(boolean) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.OpenMetrics2Properties$Builder enableAll() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.OpenMetrics2Properties$Builder enabled(boolean) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.OpenMetrics2Properties$Builder exemplarCompliance(boolean) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.OpenMetrics2Properties$Builder nativeHistograms(boolean) ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.config.PrometheusProperties (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.config.PrometheusProperties$Builder builder() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.config.PrometheusProperties get() + +++ NEW EXCEPTION: io.prometheus.metrics.config.PrometheusPropertiesException + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.MetricsProperties getDefaultMetricProperties() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExemplarsProperties getExemplarProperties() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExporterFilterProperties getExporterFilterProperties() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExporterHttpServerProperties getExporterHttpServerProperties() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExporterOpenTelemetryProperties getExporterOpenTelemetryProperties() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExporterProperties getExporterProperties() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.ExporterPushgatewayProperties getExporterPushgatewayProperties() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.MetricsProperties getMetricProperties(java.lang.String) + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.OpenMetrics2Properties getOpenMetrics2Properties() ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.config.PrometheusProperties$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.PrometheusProperties build() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.PrometheusProperties$Builder defaultMetricsProperties(io.prometheus.metrics.config.MetricsProperties) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.PrometheusProperties$Builder enableOpenMetrics2(java.util.function.Consumer) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.PrometheusProperties$Builder exemplarProperties(io.prometheus.metrics.config.ExemplarsProperties) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.PrometheusProperties$Builder exporterFilterProperties(io.prometheus.metrics.config.ExporterFilterProperties) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.PrometheusProperties$Builder exporterHttpServerProperties(io.prometheus.metrics.config.ExporterHttpServerProperties) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.PrometheusProperties$Builder exporterOpenTelemetryProperties(io.prometheus.metrics.config.ExporterOpenTelemetryProperties) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.PrometheusProperties$Builder exporterProperties(io.prometheus.metrics.config.ExporterProperties) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.PrometheusProperties$Builder metricProperties(java.util.Map) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.PrometheusProperties$Builder openMetrics2Properties(io.prometheus.metrics.config.OpenMetrics2Properties) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.PrometheusProperties$Builder pushgatewayProperties(io.prometheus.metrics.config.ExporterPushgatewayProperties) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.PrometheusProperties$Builder putMetricProperty(java.lang.String, io.prometheus.metrics.config.MetricsProperties) ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.config.PrometheusPropertiesException (compatible) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: java.io.Serializable + +++ NEW SUPERCLASS: java.lang.RuntimeException + +++ NEW CONSTRUCTOR: PUBLIC(+) PrometheusPropertiesException(java.lang.String) + +++ NEW CONSTRUCTOR: PUBLIC(+) PrometheusPropertiesException(java.lang.String, java.lang.Exception) ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.config.PrometheusPropertiesLoader (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW CONSTRUCTOR: PUBLIC(+) PrometheusPropertiesLoader() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.config.PrometheusProperties load() + +++ NEW EXCEPTION: io.prometheus.metrics.config.PrometheusPropertiesException + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.config.PrometheusProperties load(java.util.Map) + +++ NEW EXCEPTION: io.prometheus.metrics.config.PrometheusPropertiesException + diff --git a/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-core.txt b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-core.txt new file mode 100644 index 000000000..f6b1e9a9c --- /dev/null +++ b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-core.txt @@ -0,0 +1,353 @@ +Comparing source compatibility of prometheus-metrics-core-1.6.2-SNAPSHOT.jar against prometheus-metrics-core-1.6.1.jar ++++ NEW INTERFACE: PUBLIC(+) ABSTRACT(+) io.prometheus.metrics.core.datapoints.CounterDataPoint (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: io.prometheus.metrics.core.datapoints.DataPoint + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) double get() + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) long getLongValue() + +++ NEW METHOD: PUBLIC(+) void inc() + +++ NEW METHOD: PUBLIC(+) void inc(long) + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) void inc(double) + +++ NEW METHOD: PUBLIC(+) void incWithExemplar(io.prometheus.metrics.model.snapshots.Labels) + +++ NEW METHOD: PUBLIC(+) void incWithExemplar(long, io.prometheus.metrics.model.snapshots.Labels) + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) void incWithExemplar(double, io.prometheus.metrics.model.snapshots.Labels) ++++ NEW INTERFACE: PUBLIC(+) ABSTRACT(+) io.prometheus.metrics.core.datapoints.DataPoint (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object ++++ NEW INTERFACE: PUBLIC(+) ABSTRACT(+) io.prometheus.metrics.core.datapoints.DistributionDataPoint (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: io.prometheus.metrics.core.datapoints.DataPoint + +++ NEW INTERFACE: io.prometheus.metrics.core.datapoints.TimerApi + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) long getCount() + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) double getSum() + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) void observe(double) + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) void observeWithExemplar(double, io.prometheus.metrics.model.snapshots.Labels) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.datapoints.Timer startTimer() ++++ NEW INTERFACE: PUBLIC(+) ABSTRACT(+) io.prometheus.metrics.core.datapoints.GaugeDataPoint (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: io.prometheus.metrics.core.datapoints.DataPoint + +++ NEW INTERFACE: io.prometheus.metrics.core.datapoints.TimerApi + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) void dec() + +++ NEW METHOD: PUBLIC(+) void dec(double) + +++ NEW METHOD: PUBLIC(+) void decWithExemplar(io.prometheus.metrics.model.snapshots.Labels) + +++ NEW METHOD: PUBLIC(+) void decWithExemplar(double, io.prometheus.metrics.model.snapshots.Labels) + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) double get() + +++ NEW METHOD: PUBLIC(+) void inc() + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) void inc(double) + +++ NEW METHOD: PUBLIC(+) void incWithExemplar(io.prometheus.metrics.model.snapshots.Labels) + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) void incWithExemplar(double, io.prometheus.metrics.model.snapshots.Labels) + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) void set(double) + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) void setWithExemplar(double, io.prometheus.metrics.model.snapshots.Labels) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.datapoints.Timer startTimer() ++++ NEW INTERFACE: PUBLIC(+) ABSTRACT(+) io.prometheus.metrics.core.datapoints.StateSetDataPoint (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: io.prometheus.metrics.core.datapoints.DataPoint + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) void setFalse(java.lang.String) + +++ NEW METHOD: PUBLIC(+) void setFalse(java.lang.Enum) + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) void setTrue(java.lang.String) + +++ NEW METHOD: PUBLIC(+) void setTrue(java.lang.Enum) ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.core.datapoints.Timer (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: java.io.Closeable + +++ NEW INTERFACE: java.lang.AutoCloseable + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) void close() + +++ NEW METHOD: PUBLIC(+) double observeDuration() ++++ NEW INTERFACE: PUBLIC(+) ABSTRACT(+) io.prometheus.metrics.core.datapoints.TimerApi (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) io.prometheus.metrics.core.datapoints.Timer startTimer() + +++ NEW METHOD: PUBLIC(+) void time(java.lang.Runnable) + +++ NEW METHOD: PUBLIC(+) java.lang.Object time(java.util.function.Supplier) + GENERIC TEMPLATES: +++ T:java.lang.Object + +++ NEW METHOD: PUBLIC(+) java.lang.Object timeChecked(java.util.concurrent.Callable) + +++ NEW EXCEPTION: java.lang.Exception + GENERIC TEMPLATES: +++ T:java.lang.Object ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.core.exemplars.ExemplarSampler (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW CONSTRUCTOR: PUBLIC(+) ExemplarSampler(io.prometheus.metrics.core.exemplars.ExemplarSamplerConfig, io.prometheus.metrics.tracer.common.SpanContext) + +++ NEW CONSTRUCTOR: PUBLIC(+) ExemplarSampler(io.prometheus.metrics.core.exemplars.ExemplarSamplerConfig) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.Exemplars collect() + +++ NEW METHOD: PUBLIC(+) void observe(double) + +++ NEW METHOD: PUBLIC(+) void observeWithExemplar(double, io.prometheus.metrics.model.snapshots.Labels) + +++ NEW METHOD: PUBLIC(+) void reset() ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.core.exemplars.ExemplarSamplerConfig (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) int DEFAULT_MIN_RETENTION_PERIOD_SECONDS + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) int DEFAULT_MAX_RETENTION_PERIOD_SECONDS + +++ NEW CONSTRUCTOR: PUBLIC(+) ExemplarSamplerConfig(io.prometheus.metrics.config.ExemplarsProperties, int) + +++ NEW CONSTRUCTOR: PUBLIC(+) ExemplarSamplerConfig(io.prometheus.metrics.config.ExemplarsProperties, double[]) + +++ NEW METHOD: PUBLIC(+) double[] getHistogramClassicUpperBounds() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) long getMaxRetentionPeriodMillis() + +++ NEW METHOD: PUBLIC(+) long getMinRetentionPeriodMillis() + +++ NEW METHOD: PUBLIC(+) int getNumberOfExemplars() + +++ NEW METHOD: PUBLIC(+) long getSampleIntervalMillis() ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.core.metrics.Counter (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: io.prometheus.metrics.model.registry.Collector + +++ NEW INTERFACE: io.prometheus.metrics.core.datapoints.DataPoint + +++ NEW INTERFACE: io.prometheus.metrics.core.datapoints.CounterDataPoint + +++ NEW SUPERCLASS: io.prometheus.metrics.core.metrics.StatefulMetric + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.core.metrics.Counter$Builder builder() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.core.metrics.Counter$Builder builder(io.prometheus.metrics.config.PrometheusProperties) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.CounterSnapshot collect() + +++ NEW METHOD: PUBLIC(+) double get() + +++ NEW METHOD: PUBLIC(+) long getLongValue() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.registry.MetricType getMetricType() + +++ NEW ANNOTATION: java.lang.Deprecated + +++ NEW METHOD: PUBLIC(+) void inc(long) + +++ NEW METHOD: PUBLIC(+) void inc(double) + +++ NEW METHOD: PUBLIC(+) void incWithExemplar(long, io.prometheus.metrics.model.snapshots.Labels) + +++ NEW METHOD: PUBLIC(+) void incWithExemplar(double, io.prometheus.metrics.model.snapshots.Labels) ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.core.metrics.Counter$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: io.prometheus.metrics.core.metrics.StatefulMetric$Builder + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.metrics.Counter build() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.metrics.Counter$Builder name(java.lang.String) ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.core.metrics.CounterWithCallback (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: io.prometheus.metrics.model.registry.Collector + +++ NEW SUPERCLASS: io.prometheus.metrics.core.metrics.CallbackMetric + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.core.metrics.CounterWithCallback$Builder builder() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.core.metrics.CounterWithCallback$Builder builder(io.prometheus.metrics.config.PrometheusProperties) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.CounterSnapshot collect() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.registry.MetricType getMetricType() + +++ NEW ANNOTATION: java.lang.Deprecated ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.core.metrics.CounterWithCallback$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: io.prometheus.metrics.core.metrics.CallbackMetric$Builder + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.metrics.CounterWithCallback build() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.metrics.CounterWithCallback$Builder callback(java.util.function.Consumer) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.metrics.CounterWithCallback$Builder name(java.lang.String) ++++ NEW INTERFACE: PUBLIC(+) ABSTRACT(+) STATIC(+) io.prometheus.metrics.core.metrics.CounterWithCallback$Callback (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) void call(double, java.lang.String[]) + +++ NEW ANNOTATION: java.lang.FunctionalInterface ++++* NEW CLASS: PUBLIC(+) io.prometheus.metrics.core.metrics.Gauge (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: io.prometheus.metrics.model.registry.Collector + +++ NEW INTERFACE: io.prometheus.metrics.core.datapoints.DataPoint + +++ NEW INTERFACE: io.prometheus.metrics.core.datapoints.GaugeDataPoint + +++ NEW INTERFACE: io.prometheus.metrics.core.datapoints.TimerApi + +++ NEW SUPERCLASS: io.prometheus.metrics.core.metrics.StatefulMetric + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.core.metrics.Gauge$Builder builder() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.core.metrics.Gauge$Builder builder(io.prometheus.metrics.config.PrometheusProperties) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.GaugeSnapshot collect() + +++ NEW METHOD: PUBLIC(+) double get() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.registry.MetricType getMetricType() + +++ NEW ANNOTATION: java.lang.Deprecated + +++ NEW METHOD: PUBLIC(+) void inc(double) + +++ NEW METHOD: PUBLIC(+) void incWithExemplar(double, io.prometheus.metrics.model.snapshots.Labels) + +++ NEW METHOD: PUBLIC(+) void set(double) + +++ NEW METHOD: PUBLIC(+) void setWithExemplar(double, io.prometheus.metrics.model.snapshots.Labels) ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.core.metrics.Gauge$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: io.prometheus.metrics.core.metrics.StatefulMetric$Builder + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.metrics.Gauge build() ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.core.metrics.GaugeWithCallback (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: io.prometheus.metrics.model.registry.Collector + +++ NEW SUPERCLASS: io.prometheus.metrics.core.metrics.CallbackMetric + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.core.metrics.GaugeWithCallback$Builder builder() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.core.metrics.GaugeWithCallback$Builder builder(io.prometheus.metrics.config.PrometheusProperties) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.GaugeSnapshot collect() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.registry.MetricType getMetricType() + +++ NEW ANNOTATION: java.lang.Deprecated ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.core.metrics.GaugeWithCallback$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: io.prometheus.metrics.core.metrics.CallbackMetric$Builder + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.metrics.GaugeWithCallback build() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.metrics.GaugeWithCallback$Builder callback(java.util.function.Consumer) ++++ NEW INTERFACE: PUBLIC(+) ABSTRACT(+) STATIC(+) io.prometheus.metrics.core.metrics.GaugeWithCallback$Callback (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) void call(double, java.lang.String[]) + +++ NEW ANNOTATION: java.lang.FunctionalInterface ++++* NEW CLASS: PUBLIC(+) io.prometheus.metrics.core.metrics.Histogram (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: io.prometheus.metrics.model.registry.Collector + +++ NEW INTERFACE: io.prometheus.metrics.core.datapoints.DistributionDataPoint + +++ NEW INTERFACE: io.prometheus.metrics.core.datapoints.DataPoint + +++ NEW INTERFACE: io.prometheus.metrics.core.datapoints.TimerApi + +++ NEW SUPERCLASS: io.prometheus.metrics.core.metrics.StatefulMetric + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.core.metrics.Histogram$Builder builder() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.core.metrics.Histogram$Builder builder(io.prometheus.metrics.config.PrometheusProperties) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.HistogramSnapshot collect() + +++ NEW METHOD: PUBLIC(+) long getCount() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.registry.MetricType getMetricType() + +++ NEW ANNOTATION: java.lang.Deprecated + +++ NEW METHOD: PUBLIC(+) double getSum() + +++ NEW METHOD: PUBLIC(+) void observe(double) + +++ NEW METHOD: PUBLIC(+) void observeWithExemplar(double, io.prometheus.metrics.model.snapshots.Labels) ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.core.metrics.Histogram$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: io.prometheus.metrics.core.metrics.StatefulMetric$Builder + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) double[] DEFAULT_CLASSIC_UPPER_BOUNDS + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.metrics.Histogram build() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.metrics.Histogram$Builder classicExponentialUpperBounds(double, double, int) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.metrics.Histogram$Builder classicLinearUpperBounds(double, double, int) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.metrics.Histogram$Builder classicOnly() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.metrics.Histogram$Builder classicUpperBounds(double[]) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.MetricsProperties getDefaultProperties() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.metrics.Histogram$Builder nativeInitialSchema(int) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.metrics.Histogram$Builder nativeMaxNumberOfBuckets(int) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.metrics.Histogram$Builder nativeMaxZeroThreshold(double) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.metrics.Histogram$Builder nativeMinZeroThreshold(double) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.metrics.Histogram$Builder nativeOnly() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.metrics.Histogram$Builder nativeResetDuration(long, java.util.concurrent.TimeUnit) ++++* NEW CLASS: PUBLIC(+) io.prometheus.metrics.core.metrics.Histogram$DataPoint (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: io.prometheus.metrics.core.datapoints.DistributionDataPoint + +++ NEW INTERFACE: io.prometheus.metrics.core.datapoints.DataPoint + +++ NEW INTERFACE: io.prometheus.metrics.core.datapoints.TimerApi + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) long getCount() + +++ NEW METHOD: PUBLIC(+) double getSum() + +++ NEW METHOD: PUBLIC(+) void observe(double) + +++ NEW METHOD: PUBLIC(+) void observeWithExemplar(double, io.prometheus.metrics.model.snapshots.Labels) ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.core.metrics.Info (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: io.prometheus.metrics.model.registry.Collector + +++ NEW SUPERCLASS: io.prometheus.metrics.core.metrics.MetricWithFixedMetadata + +++ NEW METHOD: PUBLIC(+) void addLabelValues(java.lang.String[]) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.core.metrics.Info$Builder builder() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.core.metrics.Info$Builder builder(io.prometheus.metrics.config.PrometheusProperties) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.InfoSnapshot collect() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.registry.MetricType getMetricType() + +++ NEW ANNOTATION: java.lang.Deprecated + +++ NEW METHOD: PUBLIC(+) void remove(java.lang.String[]) + +++ NEW METHOD: PUBLIC(+) void setLabelValues(java.lang.String[]) ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.core.metrics.Info$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: io.prometheus.metrics.core.metrics.MetricWithFixedMetadata$Builder + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.metrics.Info build() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.metrics.Info$Builder name(java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.metrics.Info$Builder unit(io.prometheus.metrics.model.snapshots.Unit) ++++ NEW CLASS: PUBLIC(+) ABSTRACT(+) io.prometheus.metrics.core.metrics.Metric (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: io.prometheus.metrics.model.registry.Collector + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) io.prometheus.metrics.model.snapshots.MetricSnapshot collect() ++++ NEW CLASS: PUBLIC(+) ABSTRACT(+) io.prometheus.metrics.core.metrics.MetricWithFixedMetadata (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: io.prometheus.metrics.model.registry.Collector + +++ NEW SUPERCLASS: io.prometheus.metrics.core.metrics.Metric + +++ NEW METHOD: PUBLIC(+) java.util.Set getLabelNames() + +++ NEW ANNOTATION: java.lang.Deprecated + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.MetricMetadata getMetadata() + +++ NEW ANNOTATION: java.lang.Deprecated + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor getMetricFamilyDescriptor() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.lang.String getPrometheusName() + +++ NEW ANNOTATION: java.lang.Deprecated ++++ NEW CLASS: PUBLIC(+) ABSTRACT(+) STATIC(+) io.prometheus.metrics.core.metrics.MetricWithFixedMetadata$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + GENERIC TEMPLATES: +++ B:io.prometheus.metrics.core.metrics.MetricWithFixedMetadata$Builder, +++ M:io.prometheus.metrics.core.metrics.MetricWithFixedMetadata + +++ NEW SUPERCLASS: io.prometheus.metrics.core.metrics.Metric$Builder + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) io.prometheus.metrics.core.metrics.MetricWithFixedMetadata build() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.metrics.MetricWithFixedMetadata$Builder constLabels(io.prometheus.metrics.model.snapshots.Labels) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.metrics.MetricWithFixedMetadata$Builder help(java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.metrics.MetricWithFixedMetadata$Builder labelNames(java.lang.String[]) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.metrics.MetricWithFixedMetadata$Builder name(java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.metrics.MetricWithFixedMetadata$Builder unit(io.prometheus.metrics.model.snapshots.Unit) ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.core.metrics.SlidingWindow (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + GENERIC TEMPLATES: +++ T:java.lang.Object + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW CONSTRUCTOR: PUBLIC(+) SlidingWindow(java.lang.Class, java.util.function.Supplier, java.util.function.ObjDoubleConsumer, long, int) + +++ NEW METHOD: PUBLIC(+) java.lang.Object current() + +++ NEW METHOD: PUBLIC(+) void observe(double) ++++ NEW CLASS: PUBLIC(+) ABSTRACT(+) io.prometheus.metrics.core.metrics.StatefulMetric (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + GENERIC TEMPLATES: +++ D:io.prometheus.metrics.core.datapoints.DataPoint, +++ T:D + +++ NEW INTERFACE: io.prometheus.metrics.model.registry.Collector + +++ NEW SUPERCLASS: io.prometheus.metrics.core.metrics.MetricWithFixedMetadata + +++ NEW METHOD: PUBLIC(+) void clear() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.MetricSnapshot collect() + +++ NEW METHOD: PUBLIC(+) void initLabelValues(java.lang.String[]) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.datapoints.DataPoint labelValues(java.lang.String[]) + +++ NEW METHOD: PUBLIC(+) void remove(java.lang.String[]) + +++ NEW METHOD: PUBLIC(+) void removeIf(java.util.function.Function,java.lang.Boolean>) ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.core.metrics.StateSet (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: io.prometheus.metrics.model.registry.Collector + +++ NEW INTERFACE: io.prometheus.metrics.core.datapoints.DataPoint + +++ NEW INTERFACE: io.prometheus.metrics.core.datapoints.StateSetDataPoint + +++ NEW SUPERCLASS: io.prometheus.metrics.core.metrics.StatefulMetric + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.core.metrics.StateSet$Builder builder() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.core.metrics.StateSet$Builder builder(io.prometheus.metrics.config.PrometheusProperties) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.StateSetSnapshot collect() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.registry.MetricType getMetricType() + +++ NEW ANNOTATION: java.lang.Deprecated + +++ NEW METHOD: PUBLIC(+) void setFalse(java.lang.String) + +++ NEW METHOD: PUBLIC(+) void setTrue(java.lang.String) ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.core.metrics.StateSet$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: io.prometheus.metrics.core.metrics.StatefulMetric$Builder + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.metrics.StateSet build() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.metrics.StateSet$Builder states(java.lang.Class>) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.metrics.StateSet$Builder states(java.lang.String[]) ++++* NEW CLASS: PUBLIC(+) io.prometheus.metrics.core.metrics.Summary (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: io.prometheus.metrics.model.registry.Collector + +++ NEW INTERFACE: io.prometheus.metrics.core.datapoints.DistributionDataPoint + +++ NEW INTERFACE: io.prometheus.metrics.core.datapoints.DataPoint + +++ NEW INTERFACE: io.prometheus.metrics.core.datapoints.TimerApi + +++ NEW SUPERCLASS: io.prometheus.metrics.core.metrics.StatefulMetric + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.core.metrics.Summary$Builder builder() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.core.metrics.Summary$Builder builder(io.prometheus.metrics.config.PrometheusProperties) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.SummarySnapshot collect() + +++ NEW METHOD: PUBLIC(+) long getCount() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.registry.MetricType getMetricType() + +++ NEW ANNOTATION: java.lang.Deprecated + +++ NEW METHOD: PUBLIC(+) double getSum() + +++ NEW METHOD: PUBLIC(+) void observe(double) + +++ NEW METHOD: PUBLIC(+) void observeWithExemplar(double, io.prometheus.metrics.model.snapshots.Labels) ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.core.metrics.Summary$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: io.prometheus.metrics.core.metrics.StatefulMetric$Builder + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) long DEFAULT_MAX_AGE_SECONDS + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) int DEFAULT_NUMBER_OF_AGE_BUCKETS + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.metrics.Summary build() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.MetricsProperties getDefaultProperties() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.metrics.Summary$Builder maxAgeSeconds(long) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.metrics.Summary$Builder numberOfAgeBuckets(int) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.metrics.Summary$Builder quantile(double) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.metrics.Summary$Builder quantile(double, double) ++++* NEW CLASS: PUBLIC(+) io.prometheus.metrics.core.metrics.Summary$DataPoint (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: io.prometheus.metrics.core.datapoints.DistributionDataPoint + +++ NEW INTERFACE: io.prometheus.metrics.core.datapoints.DataPoint + +++ NEW INTERFACE: io.prometheus.metrics.core.datapoints.TimerApi + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) long getCount() + +++ NEW METHOD: PUBLIC(+) double getSum() + +++ NEW METHOD: PUBLIC(+) void observe(double) + +++ NEW METHOD: PUBLIC(+) void observeWithExemplar(double, io.prometheus.metrics.model.snapshots.Labels) ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.core.metrics.SummaryWithCallback (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: io.prometheus.metrics.model.registry.Collector + +++ NEW SUPERCLASS: io.prometheus.metrics.core.metrics.CallbackMetric + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.core.metrics.SummaryWithCallback$Builder builder() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.core.metrics.SummaryWithCallback$Builder builder(io.prometheus.metrics.config.PrometheusProperties) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.SummarySnapshot collect() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.registry.MetricType getMetricType() + +++ NEW ANNOTATION: java.lang.Deprecated ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.core.metrics.SummaryWithCallback$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: io.prometheus.metrics.core.metrics.CallbackMetric$Builder + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.metrics.SummaryWithCallback build() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.core.metrics.SummaryWithCallback$Builder callback(java.util.function.Consumer) ++++ NEW INTERFACE: PUBLIC(+) ABSTRACT(+) STATIC(+) io.prometheus.metrics.core.metrics.SummaryWithCallback$Callback (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) void call(long, double, io.prometheus.metrics.model.snapshots.Quantiles, java.lang.String[]) + +++ NEW ANNOTATION: java.lang.FunctionalInterface + diff --git a/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-exporter-common.txt b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-exporter-common.txt new file mode 100644 index 000000000..d2ba333af --- /dev/null +++ b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-exporter-common.txt @@ -0,0 +1,40 @@ +Comparing source compatibility of prometheus-metrics-exporter-common-1.6.2-SNAPSHOT.jar against prometheus-metrics-exporter-common-1.6.1.jar ++++ NEW INTERFACE: PUBLIC(+) ABSTRACT(+) io.prometheus.metrics.exporter.common.PrometheusHttpExchange (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: java.lang.AutoCloseable + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) void close() + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) io.prometheus.metrics.exporter.common.PrometheusHttpRequest getRequest() + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) io.prometheus.metrics.exporter.common.PrometheusHttpResponse getResponse() + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) void handleException(java.io.IOException) + +++ NEW EXCEPTION: java.io.IOException + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) void handleException(java.lang.RuntimeException) ++++ NEW INTERFACE: PUBLIC(+) ABSTRACT(+) io.prometheus.metrics.exporter.common.PrometheusHttpRequest (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: io.prometheus.metrics.model.registry.PrometheusScrapeRequest + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) java.lang.String getHeader(java.lang.String) + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) java.util.Enumeration getHeaders(java.lang.String) + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) java.lang.String getMethod() + +++ NEW METHOD: PUBLIC(+) java.lang.String getParameter(java.lang.String) + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.lang.String[] getParameterValues(java.lang.String) + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) java.lang.String getQueryString() ++++ NEW INTERFACE: PUBLIC(+) ABSTRACT(+) io.prometheus.metrics.exporter.common.PrometheusHttpResponse (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) java.io.OutputStream sendHeadersAndGetBody(int, int) + +++ NEW EXCEPTION: java.io.IOException + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) void setHeader(java.lang.String, java.lang.String) ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.exporter.common.PrometheusScrapeHandler (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW CONSTRUCTOR: PUBLIC(+) PrometheusScrapeHandler() + +++ NEW CONSTRUCTOR: PUBLIC(+) PrometheusScrapeHandler(io.prometheus.metrics.model.registry.PrometheusRegistry) + +++ NEW CONSTRUCTOR: PUBLIC(+) PrometheusScrapeHandler(io.prometheus.metrics.config.PrometheusProperties) + +++ NEW CONSTRUCTOR: PUBLIC(+) PrometheusScrapeHandler(io.prometheus.metrics.config.PrometheusProperties, io.prometheus.metrics.model.registry.PrometheusRegistry) + +++ NEW METHOD: PUBLIC(+) void handleRequest(io.prometheus.metrics.exporter.common.PrometheusHttpExchange) + +++ NEW EXCEPTION: java.io.IOException + diff --git a/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-exporter-httpserver.txt b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-exporter-httpserver.txt new file mode 100644 index 000000000..decc352f5 --- /dev/null +++ b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-exporter-httpserver.txt @@ -0,0 +1,52 @@ +Comparing source compatibility of prometheus-metrics-exporter-httpserver-1.6.2-SNAPSHOT.jar against prometheus-metrics-exporter-httpserver-1.6.1.jar ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.exporter.httpserver.DefaultHandler (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: com.sun.net.httpserver.HttpHandler + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW CONSTRUCTOR: PUBLIC(+) DefaultHandler(java.lang.String) + +++ NEW METHOD: PUBLIC(+) void handle(com.sun.net.httpserver.HttpExchange) + +++ NEW EXCEPTION: java.io.IOException ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.exporter.httpserver.HealthyHandler (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: com.sun.net.httpserver.HttpHandler + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW CONSTRUCTOR: PUBLIC(+) HealthyHandler() + +++ NEW METHOD: PUBLIC(+) void handle(com.sun.net.httpserver.HttpExchange) + +++ NEW EXCEPTION: java.io.IOException ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.exporter.httpserver.HTTPServer (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: java.io.Closeable + +++ NEW INTERFACE: java.lang.AutoCloseable + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.exporter.httpserver.HTTPServer$Builder builder() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.exporter.httpserver.HTTPServer$Builder builder(io.prometheus.metrics.config.PrometheusProperties) + +++ NEW METHOD: PUBLIC(+) void close() + +++ NEW METHOD: PUBLIC(+) int getPort() + +++ NEW METHOD: PUBLIC(+) void stop() ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.exporter.httpserver.HTTPServer$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.httpserver.HTTPServer$Builder authenticatedSubjectAttributeName(java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.httpserver.HTTPServer$Builder authenticator(com.sun.net.httpserver.Authenticator) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.httpserver.HTTPServer buildAndStart() + +++ NEW EXCEPTION: java.io.IOException + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.httpserver.HTTPServer$Builder defaultHandler(com.sun.net.httpserver.HttpHandler) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.httpserver.HTTPServer$Builder executorService(java.util.concurrent.ExecutorService) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.httpserver.HTTPServer$Builder hostname(java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.httpserver.HTTPServer$Builder httpsConfigurator(com.sun.net.httpserver.HttpsConfigurator) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.httpserver.HTTPServer$Builder inetAddress(java.net.InetAddress) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.httpserver.HTTPServer$Builder metricsHandlerPath(java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.httpserver.HTTPServer$Builder port(int) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.httpserver.HTTPServer$Builder registerHealthHandler(boolean) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.httpserver.HTTPServer$Builder registry(io.prometheus.metrics.model.registry.PrometheusRegistry) ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.exporter.httpserver.MetricsHandler (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: com.sun.net.httpserver.HttpHandler + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW CONSTRUCTOR: PUBLIC(+) MetricsHandler(io.prometheus.metrics.config.PrometheusProperties) + +++ NEW CONSTRUCTOR: PUBLIC(+) MetricsHandler(io.prometheus.metrics.model.registry.PrometheusRegistry) + +++ NEW CONSTRUCTOR: PUBLIC(+) MetricsHandler(io.prometheus.metrics.config.PrometheusProperties, io.prometheus.metrics.model.registry.PrometheusRegistry) + +++ NEW CONSTRUCTOR: PUBLIC(+) MetricsHandler() + +++ NEW METHOD: PUBLIC(+) void handle(com.sun.net.httpserver.HttpExchange) + +++ NEW EXCEPTION: java.io.IOException + diff --git a/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-exporter-opentelemetry-otel-agent-resources.txt b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-exporter-opentelemetry-otel-agent-resources.txt new file mode 100644 index 000000000..e5d128dd6 --- /dev/null +++ b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-exporter-opentelemetry-otel-agent-resources.txt @@ -0,0 +1,2 @@ +Comparing source compatibility of prometheus-metrics-exporter-opentelemetry-otel-agent-resources-1.6.2-SNAPSHOT.jar against prometheus-metrics-exporter-opentelemetry-otel-agent-resources-1.6.1.jar +No changes. diff --git a/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-exporter-opentelemetry-shaded.txt b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-exporter-opentelemetry-shaded.txt new file mode 100644 index 000000000..8bc4f87f6 --- /dev/null +++ b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-exporter-opentelemetry-shaded.txt @@ -0,0 +1,26 @@ +Comparing source compatibility of prometheus-metrics-exporter-opentelemetry-1.6.2-SNAPSHOT.jar against prometheus-metrics-exporter-opentelemetry-1.6.1.jar ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.exporter.opentelemetry.OpenTelemetryExporter (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: java.lang.AutoCloseable + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW CONSTRUCTOR: PUBLIC(+) OpenTelemetryExporter(io.prometheus.metrics.shaded.io_opentelemetry_2_28_1_alpha.sdk.metrics.export.MetricReader) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.exporter.opentelemetry.OpenTelemetryExporter$Builder builder() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.exporter.opentelemetry.OpenTelemetryExporter$Builder builder(io.prometheus.metrics.config.PrometheusProperties) + +++ NEW METHOD: PUBLIC(+) void close() ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.exporter.opentelemetry.OpenTelemetryExporter$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.opentelemetry.OpenTelemetryExporter buildAndStart() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.opentelemetry.OpenTelemetryExporter$Builder endpoint(java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.opentelemetry.OpenTelemetryExporter$Builder header(java.lang.String, java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.opentelemetry.OpenTelemetryExporter$Builder intervalSeconds(int) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.opentelemetry.OpenTelemetryExporter$Builder preserveNames(boolean) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.opentelemetry.OpenTelemetryExporter$Builder protocol(java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.opentelemetry.OpenTelemetryExporter$Builder registry(io.prometheus.metrics.model.registry.PrometheusRegistry) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.opentelemetry.OpenTelemetryExporter$Builder resourceAttribute(java.lang.String, java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.opentelemetry.OpenTelemetryExporter$Builder serviceInstanceId(java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.opentelemetry.OpenTelemetryExporter$Builder serviceName(java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.opentelemetry.OpenTelemetryExporter$Builder serviceNamespace(java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.opentelemetry.OpenTelemetryExporter$Builder serviceVersion(java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.opentelemetry.OpenTelemetryExporter$Builder timeoutSeconds(int) + diff --git a/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-exporter-opentelemetry.txt b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-exporter-opentelemetry.txt new file mode 100644 index 000000000..19d112b08 --- /dev/null +++ b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-exporter-opentelemetry.txt @@ -0,0 +1,26 @@ +Comparing source compatibility of prometheus-metrics-exporter-opentelemetry-no-otel-1.6.2-SNAPSHOT.jar against prometheus-metrics-exporter-opentelemetry-no-otel-1.6.1.jar ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.exporter.opentelemetry.OpenTelemetryExporter (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: java.lang.AutoCloseable + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW CONSTRUCTOR: PUBLIC(+) OpenTelemetryExporter(io.opentelemetry.sdk.metrics.export.MetricReader) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.exporter.opentelemetry.OpenTelemetryExporter$Builder builder() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.exporter.opentelemetry.OpenTelemetryExporter$Builder builder(io.prometheus.metrics.config.PrometheusProperties) + +++ NEW METHOD: PUBLIC(+) void close() ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.exporter.opentelemetry.OpenTelemetryExporter$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.opentelemetry.OpenTelemetryExporter buildAndStart() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.opentelemetry.OpenTelemetryExporter$Builder endpoint(java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.opentelemetry.OpenTelemetryExporter$Builder header(java.lang.String, java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.opentelemetry.OpenTelemetryExporter$Builder intervalSeconds(int) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.opentelemetry.OpenTelemetryExporter$Builder preserveNames(boolean) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.opentelemetry.OpenTelemetryExporter$Builder protocol(java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.opentelemetry.OpenTelemetryExporter$Builder registry(io.prometheus.metrics.model.registry.PrometheusRegistry) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.opentelemetry.OpenTelemetryExporter$Builder resourceAttribute(java.lang.String, java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.opentelemetry.OpenTelemetryExporter$Builder serviceInstanceId(java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.opentelemetry.OpenTelemetryExporter$Builder serviceName(java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.opentelemetry.OpenTelemetryExporter$Builder serviceNamespace(java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.opentelemetry.OpenTelemetryExporter$Builder serviceVersion(java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.opentelemetry.OpenTelemetryExporter$Builder timeoutSeconds(int) + diff --git a/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-exporter-pushgateway.txt b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-exporter-pushgateway.txt new file mode 100644 index 000000000..82cd98d0e --- /dev/null +++ b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-exporter-pushgateway.txt @@ -0,0 +1,75 @@ +Comparing source compatibility of prometheus-metrics-exporter-pushgateway-1.6.2-SNAPSHOT.jar against prometheus-metrics-exporter-pushgateway-1.6.1.jar ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.exporter.pushgateway.DefaultHttpConnectionFactory (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: io.prometheus.metrics.exporter.pushgateway.HttpConnectionFactory + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW CONSTRUCTOR: PUBLIC(+) DefaultHttpConnectionFactory() + +++ NEW METHOD: PUBLIC(+) java.net.HttpURLConnection create(java.net.URL) + +++ NEW EXCEPTION: java.io.IOException ++++ NEW ENUM: PUBLIC(+) FINAL(+) io.prometheus.metrics.exporter.pushgateway.Format (compatible) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: java.lang.constant.Constable + +++ NEW INTERFACE: java.lang.Comparable + +++ NEW INTERFACE: java.io.Serializable + +++ NEW SUPERCLASS: java.lang.Enum + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.exporter.pushgateway.Format PROMETHEUS_PROTOBUF + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.exporter.pushgateway.Format PROMETHEUS_TEXT + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.exporter.pushgateway.Format valueOf(java.lang.String) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.exporter.pushgateway.Format[] values() ++++ NEW INTERFACE: PUBLIC(+) ABSTRACT(+) io.prometheus.metrics.exporter.pushgateway.HttpConnectionFactory (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) java.net.HttpURLConnection create(java.net.URL) + +++ NEW EXCEPTION: java.io.IOException + +++ NEW ANNOTATION: java.lang.FunctionalInterface ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.exporter.pushgateway.PushGateway (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.exporter.pushgateway.PushGateway$Builder builder() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.exporter.pushgateway.PushGateway$Builder builder(io.prometheus.metrics.config.PrometheusProperties) + +++ NEW METHOD: PUBLIC(+) void delete() + +++ NEW EXCEPTION: java.io.IOException + +++ NEW METHOD: PUBLIC(+) void push() + +++ NEW EXCEPTION: java.io.IOException + +++ NEW METHOD: PUBLIC(+) void push(io.prometheus.metrics.model.registry.Collector) + +++ NEW EXCEPTION: java.io.IOException + +++ NEW METHOD: PUBLIC(+) void push(io.prometheus.metrics.model.registry.MultiCollector) + +++ NEW EXCEPTION: java.io.IOException + +++ NEW METHOD: PUBLIC(+) void pushAdd() + +++ NEW EXCEPTION: java.io.IOException + +++ NEW METHOD: PUBLIC(+) void pushAdd(io.prometheus.metrics.model.registry.Collector) + +++ NEW EXCEPTION: java.io.IOException + +++ NEW METHOD: PUBLIC(+) void pushAdd(io.prometheus.metrics.model.registry.MultiCollector) + +++ NEW EXCEPTION: java.io.IOException ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.exporter.pushgateway.PushGateway$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.pushgateway.PushGateway$Builder address(java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.pushgateway.PushGateway$Builder basicAuth(java.lang.String, java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.pushgateway.PushGateway$Builder bearerToken(java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.pushgateway.PushGateway build() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.pushgateway.PushGateway$Builder connectionFactory(io.prometheus.metrics.exporter.pushgateway.HttpConnectionFactory) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.pushgateway.PushGateway$Builder connectionTimeout(java.time.Duration) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.pushgateway.PushGateway$Builder escapingScheme(io.prometheus.metrics.config.EscapingScheme) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.pushgateway.PushGateway$Builder format(io.prometheus.metrics.exporter.pushgateway.Format) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.pushgateway.PushGateway$Builder groupingKey(java.lang.String, java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.pushgateway.PushGateway$Builder instanceIpGroupingKey() + +++ NEW EXCEPTION: java.net.UnknownHostException + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.pushgateway.PushGateway$Builder job(java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.pushgateway.PushGateway$Builder prometheusTimestampsInMs(boolean) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.pushgateway.PushGateway$Builder readTimeout(java.time.Duration) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.pushgateway.PushGateway$Builder registry(io.prometheus.metrics.model.registry.PrometheusRegistry) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.exporter.pushgateway.PushGateway$Builder scheme(io.prometheus.metrics.exporter.pushgateway.Scheme) ++++ NEW ENUM: PUBLIC(+) FINAL(+) io.prometheus.metrics.exporter.pushgateway.Scheme (compatible) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: java.lang.constant.Constable + +++ NEW INTERFACE: java.lang.Comparable + +++ NEW INTERFACE: java.io.Serializable + +++ NEW SUPERCLASS: java.lang.Enum + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.exporter.pushgateway.Scheme HTTPS + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.exporter.pushgateway.Scheme HTTP + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.exporter.pushgateway.Scheme fromString(java.lang.String) + +++ NEW METHOD: PUBLIC(+) java.lang.String toString() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.exporter.pushgateway.Scheme valueOf(java.lang.String) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.exporter.pushgateway.Scheme[] values() + diff --git a/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-exporter-servlet-jakarta.txt b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-exporter-servlet-jakarta.txt new file mode 100644 index 000000000..61372aa39 --- /dev/null +++ b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-exporter-servlet-jakarta.txt @@ -0,0 +1,12 @@ +Comparing source compatibility of prometheus-metrics-exporter-servlet-jakarta-1.6.2-SNAPSHOT.jar against prometheus-metrics-exporter-servlet-jakarta-1.6.1.jar ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.exporter.servlet.jakarta.PrometheusMetricsServlet (compatible) + +++ CLASS FILE FORMAT VERSION: 61.0 <- n.a. + +++ NEW INTERFACE: jakarta.servlet.ServletConfig + +++ NEW INTERFACE: jakarta.servlet.Servlet + +++ NEW INTERFACE: java.io.Serializable + +++ NEW SUPERCLASS: jakarta.servlet.http.HttpServlet + +++ NEW CONSTRUCTOR: PUBLIC(+) PrometheusMetricsServlet(io.prometheus.metrics.config.PrometheusProperties) + +++ NEW CONSTRUCTOR: PUBLIC(+) PrometheusMetricsServlet(io.prometheus.metrics.config.PrometheusProperties, io.prometheus.metrics.model.registry.PrometheusRegistry) + +++ NEW CONSTRUCTOR: PUBLIC(+) PrometheusMetricsServlet() + +++ NEW CONSTRUCTOR: PUBLIC(+) PrometheusMetricsServlet(io.prometheus.metrics.model.registry.PrometheusRegistry) + diff --git a/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-exporter-servlet-javax.txt b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-exporter-servlet-javax.txt new file mode 100644 index 000000000..434cfaf65 --- /dev/null +++ b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-exporter-servlet-javax.txt @@ -0,0 +1,12 @@ +Comparing source compatibility of prometheus-metrics-exporter-servlet-javax-1.6.2-SNAPSHOT.jar against prometheus-metrics-exporter-servlet-javax-1.6.1.jar ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.exporter.servlet.javax.PrometheusMetricsServlet (compatible) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: javax.servlet.ServletConfig + +++ NEW INTERFACE: javax.servlet.Servlet + +++ NEW INTERFACE: java.io.Serializable + +++ NEW SUPERCLASS: javax.servlet.http.HttpServlet + +++ NEW CONSTRUCTOR: PUBLIC(+) PrometheusMetricsServlet(io.prometheus.metrics.config.PrometheusProperties) + +++ NEW CONSTRUCTOR: PUBLIC(+) PrometheusMetricsServlet(io.prometheus.metrics.model.registry.PrometheusRegistry) + +++ NEW CONSTRUCTOR: PUBLIC(+) PrometheusMetricsServlet(io.prometheus.metrics.config.PrometheusProperties, io.prometheus.metrics.model.registry.PrometheusRegistry) + +++ NEW CONSTRUCTOR: PUBLIC(+) PrometheusMetricsServlet() + diff --git a/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-exposition-formats-shaded.txt b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-exposition-formats-shaded.txt new file mode 100644 index 000000000..2523aafc1 --- /dev/null +++ b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-exposition-formats-shaded.txt @@ -0,0 +1,2 @@ +Comparing source compatibility of prometheus-metrics-exposition-formats-1.6.2-SNAPSHOT.jar against prometheus-metrics-exposition-formats-1.6.1.jar +No changes. diff --git a/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-exposition-formats.txt b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-exposition-formats.txt new file mode 100644 index 000000000..0f04c0d1e --- /dev/null +++ b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-exposition-formats.txt @@ -0,0 +1,2 @@ +Comparing source compatibility of prometheus-metrics-exposition-formats-no-protobuf-1.6.2-SNAPSHOT.jar against prometheus-metrics-exposition-formats-no-protobuf-1.6.1.jar +No changes. diff --git a/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-exposition-textformats.txt b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-exposition-textformats.txt new file mode 100644 index 000000000..fd61bb649 --- /dev/null +++ b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-exposition-textformats.txt @@ -0,0 +1,98 @@ +Comparing source compatibility of prometheus-metrics-exposition-textformats-1.6.2-SNAPSHOT.jar against prometheus-metrics-exposition-textformats-1.6.1.jar ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.expositionformats.ExpositionFormats (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.expositionformats.ExpositionFormatWriter findWriter(java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.expositionformats.OpenMetrics2TextFormatWriter getOpenMetrics2TextFormatWriter() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.expositionformats.OpenMetricsTextFormatWriter getOpenMetricsTextFormatWriter() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.expositionformats.PrometheusProtobufWriter getPrometheusProtobufWriter() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.expositionformats.PrometheusTextFormatWriter getPrometheusTextFormatWriter() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.expositionformats.ExpositionFormats init() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.expositionformats.ExpositionFormats init(io.prometheus.metrics.config.PrometheusProperties) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.expositionformats.ExpositionFormats init(io.prometheus.metrics.config.ExporterProperties) + +++ NEW ANNOTATION: java.lang.Deprecated ++++ NEW INTERFACE: PUBLIC(+) ABSTRACT(+) io.prometheus.metrics.expositionformats.ExpositionFormatWriter (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) boolean accepts(java.lang.String) + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) java.lang.String getContentType() + +++ NEW METHOD: PUBLIC(+) boolean isAvailable() + +++ NEW METHOD: PUBLIC(+) java.lang.String toDebugString(io.prometheus.metrics.model.snapshots.MetricSnapshots, io.prometheus.metrics.config.EscapingScheme) + +++ NEW METHOD: PUBLIC(+) java.lang.String toDebugString(io.prometheus.metrics.model.snapshots.MetricSnapshots) + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) void write(java.io.OutputStream, io.prometheus.metrics.model.snapshots.MetricSnapshots, io.prometheus.metrics.config.EscapingScheme) + +++ NEW EXCEPTION: java.io.IOException + +++ NEW METHOD: PUBLIC(+) void write(java.io.OutputStream, io.prometheus.metrics.model.snapshots.MetricSnapshots) + +++ NEW EXCEPTION: java.io.IOException ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.expositionformats.OpenMetrics2TextFormatWriter (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: io.prometheus.metrics.expositionformats.ExpositionFormatWriter + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) java.lang.String CONTENT_TYPE + +++ NEW CONSTRUCTOR: PUBLIC(+) OpenMetrics2TextFormatWriter(io.prometheus.metrics.config.OpenMetrics2Properties, boolean, boolean) + +++ NEW METHOD: PUBLIC(+) boolean accepts(java.lang.String) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.expositionformats.OpenMetrics2TextFormatWriter$Builder builder() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.expositionformats.OpenMetrics2TextFormatWriter create() + +++ NEW METHOD: PUBLIC(+) java.lang.String getContentType() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.config.OpenMetrics2Properties getOpenMetrics2Properties() + +++ NEW METHOD: PUBLIC(+) void write(java.io.OutputStream, io.prometheus.metrics.model.snapshots.MetricSnapshots, io.prometheus.metrics.config.EscapingScheme) + +++ NEW EXCEPTION: java.io.IOException ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.expositionformats.OpenMetrics2TextFormatWriter$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.expositionformats.OpenMetrics2TextFormatWriter build() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.expositionformats.OpenMetrics2TextFormatWriter$Builder setCreatedTimestampsEnabled(boolean) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.expositionformats.OpenMetrics2TextFormatWriter$Builder setExemplarsOnAllMetricTypesEnabled(boolean) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.expositionformats.OpenMetrics2TextFormatWriter$Builder setOpenMetrics2Properties(io.prometheus.metrics.config.OpenMetrics2Properties) ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.expositionformats.OpenMetricsTextFormatWriter (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: io.prometheus.metrics.expositionformats.ExpositionFormatWriter + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) java.lang.String CONTENT_TYPE + +++ NEW CONSTRUCTOR: PUBLIC(+) OpenMetricsTextFormatWriter(boolean, boolean) + +++ NEW METHOD: PUBLIC(+) boolean accepts(java.lang.String) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.expositionformats.OpenMetricsTextFormatWriter$Builder builder() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.expositionformats.OpenMetricsTextFormatWriter create() + +++ NEW METHOD: PUBLIC(+) java.lang.String getContentType() + +++ NEW METHOD: PUBLIC(+) void write(java.io.OutputStream, io.prometheus.metrics.model.snapshots.MetricSnapshots, io.prometheus.metrics.config.EscapingScheme) + +++ NEW EXCEPTION: java.io.IOException ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.expositionformats.OpenMetricsTextFormatWriter$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.expositionformats.OpenMetricsTextFormatWriter build() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.expositionformats.OpenMetricsTextFormatWriter$Builder setCreatedTimestampsEnabled(boolean) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.expositionformats.OpenMetricsTextFormatWriter$Builder setExemplarsOnAllMetricTypesEnabled(boolean) ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.expositionformats.PrometheusProtobufWriter (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: io.prometheus.metrics.expositionformats.ExpositionFormatWriter + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) java.lang.String CONTENT_TYPE + +++ NEW CONSTRUCTOR: PUBLIC(+) PrometheusProtobufWriter() + +++ NEW METHOD: PUBLIC(+) boolean accepts(java.lang.String) + +++ NEW METHOD: PUBLIC(+) java.lang.String getContentType() + +++ NEW METHOD: PUBLIC(+) boolean isAvailable() + +++ NEW METHOD: PUBLIC(+) java.lang.String toDebugString(io.prometheus.metrics.model.snapshots.MetricSnapshots, io.prometheus.metrics.config.EscapingScheme) + +++ NEW METHOD: PUBLIC(+) void write(java.io.OutputStream, io.prometheus.metrics.model.snapshots.MetricSnapshots, io.prometheus.metrics.config.EscapingScheme) + +++ NEW EXCEPTION: java.io.IOException ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.expositionformats.PrometheusTextFormatWriter (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: io.prometheus.metrics.expositionformats.ExpositionFormatWriter + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) java.lang.String CONTENT_TYPE + +++ NEW CONSTRUCTOR: PUBLIC(+) PrometheusTextFormatWriter(boolean) + +++ NEW ANNOTATION: java.lang.Deprecated + +++ NEW METHOD: PUBLIC(+) boolean accepts(java.lang.String) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.expositionformats.PrometheusTextFormatWriter$Builder builder() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.expositionformats.PrometheusTextFormatWriter create() + +++ NEW METHOD: PUBLIC(+) java.lang.String getContentType() + +++ NEW METHOD: PUBLIC(+) void write(java.io.OutputStream, io.prometheus.metrics.model.snapshots.MetricSnapshots, io.prometheus.metrics.config.EscapingScheme) + +++ NEW EXCEPTION: java.io.IOException + +++ NEW METHOD: PUBLIC(+) void writeCreated(java.io.Writer, io.prometheus.metrics.model.snapshots.MetricSnapshot, io.prometheus.metrics.config.EscapingScheme) + +++ NEW EXCEPTION: java.io.IOException ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.expositionformats.PrometheusTextFormatWriter$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.expositionformats.PrometheusTextFormatWriter build() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.expositionformats.PrometheusTextFormatWriter$Builder setIncludeCreatedTimestamps(boolean) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.expositionformats.PrometheusTextFormatWriter$Builder setTimestampsInMs(boolean) + +++ NEW ANNOTATION: java.lang.Deprecated + diff --git a/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-instrumentation-caffeine.txt b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-instrumentation-caffeine.txt new file mode 100644 index 000000000..f804dc9ca --- /dev/null +++ b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-instrumentation-caffeine.txt @@ -0,0 +1,23 @@ +Comparing source compatibility of prometheus-metrics-instrumentation-caffeine-1.6.2-SNAPSHOT.jar against prometheus-metrics-instrumentation-caffeine-1.6.1.jar ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.instrumentation.caffeine.CacheMetricsCollector (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: io.prometheus.metrics.model.registry.MultiCollector + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW CONSTRUCTOR: PUBLIC(+) CacheMetricsCollector() + +++ NEW ANNOTATION: java.lang.Deprecated + +++ NEW METHOD: PUBLIC(+) void addCache(java.lang.String, com.github.benmanes.caffeine.cache.Cache) + +++ NEW METHOD: PUBLIC(+) void addCache(java.lang.String, com.github.benmanes.caffeine.cache.AsyncCache) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.caffeine.CacheMetricsCollector$Builder builder() + +++ NEW METHOD: PUBLIC(+) void clear() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.MetricSnapshots collect() + +++ NEW METHOD: PUBLIC(+) java.util.List getPrometheusNames() + +++ NEW ANNOTATION: java.lang.Deprecated + +++ NEW METHOD: PUBLIC(+) com.github.benmanes.caffeine.cache.Cache removeCache(java.lang.String) ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.caffeine.CacheMetricsCollector$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW CONSTRUCTOR: PUBLIC(+) CacheMetricsCollector$Builder() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.instrumentation.caffeine.CacheMetricsCollector build() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.instrumentation.caffeine.CacheMetricsCollector$Builder collectEvictionWeightAsCounter(boolean) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.instrumentation.caffeine.CacheMetricsCollector$Builder collectWeightedSize(boolean) + diff --git a/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-instrumentation-dropwizard.txt b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-instrumentation-dropwizard.txt new file mode 100644 index 000000000..a95df8aae --- /dev/null +++ b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-instrumentation-dropwizard.txt @@ -0,0 +1,19 @@ +Comparing source compatibility of prometheus-metrics-instrumentation-dropwizard-1.6.2-SNAPSHOT.jar against prometheus-metrics-instrumentation-dropwizard-1.6.1.jar ++++* NEW CLASS: PUBLIC(+) io.prometheus.metrics.instrumentation.dropwizard.DropwizardExports (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: io.prometheus.metrics.model.registry.MultiCollector + +++ NEW SUPERCLASS: io.prometheus.metrics.instrumentation.dropwizard5.internal.AbstractDropwizardExports + +++ NEW CONSTRUCTOR: PUBLIC(+) DropwizardExports(com.codahale.metrics.MetricRegistry) + +++ NEW CONSTRUCTOR: PUBLIC(+) DropwizardExports(com.codahale.metrics.MetricRegistry, com.codahale.metrics.MetricFilter) + +++ NEW CONSTRUCTOR: PUBLIC(+) DropwizardExports(com.codahale.metrics.MetricRegistry, com.codahale.metrics.MetricFilter, io.prometheus.metrics.instrumentation.dropwizard5.labels.CustomLabelMapper) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.dropwizard.DropwizardExports$Builder builder() ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.dropwizard.DropwizardExports$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.instrumentation.dropwizard.DropwizardExports$Builder customLabelMapper(io.prometheus.metrics.instrumentation.dropwizard5.labels.CustomLabelMapper) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.instrumentation.dropwizard.DropwizardExports$Builder dropwizardRegistry(com.codahale.metrics.MetricRegistry) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.instrumentation.dropwizard.DropwizardExports$Builder invalidMetricHandler(io.prometheus.metrics.instrumentation.dropwizard5.InvalidMetricHandler) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.instrumentation.dropwizard.DropwizardExports$Builder metricFilter(com.codahale.metrics.MetricFilter) + +++ NEW METHOD: PUBLIC(+) void register() + +++ NEW METHOD: PUBLIC(+) void register(io.prometheus.metrics.model.registry.PrometheusRegistry) + diff --git a/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-instrumentation-dropwizard5.txt b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-instrumentation-dropwizard5.txt new file mode 100644 index 000000000..e9c13ab17 --- /dev/null +++ b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-instrumentation-dropwizard5.txt @@ -0,0 +1,47 @@ +Comparing source compatibility of prometheus-metrics-instrumentation-dropwizard5-1.6.2-SNAPSHOT.jar against prometheus-metrics-instrumentation-dropwizard5-1.6.1.jar ++++* NEW CLASS: PUBLIC(+) io.prometheus.metrics.instrumentation.dropwizard5.DropwizardExports (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: io.prometheus.metrics.model.registry.MultiCollector + +++ NEW SUPERCLASS: io.prometheus.metrics.instrumentation.dropwizard5.internal.AbstractDropwizardExports + +++ NEW CONSTRUCTOR: PUBLIC(+) DropwizardExports(io.dropwizard.metrics5.MetricRegistry, io.dropwizard.metrics5.MetricFilter, io.prometheus.metrics.instrumentation.dropwizard5.labels.CustomLabelMapper) + +++ NEW CONSTRUCTOR: PUBLIC(+) DropwizardExports(io.dropwizard.metrics5.MetricRegistry) + +++ NEW CONSTRUCTOR: PUBLIC(+) DropwizardExports(io.dropwizard.metrics5.MetricRegistry, io.dropwizard.metrics5.MetricFilter) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.dropwizard5.DropwizardExports$Builder builder() ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.dropwizard5.DropwizardExports$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.instrumentation.dropwizard5.DropwizardExports$Builder customLabelMapper(io.prometheus.metrics.instrumentation.dropwizard5.labels.CustomLabelMapper) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.instrumentation.dropwizard5.DropwizardExports$Builder dropwizardRegistry(io.dropwizard.metrics5.MetricRegistry) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.instrumentation.dropwizard5.DropwizardExports$Builder invalidMetricHandler(io.prometheus.metrics.instrumentation.dropwizard5.InvalidMetricHandler) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.instrumentation.dropwizard5.DropwizardExports$Builder metricFilter(io.dropwizard.metrics5.MetricFilter) + +++ NEW METHOD: PUBLIC(+) void register() + +++ NEW METHOD: PUBLIC(+) void register(io.prometheus.metrics.model.registry.PrometheusRegistry) ++++ NEW INTERFACE: PUBLIC(+) ABSTRACT(+) io.prometheus.metrics.instrumentation.dropwizard5.InvalidMetricHandler (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.instrumentation.dropwizard5.InvalidMetricHandler ALWAYS_THROW + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) boolean suppressException(java.lang.String, java.lang.Exception) + +++ NEW ANNOTATION: java.lang.FunctionalInterface ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.instrumentation.dropwizard5.labels.CustomLabelMapper (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW CONSTRUCTOR: PUBLIC(+) CustomLabelMapper(java.util.List) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.Labels getLabels(java.lang.String, java.util.List, java.util.List) + +++ NEW METHOD: PUBLIC(+) java.lang.String getName(java.lang.String) ++++ NEW CLASS: PUBLIC(+) FINAL(+) io.prometheus.metrics.instrumentation.dropwizard5.labels.MapperConfig (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW CONSTRUCTOR: PUBLIC(+) MapperConfig() + +++ NEW CONSTRUCTOR: PUBLIC(+) MapperConfig(java.lang.String, java.lang.String, java.util.Map) + +++ NEW METHOD: PUBLIC(+) boolean equals(java.lang.Object) + +++ NEW METHOD: PUBLIC(+) java.util.Map getLabels() + +++ NEW METHOD: PUBLIC(+) java.lang.String getMatch() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.lang.String getName() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) int hashCode() + +++ NEW METHOD: PUBLIC(+) void setLabels(java.util.Map) + +++ NEW METHOD: PUBLIC(+) void setMatch(java.lang.String) + +++ NEW METHOD: PUBLIC(+) void setName(java.lang.String) + +++ NEW METHOD: PUBLIC(+) java.lang.String toString() + diff --git a/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-instrumentation-guava.txt b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-instrumentation-guava.txt new file mode 100644 index 000000000..815196d0e --- /dev/null +++ b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-instrumentation-guava.txt @@ -0,0 +1,13 @@ +Comparing source compatibility of prometheus-metrics-instrumentation-guava-1.6.2-SNAPSHOT.jar against prometheus-metrics-instrumentation-guava-1.6.1.jar ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.instrumentation.guava.CacheMetricsCollector (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: io.prometheus.metrics.model.registry.MultiCollector + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW CONSTRUCTOR: PUBLIC(+) CacheMetricsCollector() + +++ NEW METHOD: PUBLIC(+) void addCache(java.lang.String, com.google.common.cache.Cache) + +++ NEW METHOD: PUBLIC(+) void clear() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.MetricSnapshots collect() + +++ NEW METHOD: PUBLIC(+) java.util.List getPrometheusNames() + +++ NEW ANNOTATION: java.lang.Deprecated + +++ NEW METHOD: PUBLIC(+) com.google.common.cache.Cache removeCache(java.lang.String) + diff --git a/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-instrumentation-jvm.txt b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-instrumentation-jvm.txt new file mode 100644 index 000000000..391bae997 --- /dev/null +++ b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-instrumentation-jvm.txt @@ -0,0 +1,124 @@ +Comparing source compatibility of prometheus-metrics-instrumentation-jvm-1.6.2-SNAPSHOT.jar against prometheus-metrics-instrumentation-jvm-1.6.1.jar ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.instrumentation.jvm.JvmBufferPoolMetrics (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.jvm.JvmBufferPoolMetrics$Builder builder() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.jvm.JvmBufferPoolMetrics$Builder builder(io.prometheus.metrics.config.PrometheusProperties) ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.jvm.JvmBufferPoolMetrics$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.instrumentation.jvm.JvmBufferPoolMetrics$Builder constLabels(io.prometheus.metrics.model.snapshots.Labels) + +++ NEW METHOD: PUBLIC(+) void register() + +++ NEW METHOD: PUBLIC(+) void register(io.prometheus.metrics.model.registry.PrometheusRegistry) ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.instrumentation.jvm.JvmClassLoadingMetrics (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.jvm.JvmClassLoadingMetrics$Builder builder() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.jvm.JvmClassLoadingMetrics$Builder builder(io.prometheus.metrics.config.PrometheusProperties) ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.jvm.JvmClassLoadingMetrics$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.instrumentation.jvm.JvmClassLoadingMetrics$Builder constLabels(io.prometheus.metrics.model.snapshots.Labels) + +++ NEW METHOD: PUBLIC(+) void register() + +++ NEW METHOD: PUBLIC(+) void register(io.prometheus.metrics.model.registry.PrometheusRegistry) ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.instrumentation.jvm.JvmCompilationMetrics (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.jvm.JvmCompilationMetrics$Builder builder() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.jvm.JvmCompilationMetrics$Builder builder(io.prometheus.metrics.config.PrometheusProperties) ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.jvm.JvmCompilationMetrics$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.instrumentation.jvm.JvmCompilationMetrics$Builder constLabels(io.prometheus.metrics.model.snapshots.Labels) + +++ NEW METHOD: PUBLIC(+) void register() + +++ NEW METHOD: PUBLIC(+) void register(io.prometheus.metrics.model.registry.PrometheusRegistry) ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.instrumentation.jvm.JvmGarbageCollectorMetrics (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.jvm.JvmGarbageCollectorMetrics$Builder builder() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.jvm.JvmGarbageCollectorMetrics$Builder builder(io.prometheus.metrics.config.PrometheusProperties) ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.jvm.JvmGarbageCollectorMetrics$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.instrumentation.jvm.JvmGarbageCollectorMetrics$Builder constLabels(io.prometheus.metrics.model.snapshots.Labels) + +++ NEW METHOD: PUBLIC(+) void register() + +++ NEW METHOD: PUBLIC(+) void register(io.prometheus.metrics.model.registry.PrometheusRegistry) ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.instrumentation.jvm.JvmMemoryMetrics (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.jvm.JvmMemoryMetrics$Builder builder() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.jvm.JvmMemoryMetrics$Builder builder(io.prometheus.metrics.config.PrometheusProperties) ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.jvm.JvmMemoryMetrics$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.instrumentation.jvm.JvmMemoryMetrics$Builder constLabels(io.prometheus.metrics.model.snapshots.Labels) + +++ NEW METHOD: PUBLIC(+) void register() + +++ NEW METHOD: PUBLIC(+) void register(io.prometheus.metrics.model.registry.PrometheusRegistry) ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.instrumentation.jvm.JvmMemoryPoolAllocationMetrics (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.jvm.JvmMemoryPoolAllocationMetrics$Builder builder() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.jvm.JvmMemoryPoolAllocationMetrics$Builder builder(io.prometheus.metrics.config.PrometheusProperties) ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.jvm.JvmMemoryPoolAllocationMetrics$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.instrumentation.jvm.JvmMemoryPoolAllocationMetrics$Builder constLabels(io.prometheus.metrics.model.snapshots.Labels) + +++ NEW METHOD: PUBLIC(+) void register() + +++ NEW METHOD: PUBLIC(+) void register(io.prometheus.metrics.model.registry.PrometheusRegistry) ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.instrumentation.jvm.JvmMetrics (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW CONSTRUCTOR: PUBLIC(+) JvmMetrics() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.jvm.JvmMetrics$Builder builder() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.jvm.JvmMetrics$Builder builder(io.prometheus.metrics.config.PrometheusProperties) ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.jvm.JvmMetrics$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.instrumentation.jvm.JvmMetrics$Builder constLabels(io.prometheus.metrics.model.snapshots.Labels) + +++ NEW METHOD: PUBLIC(+) void register() + +++ NEW METHOD: PUBLIC(+) void register(io.prometheus.metrics.model.registry.PrometheusRegistry) ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.instrumentation.jvm.JvmNativeMemoryMetrics (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.jvm.JvmNativeMemoryMetrics$Builder builder() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.jvm.JvmNativeMemoryMetrics$Builder builder(io.prometheus.metrics.config.PrometheusProperties) ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.jvm.JvmNativeMemoryMetrics$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.instrumentation.jvm.JvmNativeMemoryMetrics$Builder constLabels(io.prometheus.metrics.model.snapshots.Labels) + +++ NEW METHOD: PUBLIC(+) void register() + +++ NEW METHOD: PUBLIC(+) void register(io.prometheus.metrics.model.registry.PrometheusRegistry) ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.instrumentation.jvm.JvmRuntimeInfoMetric (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.jvm.JvmRuntimeInfoMetric$Builder builder() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.jvm.JvmRuntimeInfoMetric$Builder builder(io.prometheus.metrics.config.PrometheusProperties) ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.jvm.JvmRuntimeInfoMetric$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.instrumentation.jvm.JvmRuntimeInfoMetric$Builder constLabels(io.prometheus.metrics.model.snapshots.Labels) + +++ NEW METHOD: PUBLIC(+) void register() + +++ NEW METHOD: PUBLIC(+) void register(io.prometheus.metrics.model.registry.PrometheusRegistry) ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.instrumentation.jvm.JvmThreadsMetrics (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.jvm.JvmThreadsMetrics$Builder builder() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.jvm.JvmThreadsMetrics$Builder builder(io.prometheus.metrics.config.PrometheusProperties) ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.jvm.JvmThreadsMetrics$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.instrumentation.jvm.JvmThreadsMetrics$Builder constLabels(io.prometheus.metrics.model.snapshots.Labels) + +++ NEW METHOD: PUBLIC(+) void register() + +++ NEW METHOD: PUBLIC(+) void register(io.prometheus.metrics.model.registry.PrometheusRegistry) ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.instrumentation.jvm.ProcessMetrics (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.jvm.ProcessMetrics$Builder builder() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.jvm.ProcessMetrics$Builder builder(io.prometheus.metrics.config.PrometheusProperties) ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.instrumentation.jvm.ProcessMetrics$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.instrumentation.jvm.ProcessMetrics$Builder constLabels(io.prometheus.metrics.model.snapshots.Labels) + +++ NEW METHOD: PUBLIC(+) void register() + +++ NEW METHOD: PUBLIC(+) void register(io.prometheus.metrics.model.registry.PrometheusRegistry) + diff --git a/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-model.txt b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-model.txt new file mode 100644 index 000000000..98a3e2b0d --- /dev/null +++ b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-model.txt @@ -0,0 +1,600 @@ +Comparing source compatibility of prometheus-metrics-model-1.6.2-SNAPSHOT.jar against prometheus-metrics-model-1.6.1.jar ++++ NEW INTERFACE: PUBLIC(+) ABSTRACT(+) io.prometheus.metrics.model.registry.Collector (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) io.prometheus.metrics.model.snapshots.MetricSnapshot collect() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.MetricSnapshot collect(io.prometheus.metrics.model.registry.PrometheusScrapeRequest) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.MetricSnapshot collect(java.util.function.Predicate) + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.MetricSnapshot collect(java.util.function.Predicate, io.prometheus.metrics.model.registry.PrometheusScrapeRequest) + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.util.Set getLabelNames() + +++ NEW ANNOTATION: java.lang.Deprecated + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.MetricMetadata getMetadata() + +++ NEW ANNOTATION: java.lang.Deprecated + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor getMetricFamilyDescriptor() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.registry.MetricType getMetricType() + +++ NEW ANNOTATION: java.lang.Deprecated + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.lang.String getPrometheusName() + +++ NEW ANNOTATION: java.lang.Deprecated + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW ANNOTATION: java.lang.FunctionalInterface ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.model.registry.MetricNameFilter (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: java.util.function.Predicate + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) java.util.function.Predicate ALLOW_ALL + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.registry.MetricNameFilter$Builder builder() + +++ NEW METHOD: PUBLIC(+) boolean test(java.lang.String) ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.registry.MetricNameFilter$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.registry.MetricNameFilter build() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.registry.MetricNameFilter$Builder nameMustBeEqualTo(java.lang.String[]) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.registry.MetricNameFilter$Builder nameMustBeEqualTo(java.util.Collection) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.registry.MetricNameFilter$Builder nameMustNotBeEqualTo(java.lang.String[]) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.registry.MetricNameFilter$Builder nameMustNotBeEqualTo(java.util.Collection) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.registry.MetricNameFilter$Builder nameMustNotStartWith(java.lang.String[]) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.registry.MetricNameFilter$Builder nameMustNotStartWith(java.util.Collection) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.registry.MetricNameFilter$Builder nameMustStartWith(java.lang.String[]) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.registry.MetricNameFilter$Builder nameMustStartWith(java.util.Collection) ++++ NEW ENUM: PUBLIC(+) FINAL(+) io.prometheus.metrics.model.registry.MetricType (compatible) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: java.lang.constant.Constable + +++ NEW INTERFACE: java.lang.Comparable + +++ NEW INTERFACE: java.io.Serializable + +++ NEW SUPERCLASS: java.lang.Enum + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.model.registry.MetricType SUMMARY + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.model.registry.MetricType HISTOGRAM + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.model.registry.MetricType STATESET + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.model.registry.MetricType UNKNOWN + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.model.registry.MetricType INFO + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.model.registry.MetricType COUNTER + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.model.registry.MetricType GAUGE + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.registry.MetricType valueOf(java.lang.String) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.registry.MetricType[] values() ++++ NEW INTERFACE: PUBLIC(+) ABSTRACT(+) io.prometheus.metrics.model.registry.MultiCollector (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) io.prometheus.metrics.model.snapshots.MetricSnapshots collect() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.MetricSnapshots collect(io.prometheus.metrics.model.registry.PrometheusScrapeRequest) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.MetricSnapshots collect(java.util.function.Predicate) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.MetricSnapshots collect(java.util.function.Predicate, io.prometheus.metrics.model.registry.PrometheusScrapeRequest) + +++ NEW METHOD: PUBLIC(+) java.util.Set getLabelNames(java.lang.String) + +++ NEW ANNOTATION: java.lang.Deprecated + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.MetricMetadata getMetadata(java.lang.String) + +++ NEW ANNOTATION: java.lang.Deprecated + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.util.List getMetricFamilyDescriptors() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.registry.MetricType getMetricType(java.lang.String) + +++ NEW ANNOTATION: java.lang.Deprecated + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.util.List getPrometheusNames() + +++ NEW ANNOTATION: java.lang.Deprecated + +++ NEW ANNOTATION: java.lang.FunctionalInterface ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.model.registry.PrometheusRegistry (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.model.registry.PrometheusRegistry defaultRegistry + +++ NEW CONSTRUCTOR: PUBLIC(+) PrometheusRegistry() + +++ NEW METHOD: PUBLIC(+) void clear() + +++ NEW METHOD: PUBLIC(+) void register(io.prometheus.metrics.model.registry.Collector) + +++ NEW METHOD: PUBLIC(+) void register(io.prometheus.metrics.model.registry.MultiCollector) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.MetricSnapshots scrape() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.MetricSnapshots scrape(io.prometheus.metrics.model.registry.PrometheusScrapeRequest) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.MetricSnapshots scrape(java.util.function.Predicate) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.MetricSnapshots scrape(java.util.function.Predicate, io.prometheus.metrics.model.registry.PrometheusScrapeRequest) + +++ NEW METHOD: PUBLIC(+) void unregister(io.prometheus.metrics.model.registry.Collector) + +++ NEW METHOD: PUBLIC(+) void unregister(io.prometheus.metrics.model.registry.MultiCollector) ++++ NEW INTERFACE: PUBLIC(+) ABSTRACT(+) io.prometheus.metrics.model.registry.PrometheusScrapeRequest (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) java.lang.String[] getParameterValues(java.lang.String) + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) java.lang.String getRequestPath() ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.model.snapshots.ClassicHistogramBucket (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: java.lang.Comparable + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW CONSTRUCTOR: PUBLIC(+) ClassicHistogramBucket(double, long) + +++ NEW METHOD: PUBLIC(+) int compareTo(io.prometheus.metrics.model.snapshots.ClassicHistogramBucket) + +++ NEW METHOD: PUBLIC(+) long getCount() + +++ NEW METHOD: PUBLIC(+) double getUpperBound() ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.model.snapshots.ClassicHistogramBuckets (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: java.lang.Iterable + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.model.snapshots.ClassicHistogramBuckets EMPTY + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.ClassicHistogramBuckets$Builder builder() + +++ NEW METHOD: PUBLIC(+) long getCount(int) + +++ NEW METHOD: PUBLIC(+) double getUpperBound(int) + +++ NEW METHOD: PUBLIC(+) boolean isEmpty() + +++ NEW METHOD: PUBLIC(+) java.util.Iterator iterator() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.ClassicHistogramBuckets of(java.util.List, java.util.List) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.ClassicHistogramBuckets of(double[], java.lang.Number[]) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.ClassicHistogramBuckets of(double[], long[]) + +++ NEW METHOD: PUBLIC(+) int size() + +++ NEW METHOD: PUBLIC(+) java.util.stream.Stream stream() ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.ClassicHistogramBuckets$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.ClassicHistogramBuckets$Builder bucket(double, long) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.ClassicHistogramBuckets build() ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.model.snapshots.CounterSnapshot (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: io.prometheus.metrics.model.snapshots.MetricSnapshot + +++ NEW CONSTRUCTOR: PUBLIC(+) CounterSnapshot(io.prometheus.metrics.model.snapshots.MetricMetadata, java.util.Collection) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.CounterSnapshot$Builder builder() + +++ NEW METHOD: PUBLIC(+) java.util.List getDataPoints() ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.CounterSnapshot$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: io.prometheus.metrics.model.snapshots.MetricSnapshot$Builder + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.CounterSnapshot build() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.CounterSnapshot$Builder dataPoint(io.prometheus.metrics.model.snapshots.CounterSnapshot$CounterDataPointSnapshot) ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.CounterSnapshot$CounterDataPointSnapshot (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: io.prometheus.metrics.model.snapshots.DataPointSnapshot + +++ NEW CONSTRUCTOR: PUBLIC(+) CounterSnapshot$CounterDataPointSnapshot(double, io.prometheus.metrics.model.snapshots.Labels, io.prometheus.metrics.model.snapshots.Exemplar, long) + +++ NEW CONSTRUCTOR: PUBLIC(+) CounterSnapshot$CounterDataPointSnapshot(double, io.prometheus.metrics.model.snapshots.Labels, io.prometheus.metrics.model.snapshots.Exemplar, long, long, boolean) + +++ NEW CONSTRUCTOR: PUBLIC(+) CounterSnapshot$CounterDataPointSnapshot(double, io.prometheus.metrics.model.snapshots.Labels, io.prometheus.metrics.model.snapshots.Exemplar, long, long) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.CounterSnapshot$CounterDataPointSnapshot$Builder builder() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.Exemplar getExemplar() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) double getValue() ++++ NEW CLASS: PUBLIC(+) ABSTRACT(+) io.prometheus.metrics.model.snapshots.DataPointSnapshot (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) long getCreatedTimestampMillis() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.Labels getLabels() + +++ NEW METHOD: PUBLIC(+) long getScrapeTimestampMillis() + +++ NEW METHOD: PUBLIC(+) boolean hasCreatedTimestamp() + +++ NEW METHOD: PUBLIC(+) boolean hasScrapeTimestamp() ++++ NEW CLASS: PUBLIC(+) ABSTRACT(+) STATIC(+) io.prometheus.metrics.model.snapshots.DataPointSnapshot$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + GENERIC TEMPLATES: +++ T:io.prometheus.metrics.model.snapshots.DataPointSnapshot$Builder + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW CONSTRUCTOR: PUBLIC(+) DataPointSnapshot$Builder() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.DataPointSnapshot$Builder labels(io.prometheus.metrics.model.snapshots.Labels) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.DataPointSnapshot$Builder scrapeTimestampMillis(long) ++++ NEW CLASS: PUBLIC(+) ABSTRACT(+) io.prometheus.metrics.model.snapshots.DistributionDataPointSnapshot (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: io.prometheus.metrics.model.snapshots.DataPointSnapshot + +++ NEW METHOD: PUBLIC(+) long getCount() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.Exemplars getExemplars() + +++ NEW METHOD: PUBLIC(+) double getSum() + +++ NEW METHOD: PUBLIC(+) boolean hasCount() + +++ NEW METHOD: PUBLIC(+) boolean hasSum() ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.model.snapshots.DuplicateLabelsException (compatible) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: java.io.Serializable + +++ NEW SUPERCLASS: java.lang.IllegalArgumentException + +++ NEW CONSTRUCTOR: PUBLIC(+) DuplicateLabelsException(io.prometheus.metrics.model.snapshots.MetricMetadata, io.prometheus.metrics.model.snapshots.Labels) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.Labels getLabels() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.MetricMetadata getMetadata() ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.model.snapshots.Exemplar (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) java.lang.String SPAN_ID + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) java.lang.String TRACE_ID + +++ NEW CONSTRUCTOR: PUBLIC(+) Exemplar(double, io.prometheus.metrics.model.snapshots.Labels, long) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.Exemplar$Builder builder() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.Labels getLabels() + +++ NEW METHOD: PUBLIC(+) long getTimestampMillis() + +++ NEW METHOD: PUBLIC(+) double getValue() + +++ NEW METHOD: PUBLIC(+) boolean hasTimestamp() ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.Exemplar$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.Exemplar build() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.Exemplar$Builder labels(io.prometheus.metrics.model.snapshots.Labels) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.Exemplar$Builder spanId(java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.Exemplar$Builder timestampMillis(long) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.Exemplar$Builder traceId(java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.Exemplar$Builder value(double) ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.model.snapshots.Exemplars (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: java.lang.Iterable + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.model.snapshots.Exemplars EMPTY + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.Exemplars$Builder builder() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.Exemplar get(int) + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.Exemplar get(double, double) + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.Exemplar getLatest() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.util.Iterator iterator() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.Exemplars of(java.util.Collection) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.Exemplars of(io.prometheus.metrics.model.snapshots.Exemplar[]) + +++ NEW METHOD: PUBLIC(+) int size() ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.Exemplars$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.Exemplars build() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.Exemplars$Builder exemplar(io.prometheus.metrics.model.snapshots.Exemplar) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.Exemplars$Builder exemplars(java.util.Collection) ++++ NEW CLASS: PUBLIC(+) FINAL(+) io.prometheus.metrics.model.snapshots.GaugeSnapshot (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: io.prometheus.metrics.model.snapshots.MetricSnapshot + +++ NEW CONSTRUCTOR: PUBLIC(+) GaugeSnapshot(io.prometheus.metrics.model.snapshots.MetricMetadata, java.util.Collection) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.GaugeSnapshot$Builder builder() + +++ NEW METHOD: PUBLIC(+) java.util.List getDataPoints() ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.GaugeSnapshot$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: io.prometheus.metrics.model.snapshots.MetricSnapshot$Builder + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.GaugeSnapshot build() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.GaugeSnapshot$Builder dataPoint(io.prometheus.metrics.model.snapshots.GaugeSnapshot$GaugeDataPointSnapshot) ++++ NEW CLASS: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.model.snapshots.GaugeSnapshot$GaugeDataPointSnapshot (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: io.prometheus.metrics.model.snapshots.DataPointSnapshot + +++ NEW CONSTRUCTOR: PUBLIC(+) GaugeSnapshot$GaugeDataPointSnapshot(double, io.prometheus.metrics.model.snapshots.Labels, io.prometheus.metrics.model.snapshots.Exemplar, long) + +++ NEW CONSTRUCTOR: PUBLIC(+) GaugeSnapshot$GaugeDataPointSnapshot(double, io.prometheus.metrics.model.snapshots.Labels, io.prometheus.metrics.model.snapshots.Exemplar) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.GaugeSnapshot$GaugeDataPointSnapshot$Builder builder() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.Exemplar getExemplar() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) double getValue() ++++ NEW CLASS: PUBLIC(+) FINAL(+) io.prometheus.metrics.model.snapshots.HistogramSnapshot (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: io.prometheus.metrics.model.snapshots.MetricSnapshot + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) int CLASSIC_HISTOGRAM + +++ NEW CONSTRUCTOR: PUBLIC(+) HistogramSnapshot(io.prometheus.metrics.model.snapshots.MetricMetadata, java.util.Collection) + +++ NEW CONSTRUCTOR: PUBLIC(+) HistogramSnapshot(boolean, io.prometheus.metrics.model.snapshots.MetricMetadata, java.util.Collection) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.HistogramSnapshot$Builder builder() + +++ NEW METHOD: PUBLIC(+) java.util.List getDataPoints() + +++ NEW METHOD: PUBLIC(+) boolean isGaugeHistogram() ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.HistogramSnapshot$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: io.prometheus.metrics.model.snapshots.MetricSnapshot$Builder + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.HistogramSnapshot build() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.HistogramSnapshot$Builder dataPoint(io.prometheus.metrics.model.snapshots.HistogramSnapshot$HistogramDataPointSnapshot) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.HistogramSnapshot$Builder gaugeHistogram(boolean) ++++ NEW CLASS: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.model.snapshots.HistogramSnapshot$HistogramDataPointSnapshot (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: io.prometheus.metrics.model.snapshots.DistributionDataPointSnapshot + +++ NEW CONSTRUCTOR: PUBLIC(+) HistogramSnapshot$HistogramDataPointSnapshot(int, long, double, io.prometheus.metrics.model.snapshots.NativeHistogramBuckets, io.prometheus.metrics.model.snapshots.NativeHistogramBuckets, double, io.prometheus.metrics.model.snapshots.Labels, io.prometheus.metrics.model.snapshots.Exemplars, long) + +++ NEW CONSTRUCTOR: PUBLIC(+) HistogramSnapshot$HistogramDataPointSnapshot(io.prometheus.metrics.model.snapshots.ClassicHistogramBuckets, int, long, double, io.prometheus.metrics.model.snapshots.NativeHistogramBuckets, io.prometheus.metrics.model.snapshots.NativeHistogramBuckets, double, io.prometheus.metrics.model.snapshots.Labels, io.prometheus.metrics.model.snapshots.Exemplars, long) + +++ NEW CONSTRUCTOR: PUBLIC(+) HistogramSnapshot$HistogramDataPointSnapshot(io.prometheus.metrics.model.snapshots.ClassicHistogramBuckets, int, long, double, io.prometheus.metrics.model.snapshots.NativeHistogramBuckets, io.prometheus.metrics.model.snapshots.NativeHistogramBuckets, double, io.prometheus.metrics.model.snapshots.Labels, io.prometheus.metrics.model.snapshots.Exemplars, long, long) + +++ NEW CONSTRUCTOR: PUBLIC(+) HistogramSnapshot$HistogramDataPointSnapshot(io.prometheus.metrics.model.snapshots.ClassicHistogramBuckets, double, io.prometheus.metrics.model.snapshots.Labels, io.prometheus.metrics.model.snapshots.Exemplars, long) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.HistogramSnapshot$HistogramDataPointSnapshot$Builder builder() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.ClassicHistogramBuckets getClassicBuckets() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.NativeHistogramBuckets getNativeBucketsForNegativeValues() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.NativeHistogramBuckets getNativeBucketsForPositiveValues() + +++ NEW METHOD: PUBLIC(+) int getNativeSchema() + +++ NEW METHOD: PUBLIC(+) long getNativeZeroCount() + +++ NEW METHOD: PUBLIC(+) double getNativeZeroThreshold() + +++ NEW METHOD: PUBLIC(+) boolean hasClassicHistogramData() + +++ NEW METHOD: PUBLIC(+) boolean hasNativeHistogramData() ++++ NEW CLASS: PUBLIC(+) FINAL(+) io.prometheus.metrics.model.snapshots.InfoSnapshot (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: io.prometheus.metrics.model.snapshots.MetricSnapshot + +++ NEW CONSTRUCTOR: PUBLIC(+) InfoSnapshot(io.prometheus.metrics.model.snapshots.MetricMetadata, java.util.Collection) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.InfoSnapshot$Builder builder() + +++ NEW METHOD: PUBLIC(+) java.util.List getDataPoints() ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.InfoSnapshot$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: io.prometheus.metrics.model.snapshots.MetricSnapshot$Builder + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.InfoSnapshot build() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.InfoSnapshot$Builder dataPoint(io.prometheus.metrics.model.snapshots.InfoSnapshot$InfoDataPointSnapshot) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.InfoSnapshot$Builder unit(io.prometheus.metrics.model.snapshots.Unit) ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.InfoSnapshot$InfoDataPointSnapshot (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: io.prometheus.metrics.model.snapshots.DataPointSnapshot + +++ NEW CONSTRUCTOR: PUBLIC(+) InfoSnapshot$InfoDataPointSnapshot(io.prometheus.metrics.model.snapshots.Labels) + +++ NEW CONSTRUCTOR: PUBLIC(+) InfoSnapshot$InfoDataPointSnapshot(io.prometheus.metrics.model.snapshots.Labels, long) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.InfoSnapshot$InfoDataPointSnapshot$Builder builder() ++++ NEW CLASS: PUBLIC(+) FINAL(+) io.prometheus.metrics.model.snapshots.Label (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: java.lang.Comparable + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW CONSTRUCTOR: PUBLIC(+) Label(java.lang.String, java.lang.String) + +++ NEW METHOD: PUBLIC(+) int compareTo(io.prometheus.metrics.model.snapshots.Label) + +++ NEW METHOD: PUBLIC(+) boolean equals(java.lang.Object) + +++ NEW METHOD: PUBLIC(+) java.lang.String getName() + +++ NEW METHOD: PUBLIC(+) java.lang.String getValue() + +++ NEW METHOD: PUBLIC(+) int hashCode() + +++ NEW METHOD: PUBLIC(+) java.lang.String toString() ++++ NEW CLASS: PUBLIC(+) FINAL(+) io.prometheus.metrics.model.snapshots.Labels (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: java.lang.Comparable + +++ NEW INTERFACE: java.lang.Iterable + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.model.snapshots.Labels EMPTY + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.Labels add(java.lang.String, java.lang.String) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.Labels$Builder builder() + +++ NEW METHOD: PUBLIC(+) int compareTo(io.prometheus.metrics.model.snapshots.Labels) + +++ NEW METHOD: PUBLIC(+) boolean contains(java.lang.String) + +++ NEW METHOD: PUBLIC(+) boolean equals(java.lang.Object) + +++ NEW METHOD: PUBLIC(+) java.lang.String get(java.lang.String) + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.lang.String getName(int) + +++ NEW METHOD: PUBLIC(+) java.lang.String getPrometheusName(int) + +++ NEW METHOD: PUBLIC(+) java.lang.String getValue(int) + +++ NEW METHOD: PUBLIC(+) int hashCode() + +++ NEW METHOD: PUBLIC(+) boolean hasSameNames(io.prometheus.metrics.model.snapshots.Labels) + +++ NEW METHOD: PUBLIC(+) boolean hasSameValues(io.prometheus.metrics.model.snapshots.Labels) + +++ NEW METHOD: PUBLIC(+) boolean isEmpty() + +++ NEW METHOD: PUBLIC(+) java.util.Iterator iterator() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.Labels merge(io.prometheus.metrics.model.snapshots.Labels) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.Labels merge(java.lang.String[], java.lang.String[]) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.Labels of(java.lang.String[]) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.Labels of(java.util.List, java.util.List) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.Labels of(java.lang.String[], java.lang.String[]) + +++ NEW METHOD: PUBLIC(+) int size() + +++ NEW METHOD: PUBLIC(+) java.util.stream.Stream stream() + +++ NEW METHOD: PUBLIC(+) java.lang.String toString() ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.Labels$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.Labels build() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.Labels$Builder label(java.lang.String, java.lang.String) ++++ NEW CLASS: PUBLIC(+) FINAL(+) io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor$CounterBuilder counter(java.lang.String) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor$GaugeBuilder gauge(java.lang.String) + +++ NEW METHOD: PUBLIC(+) java.util.Set getLabelNames() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.MetricMetadata getMetadata() + +++ NEW METHOD: PUBLIC(+) java.lang.String getPrometheusName() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.registry.MetricType getType() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor$HistogramBuilder histogram(java.lang.String) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor$InfoBuilder info(java.lang.String) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor of(io.prometheus.metrics.model.registry.MetricType, io.prometheus.metrics.model.snapshots.MetricMetadata) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor of(io.prometheus.metrics.model.registry.MetricType, io.prometheus.metrics.model.snapshots.MetricMetadata, java.util.Collection) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor$Builder of(io.prometheus.metrics.model.registry.MetricType, java.lang.String) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor$StateSetBuilder stateSet(java.lang.String) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor$SummaryBuilder summary(java.lang.String) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor$UnknownBuilder unknown(java.lang.String) ++++ NEW CLASS: PUBLIC(+) ABSTRACT(+) STATIC(+) io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + GENERIC TEMPLATES: +++ T:io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor$Builder + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW CONSTRUCTOR: PUBLIC(+) MetricFamilyDescriptor$Builder() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor build() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor$Builder help(java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor$Builder labelName(java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor$Builder labelNames(java.lang.String[]) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor$Builder labelNames(java.util.Collection) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor$Builder name(java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor$Builder unit(io.prometheus.metrics.model.snapshots.Unit) ++++ NEW CLASS: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor$CounterBuilder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor$Builder + +++ NEW CONSTRUCTOR: PUBLIC(+) MetricFamilyDescriptor$CounterBuilder() ++++ NEW CLASS: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor$GaugeBuilder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor$Builder + +++ NEW CONSTRUCTOR: PUBLIC(+) MetricFamilyDescriptor$GaugeBuilder() ++++ NEW CLASS: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor$HistogramBuilder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor$Builder + +++ NEW CONSTRUCTOR: PUBLIC(+) MetricFamilyDescriptor$HistogramBuilder() ++++ NEW CLASS: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor$InfoBuilder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor$Builder + +++ NEW CONSTRUCTOR: PUBLIC(+) MetricFamilyDescriptor$InfoBuilder() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor$InfoBuilder unit(io.prometheus.metrics.model.snapshots.Unit) ++++ NEW CLASS: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor$StateSetBuilder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor$Builder + +++ NEW CONSTRUCTOR: PUBLIC(+) MetricFamilyDescriptor$StateSetBuilder() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor$StateSetBuilder unit(io.prometheus.metrics.model.snapshots.Unit) ++++ NEW CLASS: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor$SummaryBuilder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor$Builder + +++ NEW CONSTRUCTOR: PUBLIC(+) MetricFamilyDescriptor$SummaryBuilder() ++++ NEW CLASS: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor$UnknownBuilder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor$Builder + +++ NEW CONSTRUCTOR: PUBLIC(+) MetricFamilyDescriptor$UnknownBuilder() ++++ NEW CLASS: PUBLIC(+) FINAL(+) io.prometheus.metrics.model.snapshots.MetricMetadata (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW CONSTRUCTOR: PUBLIC(+) MetricMetadata(java.lang.String, java.lang.String, java.lang.String, io.prometheus.metrics.model.snapshots.Unit) + +++ NEW CONSTRUCTOR: PUBLIC(+) MetricMetadata(java.lang.String) + +++ NEW CONSTRUCTOR: PUBLIC(+) MetricMetadata(java.lang.String, java.lang.String, io.prometheus.metrics.model.snapshots.Unit) + +++ NEW CONSTRUCTOR: PUBLIC(+) MetricMetadata(java.lang.String, java.lang.String, java.lang.String, java.lang.String, io.prometheus.metrics.model.snapshots.Unit) + +++ NEW CONSTRUCTOR: PUBLIC(+) MetricMetadata(java.lang.String, java.lang.String) + +++ NEW METHOD: PUBLIC(+) java.lang.String getExpositionBaseName() + +++ NEW METHOD: PUBLIC(+) java.lang.String getExpositionBasePrometheusName() + +++ NEW METHOD: PUBLIC(+) java.lang.String getHelp() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) java.lang.String getName() + +++ NEW METHOD: PUBLIC(+) java.lang.String getOriginalName() + +++ NEW METHOD: PUBLIC(+) java.lang.String getPrometheusName() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.Unit getUnit() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) boolean hasUnit() ++++ NEW CLASS: PUBLIC(+) ABSTRACT(+) io.prometheus.metrics.model.snapshots.MetricSnapshot (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) java.util.List getDataPoints() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.MetricMetadata getMetadata() ++++ NEW CLASS: PUBLIC(+) ABSTRACT(+) STATIC(+) io.prometheus.metrics.model.snapshots.MetricSnapshot$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + GENERIC TEMPLATES: +++ T:io.prometheus.metrics.model.snapshots.MetricSnapshot$Builder + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW CONSTRUCTOR: PUBLIC(+) MetricSnapshot$Builder() + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) io.prometheus.metrics.model.snapshots.MetricSnapshot build() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.MetricSnapshot$Builder help(java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.MetricSnapshot$Builder name(java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.MetricSnapshot$Builder unit(io.prometheus.metrics.model.snapshots.Unit) ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.model.snapshots.MetricSnapshots (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: java.lang.Iterable + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW CONSTRUCTOR: PUBLIC(+) MetricSnapshots(java.util.Collection) + +++ NEW CONSTRUCTOR: PUBLIC(+) MetricSnapshots(io.prometheus.metrics.model.snapshots.MetricSnapshot[]) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.MetricSnapshots$Builder builder() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.MetricSnapshot get(int) + +++ NEW METHOD: PUBLIC(+) java.util.Iterator iterator() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.MetricSnapshots of(io.prometheus.metrics.model.snapshots.MetricSnapshot[]) + +++ NEW METHOD: PUBLIC(+) int size() + +++ NEW METHOD: PUBLIC(+) java.util.stream.Stream stream() ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.MetricSnapshots$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.MetricSnapshots build() + +++ NEW METHOD: PUBLIC(+) boolean containsMetricName(java.lang.String) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.MetricSnapshots$Builder metricSnapshot(io.prometheus.metrics.model.snapshots.MetricSnapshot) ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.model.snapshots.NativeHistogramBucket (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW CONSTRUCTOR: PUBLIC(+) NativeHistogramBucket(int, long) + +++ NEW METHOD: PUBLIC(+) int getBucketIndex() + +++ NEW METHOD: PUBLIC(+) long getCount() ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.model.snapshots.NativeHistogramBuckets (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: java.lang.Iterable + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.model.snapshots.NativeHistogramBuckets EMPTY + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.NativeHistogramBuckets$Builder builder() + +++ NEW METHOD: PUBLIC(+) int getBucketIndex(int) + +++ NEW METHOD: PUBLIC(+) long getCount(int) + +++ NEW METHOD: PUBLIC(+) java.util.Iterator iterator() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.NativeHistogramBuckets of(int[], long[]) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.NativeHistogramBuckets of(java.util.List, java.util.List) + +++ NEW METHOD: PUBLIC(+) int size() + +++ NEW METHOD: PUBLIC(+) java.util.stream.Stream stream() ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.NativeHistogramBuckets$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.NativeHistogramBuckets$Builder bucket(int, long) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.NativeHistogramBuckets build() ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.model.snapshots.PrometheusNaming (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW CONSTRUCTOR: PUBLIC(+) PrometheusNaming() + +++ NEW METHOD: PUBLIC(+) STATIC(+) java.lang.String escapeName(java.lang.String, io.prometheus.metrics.config.EscapingScheme) + +++ NEW METHOD: PUBLIC(+) STATIC(+) boolean isValidLabelName(java.lang.String) + +++ NEW METHOD: PUBLIC(+) STATIC(+) boolean isValidLegacyLabelName(java.lang.String) + +++ NEW METHOD: PUBLIC(+) STATIC(+) boolean isValidLegacyMetricName(java.lang.String) + +++ NEW METHOD: PUBLIC(+) STATIC(+) boolean isValidMetricName(java.lang.String) + +++ NEW METHOD: PUBLIC(+) STATIC(+) boolean isValidUnitName(java.lang.String) + +++ NEW METHOD: PUBLIC(+) STATIC(+) boolean needsEscaping(java.lang.String, io.prometheus.metrics.config.EscapingScheme) + +++ NEW METHOD: PUBLIC(+) STATIC(+) java.lang.String normalizeMetricName(java.lang.String) + +++ NEW METHOD: PUBLIC(+) STATIC(+) java.lang.String normalizeMetricName(java.lang.String, io.prometheus.metrics.model.snapshots.Unit) + +++ NEW METHOD: PUBLIC(+) STATIC(+) java.lang.String prometheusName(java.lang.String) + +++ NEW METHOD: PUBLIC(+) STATIC(+) java.lang.String sanitizeLabelName(java.lang.String) + +++ NEW METHOD: PUBLIC(+) STATIC(+) java.lang.String sanitizeMetricName(java.lang.String) + +++ NEW METHOD: PUBLIC(+) STATIC(+) java.lang.String sanitizeMetricName(java.lang.String, io.prometheus.metrics.model.snapshots.Unit) + +++ NEW METHOD: PUBLIC(+) STATIC(+) java.lang.String sanitizeUnitName(java.lang.String) + +++ NEW METHOD: PUBLIC(+) STATIC(+) java.lang.String validateMetricName(java.lang.String) + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) STATIC(+) java.lang.String validateUnitName(java.lang.String) + +++ NEW ANNOTATION: javax.annotation.Nullable ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.model.snapshots.Quantile (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW CONSTRUCTOR: PUBLIC(+) Quantile(double, double) + +++ NEW METHOD: PUBLIC(+) double getQuantile() + +++ NEW METHOD: PUBLIC(+) double getValue() ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.model.snapshots.Quantiles (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: java.lang.Iterable + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.model.snapshots.Quantiles EMPTY + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.Quantiles$Builder builder() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.Quantile get(int) + +++ NEW METHOD: PUBLIC(+) java.util.Iterator iterator() + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.Quantiles of(java.util.List) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.Quantiles of(io.prometheus.metrics.model.snapshots.Quantile[]) + +++ NEW METHOD: PUBLIC(+) int size() ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.Quantiles$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.Quantiles build() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.Quantiles$Builder quantile(io.prometheus.metrics.model.snapshots.Quantile) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.Quantiles$Builder quantile(double, double) ++++ NEW CLASS: PUBLIC(+) FINAL(+) io.prometheus.metrics.model.snapshots.StateSetSnapshot (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: io.prometheus.metrics.model.snapshots.MetricSnapshot + +++ NEW CONSTRUCTOR: PUBLIC(+) StateSetSnapshot(io.prometheus.metrics.model.snapshots.MetricMetadata, java.util.Collection) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.StateSetSnapshot$Builder builder() + +++ NEW METHOD: PUBLIC(+) java.util.List getDataPoints() ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.StateSetSnapshot$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: io.prometheus.metrics.model.snapshots.MetricSnapshot$Builder + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.StateSetSnapshot build() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.StateSetSnapshot$Builder dataPoint(io.prometheus.metrics.model.snapshots.StateSetSnapshot$StateSetDataPointSnapshot) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.StateSetSnapshot$Builder unit(io.prometheus.metrics.model.snapshots.Unit) ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.StateSetSnapshot$State (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) java.lang.String getName() + +++ NEW METHOD: PUBLIC(+) boolean isTrue() ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.StateSetSnapshot$StateSetDataPointSnapshot (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: java.lang.Iterable + +++ NEW SUPERCLASS: io.prometheus.metrics.model.snapshots.DataPointSnapshot + +++ NEW CONSTRUCTOR: PUBLIC(+) StateSetSnapshot$StateSetDataPointSnapshot(java.lang.String[], boolean[], io.prometheus.metrics.model.snapshots.Labels, long) + +++ NEW CONSTRUCTOR: PUBLIC(+) StateSetSnapshot$StateSetDataPointSnapshot(java.lang.String[], boolean[], io.prometheus.metrics.model.snapshots.Labels) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.StateSetSnapshot$StateSetDataPointSnapshot$Builder builder() + +++ NEW METHOD: PUBLIC(+) java.lang.String getName(int) + +++ NEW METHOD: PUBLIC(+) boolean isTrue(int) + +++ NEW METHOD: PUBLIC(+) java.util.Iterator iterator() + +++ NEW METHOD: PUBLIC(+) int size() + +++ NEW METHOD: PUBLIC(+) java.util.stream.Stream stream() ++++ NEW CLASS: PUBLIC(+) FINAL(+) io.prometheus.metrics.model.snapshots.SummarySnapshot (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: io.prometheus.metrics.model.snapshots.MetricSnapshot + +++ NEW CONSTRUCTOR: PUBLIC(+) SummarySnapshot(io.prometheus.metrics.model.snapshots.MetricMetadata, java.util.Collection) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.SummarySnapshot$Builder builder() + +++ NEW METHOD: PUBLIC(+) java.util.List getDataPoints() ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.SummarySnapshot$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: io.prometheus.metrics.model.snapshots.MetricSnapshot$Builder + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.SummarySnapshot build() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.SummarySnapshot$Builder dataPoint(io.prometheus.metrics.model.snapshots.SummarySnapshot$SummaryDataPointSnapshot) ++++ NEW CLASS: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.model.snapshots.SummarySnapshot$SummaryDataPointSnapshot (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: io.prometheus.metrics.model.snapshots.DistributionDataPointSnapshot + +++ NEW CONSTRUCTOR: PUBLIC(+) SummarySnapshot$SummaryDataPointSnapshot(long, double, io.prometheus.metrics.model.snapshots.Quantiles, io.prometheus.metrics.model.snapshots.Labels, io.prometheus.metrics.model.snapshots.Exemplars, long, long) + +++ NEW CONSTRUCTOR: PUBLIC(+) SummarySnapshot$SummaryDataPointSnapshot(long, double, io.prometheus.metrics.model.snapshots.Quantiles, io.prometheus.metrics.model.snapshots.Labels, io.prometheus.metrics.model.snapshots.Exemplars, long) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.SummarySnapshot$SummaryDataPointSnapshot$Builder builder() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.Quantiles getQuantiles() ++++ NEW CLASS: PUBLIC(+) FINAL(+) io.prometheus.metrics.model.snapshots.Unit (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.model.snapshots.Unit BYTES + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.model.snapshots.Unit GRAMS + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.model.snapshots.Unit METERS + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.model.snapshots.Unit VOLTS + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.model.snapshots.Unit SECONDS + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.model.snapshots.Unit RATIO + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.model.snapshots.Unit CELSIUS + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.model.snapshots.Unit JOULES + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.model.snapshots.Unit AMPERES + +++ NEW CONSTRUCTOR: PUBLIC(+) Unit(java.lang.String) + +++ NEW METHOD: PUBLIC(+) boolean equals(java.lang.Object) + +++ NEW METHOD: PUBLIC(+) int hashCode() + +++ NEW METHOD: PUBLIC(+) STATIC(+) double kiloBytesToBytes(double) + +++ NEW METHOD: PUBLIC(+) STATIC(+) double millisToSeconds(long) + +++ NEW METHOD: PUBLIC(+) STATIC(+) double nanosToSeconds(long) + +++ NEW METHOD: PUBLIC(+) STATIC(+) double secondsToMillis(double) + +++ NEW METHOD: PUBLIC(+) java.lang.String toString() ++++ NEW CLASS: PUBLIC(+) FINAL(+) io.prometheus.metrics.model.snapshots.UnknownSnapshot (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: io.prometheus.metrics.model.snapshots.MetricSnapshot + +++ NEW CONSTRUCTOR: PUBLIC(+) UnknownSnapshot(io.prometheus.metrics.model.snapshots.MetricMetadata, java.util.Collection) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.UnknownSnapshot$Builder builder() + +++ NEW METHOD: PUBLIC(+) java.util.List getDataPoints() ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.UnknownSnapshot$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: io.prometheus.metrics.model.snapshots.MetricSnapshot$Builder + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.UnknownSnapshot build() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.UnknownSnapshot$Builder dataPoint(io.prometheus.metrics.model.snapshots.UnknownSnapshot$UnknownDataPointSnapshot) ++++ NEW CLASS: PUBLIC(+) STATIC(+) FINAL(+) io.prometheus.metrics.model.snapshots.UnknownSnapshot$UnknownDataPointSnapshot (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: io.prometheus.metrics.model.snapshots.DataPointSnapshot + +++ NEW CONSTRUCTOR: PUBLIC(+) UnknownSnapshot$UnknownDataPointSnapshot(double, io.prometheus.metrics.model.snapshots.Labels, io.prometheus.metrics.model.snapshots.Exemplar, long) + +++ NEW CONSTRUCTOR: PUBLIC(+) UnknownSnapshot$UnknownDataPointSnapshot(double, io.prometheus.metrics.model.snapshots.Labels, io.prometheus.metrics.model.snapshots.Exemplar) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.model.snapshots.UnknownSnapshot$UnknownDataPointSnapshot$Builder builder() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.Exemplar getExemplar() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) double getValue() + diff --git a/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-simpleclient-bridge.txt b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-simpleclient-bridge.txt new file mode 100644 index 000000000..bb1fb6594 --- /dev/null +++ b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-simpleclient-bridge.txt @@ -0,0 +1,16 @@ +Comparing source compatibility of prometheus-metrics-simpleclient-bridge-1.6.2-SNAPSHOT.jar against prometheus-metrics-simpleclient-bridge-1.6.1.jar ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.simpleclient.bridge.SimpleclientCollector (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW INTERFACE: io.prometheus.metrics.model.registry.MultiCollector + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.simpleclient.bridge.SimpleclientCollector$Builder builder(io.prometheus.metrics.config.PrometheusProperties) + +++ NEW METHOD: PUBLIC(+) STATIC(+) io.prometheus.metrics.simpleclient.bridge.SimpleclientCollector$Builder builder() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.model.snapshots.MetricSnapshots collect() ++++ NEW CLASS: PUBLIC(+) STATIC(+) io.prometheus.metrics.simpleclient.bridge.SimpleclientCollector$Builder (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.simpleclient.bridge.SimpleclientCollector build() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.simpleclient.bridge.SimpleclientCollector$Builder collectorRegistry(io.prometheus.client.CollectorRegistry) + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.simpleclient.bridge.SimpleclientCollector register() + +++ NEW METHOD: PUBLIC(+) io.prometheus.metrics.simpleclient.bridge.SimpleclientCollector register(io.prometheus.metrics.model.registry.PrometheusRegistry) + diff --git a/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-tracer-common.txt b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-tracer-common.txt new file mode 100644 index 000000000..6782f73f2 --- /dev/null +++ b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-tracer-common.txt @@ -0,0 +1,13 @@ +Comparing source compatibility of prometheus-metrics-tracer-common-1.6.2-SNAPSHOT.jar against prometheus-metrics-tracer-common-1.6.1.jar ++++ NEW INTERFACE: PUBLIC(+) ABSTRACT(+) io.prometheus.metrics.tracer.common.SpanContext (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) java.lang.String EXEMPLAR_ATTRIBUTE_NAME + +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) java.lang.String EXEMPLAR_ATTRIBUTE_VALUE + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) java.lang.String getCurrentSpanId() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) java.lang.String getCurrentTraceId() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) boolean isCurrentSpanSampled() + +++ NEW METHOD: PUBLIC(+) ABSTRACT(+) void markCurrentSpanAsExemplar() + diff --git a/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-tracer-initializer.txt b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-tracer-initializer.txt new file mode 100644 index 000000000..2d9b9b09d --- /dev/null +++ b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-tracer-initializer.txt @@ -0,0 +1,2 @@ +Comparing source compatibility of prometheus-metrics-tracer-initializer-1.6.2-SNAPSHOT.jar against prometheus-metrics-tracer-initializer-1.6.1.jar +No changes. diff --git a/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-tracer-otel-agent.txt b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-tracer-otel-agent.txt new file mode 100644 index 000000000..c44f14c31 --- /dev/null +++ b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-tracer-otel-agent.txt @@ -0,0 +1,2 @@ +Comparing source compatibility of prometheus-metrics-tracer-otel-agent-1.6.2-SNAPSHOT.jar against prometheus-metrics-tracer-otel-agent-1.6.1.jar +No changes. diff --git a/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-tracer-otel.txt b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-tracer-otel.txt new file mode 100644 index 000000000..b6419eebe --- /dev/null +++ b/docs/apidiffs/1.7.0_vs_1.6.1/prometheus-metrics-tracer-otel.txt @@ -0,0 +1,2 @@ +Comparing source compatibility of prometheus-metrics-tracer-otel-1.6.2-SNAPSHOT.jar against prometheus-metrics-tracer-otel-1.6.1.jar +No changes. diff --git a/docs/apidiffs/current_vs_latest/prometheus-metrics-annotations.txt b/docs/apidiffs/current_vs_latest/prometheus-metrics-annotations.txt new file mode 100644 index 000000000..36053089a --- /dev/null +++ b/docs/apidiffs/current_vs_latest/prometheus-metrics-annotations.txt @@ -0,0 +1,2 @@ +Comparing source compatibility of prometheus-metrics-annotations-1.7.1-SNAPSHOT.jar against prometheus-metrics-annotations-1.7.0.jar +No changes. diff --git a/docs/apidiffs/current_vs_latest/prometheus-metrics-config.txt b/docs/apidiffs/current_vs_latest/prometheus-metrics-config.txt new file mode 100644 index 000000000..516d53a00 --- /dev/null +++ b/docs/apidiffs/current_vs_latest/prometheus-metrics-config.txt @@ -0,0 +1,2 @@ +Comparing source compatibility of prometheus-metrics-config-1.7.1-SNAPSHOT.jar against prometheus-metrics-config-1.7.0.jar +No changes. diff --git a/docs/apidiffs/current_vs_latest/prometheus-metrics-core.txt b/docs/apidiffs/current_vs_latest/prometheus-metrics-core.txt new file mode 100644 index 000000000..fa164a17e --- /dev/null +++ b/docs/apidiffs/current_vs_latest/prometheus-metrics-core.txt @@ -0,0 +1,19 @@ +Comparing source compatibility of prometheus-metrics-core-1.7.1-SNAPSHOT.jar against prometheus-metrics-core-1.7.0.jar ++++ NEW CLASS: PUBLIC(+) io.prometheus.metrics.core.exemplars.ExemplarLabelsSupplier (not serializable) + +++ CLASS FILE FORMAT VERSION: 52.0 <- n.a. + +++ NEW SUPERCLASS: java.lang.Object + +++ NEW METHOD: PUBLIC(+) STATIC(+) java.util.function.Supplier getExemplarLabelsSupplier() + +++ NEW ANNOTATION: javax.annotation.Nullable + +++ NEW METHOD: PUBLIC(+) STATIC(+) void setExemplarLabelsSupplier(java.util.function.Supplier) +*** MODIFIED CLASS: PUBLIC io.prometheus.metrics.core.exemplars.ExemplarSampler (not serializable) + === CLASS FILE FORMAT VERSION: 52.0 <- 52.0 + +++ NEW CONSTRUCTOR: PUBLIC(+) ExemplarSampler(io.prometheus.metrics.core.exemplars.ExemplarSamplerConfig, io.prometheus.metrics.tracer.common.SpanContext, java.util.function.Supplier) +*** MODIFIED CLASS: PUBLIC io.prometheus.metrics.core.metrics.Counter (not serializable) + === CLASS FILE FORMAT VERSION: 52.0 <- 52.0 +*** MODIFIED CLASS: PUBLIC io.prometheus.metrics.core.metrics.Gauge (not serializable) + === CLASS FILE FORMAT VERSION: 52.0 <- 52.0 +*** MODIFIED CLASS: PUBLIC io.prometheus.metrics.core.metrics.Histogram (not serializable) + === CLASS FILE FORMAT VERSION: 52.0 <- 52.0 +*** MODIFIED CLASS: PUBLIC io.prometheus.metrics.core.metrics.Summary (not serializable) + === CLASS FILE FORMAT VERSION: 52.0 <- 52.0 + diff --git a/docs/apidiffs/current_vs_latest/prometheus-metrics-exporter-common.txt b/docs/apidiffs/current_vs_latest/prometheus-metrics-exporter-common.txt new file mode 100644 index 000000000..b88c7d665 --- /dev/null +++ b/docs/apidiffs/current_vs_latest/prometheus-metrics-exporter-common.txt @@ -0,0 +1,2 @@ +Comparing source compatibility of prometheus-metrics-exporter-common-1.7.1-SNAPSHOT.jar against prometheus-metrics-exporter-common-1.7.0.jar +No changes. diff --git a/docs/apidiffs/current_vs_latest/prometheus-metrics-exporter-httpserver.txt b/docs/apidiffs/current_vs_latest/prometheus-metrics-exporter-httpserver.txt new file mode 100644 index 000000000..805828aef --- /dev/null +++ b/docs/apidiffs/current_vs_latest/prometheus-metrics-exporter-httpserver.txt @@ -0,0 +1,2 @@ +Comparing source compatibility of prometheus-metrics-exporter-httpserver-1.7.1-SNAPSHOT.jar against prometheus-metrics-exporter-httpserver-1.7.0.jar +No changes. diff --git a/docs/apidiffs/current_vs_latest/prometheus-metrics-exporter-opentelemetry-otel-agent-resources.txt b/docs/apidiffs/current_vs_latest/prometheus-metrics-exporter-opentelemetry-otel-agent-resources.txt new file mode 100644 index 000000000..7f7163856 --- /dev/null +++ b/docs/apidiffs/current_vs_latest/prometheus-metrics-exporter-opentelemetry-otel-agent-resources.txt @@ -0,0 +1,2 @@ +Comparing source compatibility of prometheus-metrics-exporter-opentelemetry-otel-agent-resources-1.7.1-SNAPSHOT.jar against prometheus-metrics-exporter-opentelemetry-otel-agent-resources-1.7.0.jar +No changes. diff --git a/docs/apidiffs/current_vs_latest/prometheus-metrics-exporter-opentelemetry-shaded.txt b/docs/apidiffs/current_vs_latest/prometheus-metrics-exporter-opentelemetry-shaded.txt new file mode 100644 index 000000000..543c8e67e --- /dev/null +++ b/docs/apidiffs/current_vs_latest/prometheus-metrics-exporter-opentelemetry-shaded.txt @@ -0,0 +1,2 @@ +Comparing source compatibility of prometheus-metrics-exporter-opentelemetry-1.7.1-SNAPSHOT.jar against prometheus-metrics-exporter-opentelemetry-1.7.0.jar +No changes. diff --git a/docs/apidiffs/current_vs_latest/prometheus-metrics-exporter-opentelemetry.txt b/docs/apidiffs/current_vs_latest/prometheus-metrics-exporter-opentelemetry.txt new file mode 100644 index 000000000..764881093 --- /dev/null +++ b/docs/apidiffs/current_vs_latest/prometheus-metrics-exporter-opentelemetry.txt @@ -0,0 +1,2 @@ +Comparing source compatibility of prometheus-metrics-exporter-opentelemetry-no-otel-1.7.1-SNAPSHOT.jar against prometheus-metrics-exporter-opentelemetry-no-otel-1.7.0.jar +No changes. diff --git a/docs/apidiffs/current_vs_latest/prometheus-metrics-exporter-pushgateway.txt b/docs/apidiffs/current_vs_latest/prometheus-metrics-exporter-pushgateway.txt new file mode 100644 index 000000000..4a4595d9c --- /dev/null +++ b/docs/apidiffs/current_vs_latest/prometheus-metrics-exporter-pushgateway.txt @@ -0,0 +1,2 @@ +Comparing source compatibility of prometheus-metrics-exporter-pushgateway-1.7.1-SNAPSHOT.jar against prometheus-metrics-exporter-pushgateway-1.7.0.jar +No changes. diff --git a/docs/apidiffs/current_vs_latest/prometheus-metrics-exporter-servlet-jakarta.txt b/docs/apidiffs/current_vs_latest/prometheus-metrics-exporter-servlet-jakarta.txt new file mode 100644 index 000000000..5c8102616 --- /dev/null +++ b/docs/apidiffs/current_vs_latest/prometheus-metrics-exporter-servlet-jakarta.txt @@ -0,0 +1,2 @@ +Comparing source compatibility of prometheus-metrics-exporter-servlet-jakarta-1.7.1-SNAPSHOT.jar against prometheus-metrics-exporter-servlet-jakarta-1.7.0.jar +No changes. diff --git a/docs/apidiffs/current_vs_latest/prometheus-metrics-exporter-servlet-javax.txt b/docs/apidiffs/current_vs_latest/prometheus-metrics-exporter-servlet-javax.txt new file mode 100644 index 000000000..397f97388 --- /dev/null +++ b/docs/apidiffs/current_vs_latest/prometheus-metrics-exporter-servlet-javax.txt @@ -0,0 +1,2 @@ +Comparing source compatibility of prometheus-metrics-exporter-servlet-javax-1.7.1-SNAPSHOT.jar against prometheus-metrics-exporter-servlet-javax-1.7.0.jar +No changes. diff --git a/docs/apidiffs/current_vs_latest/prometheus-metrics-exposition-formats-shaded.txt b/docs/apidiffs/current_vs_latest/prometheus-metrics-exposition-formats-shaded.txt new file mode 100644 index 000000000..379ca0c42 --- /dev/null +++ b/docs/apidiffs/current_vs_latest/prometheus-metrics-exposition-formats-shaded.txt @@ -0,0 +1,2 @@ +Comparing source compatibility of prometheus-metrics-exposition-formats-1.7.1-SNAPSHOT.jar against prometheus-metrics-exposition-formats-1.7.0.jar +No changes. diff --git a/docs/apidiffs/current_vs_latest/prometheus-metrics-exposition-formats.txt b/docs/apidiffs/current_vs_latest/prometheus-metrics-exposition-formats.txt new file mode 100644 index 000000000..c8a2300d8 --- /dev/null +++ b/docs/apidiffs/current_vs_latest/prometheus-metrics-exposition-formats.txt @@ -0,0 +1,2 @@ +Comparing source compatibility of prometheus-metrics-exposition-formats-no-protobuf-1.7.1-SNAPSHOT.jar against prometheus-metrics-exposition-formats-no-protobuf-1.7.0.jar +No changes. diff --git a/docs/apidiffs/current_vs_latest/prometheus-metrics-exposition-textformats.txt b/docs/apidiffs/current_vs_latest/prometheus-metrics-exposition-textformats.txt new file mode 100644 index 000000000..df03a5870 --- /dev/null +++ b/docs/apidiffs/current_vs_latest/prometheus-metrics-exposition-textformats.txt @@ -0,0 +1,2 @@ +Comparing source compatibility of prometheus-metrics-exposition-textformats-1.7.1-SNAPSHOT.jar against prometheus-metrics-exposition-textformats-1.7.0.jar +No changes. diff --git a/docs/apidiffs/current_vs_latest/prometheus-metrics-instrumentation-caffeine.txt b/docs/apidiffs/current_vs_latest/prometheus-metrics-instrumentation-caffeine.txt new file mode 100644 index 000000000..7eb8a50a8 --- /dev/null +++ b/docs/apidiffs/current_vs_latest/prometheus-metrics-instrumentation-caffeine.txt @@ -0,0 +1,2 @@ +Comparing source compatibility of prometheus-metrics-instrumentation-caffeine-1.7.1-SNAPSHOT.jar against prometheus-metrics-instrumentation-caffeine-1.7.0.jar +No changes. diff --git a/docs/apidiffs/current_vs_latest/prometheus-metrics-instrumentation-dropwizard.txt b/docs/apidiffs/current_vs_latest/prometheus-metrics-instrumentation-dropwizard.txt new file mode 100644 index 000000000..9c01af3a8 --- /dev/null +++ b/docs/apidiffs/current_vs_latest/prometheus-metrics-instrumentation-dropwizard.txt @@ -0,0 +1,2 @@ +Comparing source compatibility of prometheus-metrics-instrumentation-dropwizard-1.7.1-SNAPSHOT.jar against prometheus-metrics-instrumentation-dropwizard-1.7.0.jar +No changes. diff --git a/docs/apidiffs/current_vs_latest/prometheus-metrics-instrumentation-dropwizard5.txt b/docs/apidiffs/current_vs_latest/prometheus-metrics-instrumentation-dropwizard5.txt new file mode 100644 index 000000000..a2b6ad468 --- /dev/null +++ b/docs/apidiffs/current_vs_latest/prometheus-metrics-instrumentation-dropwizard5.txt @@ -0,0 +1,2 @@ +Comparing source compatibility of prometheus-metrics-instrumentation-dropwizard5-1.7.1-SNAPSHOT.jar against prometheus-metrics-instrumentation-dropwizard5-1.7.0.jar +No changes. diff --git a/docs/apidiffs/current_vs_latest/prometheus-metrics-instrumentation-guava.txt b/docs/apidiffs/current_vs_latest/prometheus-metrics-instrumentation-guava.txt new file mode 100644 index 000000000..371d0cb3b --- /dev/null +++ b/docs/apidiffs/current_vs_latest/prometheus-metrics-instrumentation-guava.txt @@ -0,0 +1,2 @@ +Comparing source compatibility of prometheus-metrics-instrumentation-guava-1.7.1-SNAPSHOT.jar against prometheus-metrics-instrumentation-guava-1.7.0.jar +No changes. diff --git a/docs/apidiffs/current_vs_latest/prometheus-metrics-instrumentation-jvm.txt b/docs/apidiffs/current_vs_latest/prometheus-metrics-instrumentation-jvm.txt new file mode 100644 index 000000000..bc37dda75 --- /dev/null +++ b/docs/apidiffs/current_vs_latest/prometheus-metrics-instrumentation-jvm.txt @@ -0,0 +1,2 @@ +Comparing source compatibility of prometheus-metrics-instrumentation-jvm-1.7.1-SNAPSHOT.jar against prometheus-metrics-instrumentation-jvm-1.7.0.jar +No changes. diff --git a/docs/apidiffs/current_vs_latest/prometheus-metrics-model.txt b/docs/apidiffs/current_vs_latest/prometheus-metrics-model.txt new file mode 100644 index 000000000..25f90822c --- /dev/null +++ b/docs/apidiffs/current_vs_latest/prometheus-metrics-model.txt @@ -0,0 +1,2 @@ +Comparing source compatibility of prometheus-metrics-model-1.7.1-SNAPSHOT.jar against prometheus-metrics-model-1.7.0.jar +No changes. diff --git a/docs/apidiffs/current_vs_latest/prometheus-metrics-simpleclient-bridge.txt b/docs/apidiffs/current_vs_latest/prometheus-metrics-simpleclient-bridge.txt new file mode 100644 index 000000000..9c2f8993d --- /dev/null +++ b/docs/apidiffs/current_vs_latest/prometheus-metrics-simpleclient-bridge.txt @@ -0,0 +1,2 @@ +Comparing source compatibility of prometheus-metrics-simpleclient-bridge-1.7.1-SNAPSHOT.jar against prometheus-metrics-simpleclient-bridge-1.7.0.jar +No changes. diff --git a/docs/apidiffs/current_vs_latest/prometheus-metrics-tracer-common.txt b/docs/apidiffs/current_vs_latest/prometheus-metrics-tracer-common.txt new file mode 100644 index 000000000..260b1e4fb --- /dev/null +++ b/docs/apidiffs/current_vs_latest/prometheus-metrics-tracer-common.txt @@ -0,0 +1,2 @@ +Comparing source compatibility of prometheus-metrics-tracer-common-1.7.1-SNAPSHOT.jar against prometheus-metrics-tracer-common-1.7.0.jar +No changes. diff --git a/docs/apidiffs/current_vs_latest/prometheus-metrics-tracer-initializer.txt b/docs/apidiffs/current_vs_latest/prometheus-metrics-tracer-initializer.txt new file mode 100644 index 000000000..7ffd7032c --- /dev/null +++ b/docs/apidiffs/current_vs_latest/prometheus-metrics-tracer-initializer.txt @@ -0,0 +1,2 @@ +Comparing source compatibility of prometheus-metrics-tracer-initializer-1.7.1-SNAPSHOT.jar against prometheus-metrics-tracer-initializer-1.7.0.jar +No changes. diff --git a/docs/apidiffs/current_vs_latest/prometheus-metrics-tracer-otel-agent.txt b/docs/apidiffs/current_vs_latest/prometheus-metrics-tracer-otel-agent.txt new file mode 100644 index 000000000..a29c989fb --- /dev/null +++ b/docs/apidiffs/current_vs_latest/prometheus-metrics-tracer-otel-agent.txt @@ -0,0 +1,2 @@ +Comparing source compatibility of prometheus-metrics-tracer-otel-agent-1.7.1-SNAPSHOT.jar against prometheus-metrics-tracer-otel-agent-1.7.0.jar +No changes. diff --git a/docs/apidiffs/current_vs_latest/prometheus-metrics-tracer-otel.txt b/docs/apidiffs/current_vs_latest/prometheus-metrics-tracer-otel.txt new file mode 100644 index 000000000..3e6d87392 --- /dev/null +++ b/docs/apidiffs/current_vs_latest/prometheus-metrics-tracer-otel.txt @@ -0,0 +1,2 @@ +Comparing source compatibility of prometheus-metrics-tracer-otel-1.7.1-SNAPSHOT.jar against prometheus-metrics-tracer-otel-1.7.0.jar +No changes. diff --git a/docs/content/exporters/formats.md b/docs/content/exporters/formats.md index 6360c66cd..b84222033 100644 --- a/docs/content/exporters/formats.md +++ b/docs/content/exporters/formats.md @@ -66,6 +66,12 @@ You can exclude the shaded protobuf classes including the `prometheus-metrics-exposition-formats-no-protobuf` module and excluding the `prometheus-metrics-exposition-formats` module in your build file. +If you are using the PushGateway in a shaded jar with `minimizeJar=true`, do not exclude the protobuf classes. +The PushGateway loads the protobuf writer implementation via reflection, so the full +`prometheus-metrics-exposition-formats` artifact must stay on the classpath and the relevant +packages must be preserved during shading. See the [PushGateway docs]({{< relref +"./pushgateway.md" >}}) for the recommended Maven Shade configuration. + For example, in Maven: ```xml diff --git a/docs/content/exporters/pushgateway.md b/docs/content/exporters/pushgateway.md index d3713769d..755525dd9 100644 --- a/docs/content/exporters/pushgateway.md +++ b/docs/content/exporters/pushgateway.md @@ -115,7 +115,8 @@ PushGateway pushGateway = PushGateway.builder() However, this requires that the JVM can validate the server certificate. If you want to skip certificate verification, you need to provide your own -[HttpConnectionFactory](/client_java/api/io/prometheus/metrics/exporter/pushgateway/HttpConnectionFactory.html). +`HttpConnectionFactory`. See the +[API docs](/client_java/api/io/prometheus/metrics/exporter/pushgateway/HttpConnectionFactory.html). The `PushGatewayTestApp` in `integration-tests/it-pushgateway` has a complete example of this. ## Configuration Properties @@ -123,3 +124,34 @@ The `PushGatewayTestApp` in `integration-tests/it-pushgateway` has a complete ex The [PushGateway](/client_java/api/io/prometheus/metrics/exporter/pushgateway/PushGateway.html) supports a couple of properties that can be configured at runtime. See [config]({{< relref "../config/config.md" >}}). + +## Troubleshooting shaded jars + +If you build a shaded jar with the Maven Shade Plugin and `minimizeJar=true`, the PushGateway may +fail at runtime with an error like this: + +```text +java.lang.RuntimeException: class +io.prometheus.metrics.expositionformats.PrometheusProtobufWriter is not available +``` + +This happens because the PushGateway loads the protobuf writer implementation via reflection. The +Maven Shade Plugin does not detect that reflective usage during minimization, so it may strip the +required classes from the final jar. + +To avoid this, keep the `prometheus-metrics-exposition-formats` artifact on the classpath and +preserve the protobuf-related packages in your shade configuration: + +```xml + + + io.prometheus:prometheus-metrics-exposition-formats + + io/prometheus/metrics/expositionformats/** + io/prometheus/metrics/shaded/** + + + +``` + +Alternatively, disable jar minimization for the shaded build. diff --git a/docs/content/otel/tracing.md b/docs/content/otel/tracing.md index f00af9afe..9d598c6f4 100644 --- a/docs/content/otel/tracing.md +++ b/docs/content/otel/tracing.md @@ -75,3 +75,43 @@ The [examples/example-exemplar-tail-sampling/](https://github.com/prometheus/cli directory has a complete end-to-end example, with a distributed Java application with two services, an OpenTelemetry collector, Prometheus, Tempo as a trace database, and Grafana dashboards. Use docker-compose as described in the example's readme to run the example and explore the results. + +## Adding custom labels to exemplars + +Automatically-sampled exemplars carry the `trace_id` and `span_id` labels. You can attach +additional, custom labels (for example an internal identifier) to every automatically-sampled +exemplar. There are two options. + +### Global (all metrics) + +Register a global supplier to add custom labels to the exemplars of _all_ metrics, including +metrics registered by third-party libraries that you do not control. This is the right option when +you cannot modify the code that creates the metric: + +```java +ExemplarLabelsSupplier.setExemplarLabelsSupplier( + () -> Labels.of("management_id", currentManagementId())); +``` + +### Per metric + +If you only want the extra labels on a specific metric you define yourself, use the builder: + +```java +Counter counter = + Counter.builder() + .name("requests_total") + .exemplarLabelsSupplier(() -> Labels.of("management_id", currentManagementId())) + .build(); +``` + +### Notes + +- The supplier is invoked on the (rate-limited) hot path each time an exemplar is sampled, so it + should be cheap. It may return dynamic, request-scoped values (e.g. read from a thread-local). +- Custom labels are only added when a valid, sampled span context is present; the supplier never + causes an exemplar to be created on its own. +- Precedence on a label-name collision: the reserved `trace_id`/`span_id` labels always win, then + the per-metric supplier, then the global supplier. Colliding labels are silently dropped. +- If the supplier throws, the exception is swallowed and the exemplar is created without the + additional labels, so a misbehaving supplier never breaks metric collection. diff --git a/examples/example-custom-buckets/docker-compose.yaml b/examples/example-custom-buckets/docker-compose.yaml index f2deb473f..b0c030f8a 100644 --- a/examples/example-custom-buckets/docker-compose.yaml +++ b/examples/example-custom-buckets/docker-compose.yaml @@ -1,7 +1,7 @@ version: "3" services: example-application: - image: eclipse-temurin:25.0.3_9-jre@sha256:671061ae5a8f0d6827816e15bc39d21e224c43ff96998a97cd0d3989c4d17815 + image: eclipse-temurin:25.0.3_9-jre@sha256:04262e8782d6b034ee5d7c1c5d4e8938fcf2063a76b4bfcd84e5d994d09c27bc network_mode: host volumes: - ./target/example-custom-buckets.jar:/example-custom-buckets.jar @@ -10,7 +10,7 @@ services: - -jar - /example-custom-buckets.jar prometheus: - image: prom/prometheus:v3.11.3@sha256:e4254400b85610324913f0dc4acf92603d9984e7519414c5a12811aa6146acc3 + image: prom/prometheus:v3.12.0@sha256:69f5241418838263316593f7274a304b095c40bcf22e57272865da91bd60a8ac network_mode: host volumes: - ./docker-compose/prometheus.yml:/prometheus.yml @@ -18,7 +18,7 @@ services: - --enable-feature=native-histograms - --config.file=/prometheus.yml grafana: - image: grafana/grafana:13.0.1@sha256:0f86bada30d65ef9d0183b90c1e2682ac92d53d95da8bed322b984ea78a4a73a + image: grafana/grafana:13.0.2@sha256:5dad0df181cb644a14e13617b913b261a54f7d4fd4510721dba420929f35bea2 network_mode: host volumes: - ./docker-compose/grafana-datasources.yaml:/etc/grafana/provisioning/datasources/grafana-datasources.yaml diff --git a/examples/example-custom-buckets/pom.xml b/examples/example-custom-buckets/pom.xml index 3938fc111..5bace1b07 100644 --- a/examples/example-custom-buckets/pom.xml +++ b/examples/example-custom-buckets/pom.xml @@ -4,7 +4,7 @@ io.prometheus example-custom-buckets - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT 8 diff --git a/examples/example-exemplars-tail-sampling/docker-compose.yaml b/examples/example-exemplars-tail-sampling/docker-compose.yaml index eb826b179..7fb09e1ee 100644 --- a/examples/example-exemplars-tail-sampling/docker-compose.yaml +++ b/examples/example-exemplars-tail-sampling/docker-compose.yaml @@ -36,14 +36,14 @@ services: - -jar - /example-greeting-service.jar collector: - image: otel/opentelemetry-collector-contrib:0.151.0@sha256:d57bfe8eee2378f31cb1193239fbcac521d54a5a071fca2bfc106916a32b892d + image: otel/opentelemetry-collector-contrib:0.153.0@sha256:93aad750175cbf1a973ae1c5886c3371f4d800f61be25cdd26870b8441ffe9fa network_mode: host volumes: - ./config/otelcol-config.yaml:/config.yaml command: - --config=file:/config.yaml prometheus: - image: prom/prometheus:v3.11.3@sha256:e4254400b85610324913f0dc4acf92603d9984e7519414c5a12811aa6146acc3 + image: prom/prometheus:v3.12.0@sha256:69f5241418838263316593f7274a304b095c40bcf22e57272865da91bd60a8ac network_mode: host volumes: - ./config/prometheus.yaml:/prometheus.yaml @@ -52,14 +52,14 @@ services: - --enable-feature=native-histograms - --config.file=/prometheus.yaml tempo: - image: grafana/tempo:2.10.5@sha256:ee21727732c7a7199cb71c3eee9153bbf23f9b0b87619f0555a0cf21a67f1a33 + image: grafana/tempo:3.0.0@sha256:78439f7f7cf3c97122846c13a832e060c6c7ef67dcc814dccf0a5f3f78393a93 network_mode: host volumes: - ./config/tempo-config.yaml:/config.yaml command: - --config.file=/config.yaml grafana: - image: grafana/grafana:13.0.1@sha256:0f86bada30d65ef9d0183b90c1e2682ac92d53d95da8bed322b984ea78a4a73a + image: grafana/grafana:13.0.2@sha256:5dad0df181cb644a14e13617b913b261a54f7d4fd4510721dba420929f35bea2 network_mode: host ports: - "3000:3000" @@ -68,7 +68,7 @@ services: - ./config/grafana-dashboards.yaml:/etc/grafana/provisioning/dashboards/grafana-dashboards.yaml - ./config/grafana-example-dashboard.json:/etc/grafana/example-dashboard.json k6: - image: grafana/k6@sha256:50e5517e00b514be229c7c50508249d84095c92f52aabb22934c990169501c83 + image: grafana/k6@sha256:632ddbc81a4a9fdc9e597da91ab1d8fcf1916dd988b43b4a4559d2f8d8e73d47 network_mode: host volumes: - ./config/k6-script.js:/k6-script.js diff --git a/examples/example-exemplars-tail-sampling/example-greeting-service/pom.xml b/examples/example-exemplars-tail-sampling/example-greeting-service/pom.xml index 265ce881c..60eb0561a 100644 --- a/examples/example-exemplars-tail-sampling/example-greeting-service/pom.xml +++ b/examples/example-exemplars-tail-sampling/example-greeting-service/pom.xml @@ -4,7 +4,7 @@ io.prometheus example-greeting-service - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT 17 diff --git a/examples/example-exemplars-tail-sampling/example-hello-world-app/pom.xml b/examples/example-exemplars-tail-sampling/example-hello-world-app/pom.xml index 8f2732374..4c4308a76 100644 --- a/examples/example-exemplars-tail-sampling/example-hello-world-app/pom.xml +++ b/examples/example-exemplars-tail-sampling/example-hello-world-app/pom.xml @@ -4,7 +4,7 @@ io.prometheus example-hello-world-app - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT 17 diff --git a/examples/example-exemplars-tail-sampling/pom.xml b/examples/example-exemplars-tail-sampling/pom.xml index e7d379da8..eaae11ac2 100644 --- a/examples/example-exemplars-tail-sampling/pom.xml +++ b/examples/example-exemplars-tail-sampling/pom.xml @@ -4,7 +4,7 @@ io.prometheus example-exemplars-tail-sampling - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT pom Example - Exemplars with OpenTelemetry's Tail Sampling diff --git a/examples/example-exporter-httpserver/pom.xml b/examples/example-exporter-httpserver/pom.xml index ac8d6bbbb..8df9359ef 100644 --- a/examples/example-exporter-httpserver/pom.xml +++ b/examples/example-exporter-httpserver/pom.xml @@ -4,7 +4,7 @@ io.prometheus example-exporter-httpserver - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT 8 diff --git a/examples/example-exporter-multi-target/pom.xml b/examples/example-exporter-multi-target/pom.xml index c6466ee95..e109c70f0 100644 --- a/examples/example-exporter-multi-target/pom.xml +++ b/examples/example-exporter-multi-target/pom.xml @@ -4,7 +4,7 @@ io.prometheus example-exporter-multi-target - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT 8 diff --git a/examples/example-exporter-multi-target/src/main/java/io/prometheus/metrics/examples/multitarget/SampleMultiCollector.java b/examples/example-exporter-multi-target/src/main/java/io/prometheus/metrics/examples/multitarget/SampleMultiCollector.java index 207c024a5..72e2b28ad 100644 --- a/examples/example-exporter-multi-target/src/main/java/io/prometheus/metrics/examples/multitarget/SampleMultiCollector.java +++ b/examples/example-exporter-multi-target/src/main/java/io/prometheus/metrics/examples/multitarget/SampleMultiCollector.java @@ -77,7 +77,12 @@ protected MetricSnapshots collectMetricSnapshots(PrometheusScrapeRequest scrapeR return new MetricSnapshots(snaps); } + /** + * @deprecated Use {@code getMetricFamilyDescriptors()} instead. + */ @Override + @Deprecated + @SuppressWarnings("InlineMeSuggester") public List getPrometheusNames() { List names = new ArrayList(); names.add("x_calls_total"); diff --git a/examples/example-exporter-opentelemetry/docker-compose.yaml b/examples/example-exporter-opentelemetry/docker-compose.yaml index af8f78415..3a077501b 100644 --- a/examples/example-exporter-opentelemetry/docker-compose.yaml +++ b/examples/example-exporter-opentelemetry/docker-compose.yaml @@ -13,14 +13,14 @@ services: #- -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:5005 - /example-exporter-opentelemetry.jar collector: - image: otel/opentelemetry-collector-contrib:0.151.0@sha256:d57bfe8eee2378f31cb1193239fbcac521d54a5a071fca2bfc106916a32b892d + image: otel/opentelemetry-collector-contrib:0.153.0@sha256:93aad750175cbf1a973ae1c5886c3371f4d800f61be25cdd26870b8441ffe9fa network_mode: host volumes: - ./config/otelcol-config.yaml:/config.yaml command: - --config=file:/config.yaml prometheus: - image: prom/prometheus:v3.11.3@sha256:e4254400b85610324913f0dc4acf92603d9984e7519414c5a12811aa6146acc3 + image: prom/prometheus:v3.12.0@sha256:69f5241418838263316593f7274a304b095c40bcf22e57272865da91bd60a8ac network_mode: host volumes: - ./config/prometheus.yaml:/prometheus.yaml diff --git a/examples/example-exporter-opentelemetry/oats-tests/agent/Dockerfile b/examples/example-exporter-opentelemetry/oats-tests/agent/Dockerfile index 2c0f25b8e..36445a926 100644 --- a/examples/example-exporter-opentelemetry/oats-tests/agent/Dockerfile +++ b/examples/example-exporter-opentelemetry/oats-tests/agent/Dockerfile @@ -1,4 +1,4 @@ -FROM eclipse-temurin:25.0.3_9-jre@sha256:671061ae5a8f0d6827816e15bc39d21e224c43ff96998a97cd0d3989c4d17815 +FROM eclipse-temurin:25.0.3_9-jre@sha256:04262e8782d6b034ee5d7c1c5d4e8938fcf2063a76b4bfcd84e5d994d09c27bc COPY target/example-exporter-opentelemetry.jar ./app.jar # check that the resource attributes from the agent are used, epsecially the service.instance.id should be the same diff --git a/examples/example-exporter-opentelemetry/oats-tests/http/Dockerfile b/examples/example-exporter-opentelemetry/oats-tests/http/Dockerfile index a2f15240d..79944f564 100644 --- a/examples/example-exporter-opentelemetry/oats-tests/http/Dockerfile +++ b/examples/example-exporter-opentelemetry/oats-tests/http/Dockerfile @@ -1,4 +1,4 @@ -FROM eclipse-temurin:25.0.3_9-jre@sha256:671061ae5a8f0d6827816e15bc39d21e224c43ff96998a97cd0d3989c4d17815 +FROM eclipse-temurin:25.0.3_9-jre@sha256:04262e8782d6b034ee5d7c1c5d4e8938fcf2063a76b4bfcd84e5d994d09c27bc COPY target/example-exporter-opentelemetry.jar ./app.jar diff --git a/examples/example-exporter-opentelemetry/pom.xml b/examples/example-exporter-opentelemetry/pom.xml index ab6dc47a3..d2e5220ce 100644 --- a/examples/example-exporter-opentelemetry/pom.xml +++ b/examples/example-exporter-opentelemetry/pom.xml @@ -4,7 +4,7 @@ io.prometheus example-exporter-opentelemetry - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT 8 diff --git a/examples/example-exporter-servlet-tomcat/pom.xml b/examples/example-exporter-servlet-tomcat/pom.xml index 42086cbef..d8e9d137b 100644 --- a/examples/example-exporter-servlet-tomcat/pom.xml +++ b/examples/example-exporter-servlet-tomcat/pom.xml @@ -4,7 +4,7 @@ io.prometheus example-exporter-servlet-tomcat - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT 17 diff --git a/examples/example-native-histogram/docker-compose.yaml b/examples/example-native-histogram/docker-compose.yaml index 79988fa48..af49a22c7 100644 --- a/examples/example-native-histogram/docker-compose.yaml +++ b/examples/example-native-histogram/docker-compose.yaml @@ -1,7 +1,7 @@ version: "3" services: example-application: - image: eclipse-temurin:25.0.3_9-jre@sha256:671061ae5a8f0d6827816e15bc39d21e224c43ff96998a97cd0d3989c4d17815 + image: eclipse-temurin:25.0.3_9-jre@sha256:04262e8782d6b034ee5d7c1c5d4e8938fcf2063a76b4bfcd84e5d994d09c27bc network_mode: host volumes: - ./target/example-native-histogram.jar:/example-native-histogram.jar @@ -10,7 +10,7 @@ services: - -jar - /example-native-histogram.jar prometheus: - image: prom/prometheus:v3.11.3@sha256:e4254400b85610324913f0dc4acf92603d9984e7519414c5a12811aa6146acc3 + image: prom/prometheus:v3.12.0@sha256:69f5241418838263316593f7274a304b095c40bcf22e57272865da91bd60a8ac network_mode: host volumes: - ./docker-compose/prometheus.yml:/prometheus.yml @@ -18,7 +18,7 @@ services: - --enable-feature=native-histograms - --config.file=/prometheus.yml grafana: - image: grafana/grafana:13.0.1@sha256:0f86bada30d65ef9d0183b90c1e2682ac92d53d95da8bed322b984ea78a4a73a + image: grafana/grafana:13.0.2@sha256:5dad0df181cb644a14e13617b913b261a54f7d4fd4510721dba420929f35bea2 network_mode: host volumes: - ./docker-compose/grafana-datasources.yaml:/etc/grafana/provisioning/datasources/grafana-datasources.yaml diff --git a/examples/example-native-histogram/pom.xml b/examples/example-native-histogram/pom.xml index 771610b84..63aacf33f 100644 --- a/examples/example-native-histogram/pom.xml +++ b/examples/example-native-histogram/pom.xml @@ -4,7 +4,7 @@ io.prometheus example-native-histogram - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT 8 diff --git a/examples/example-otel-jvm-runtime-metrics/pom.xml b/examples/example-otel-jvm-runtime-metrics/pom.xml index 5c70bb676..f8e877efc 100644 --- a/examples/example-otel-jvm-runtime-metrics/pom.xml +++ b/examples/example-otel-jvm-runtime-metrics/pom.xml @@ -4,7 +4,7 @@ io.prometheus example-otel-jvm-runtime-metrics - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT 8 @@ -28,7 +28,7 @@ io.opentelemetry.instrumentation opentelemetry-instrumentation-bom-alpha - 2.27.0-alpha + 2.28.1-alpha pom import @@ -51,7 +51,7 @@ io.opentelemetry.instrumentation - opentelemetry-runtime-telemetry-java8 + opentelemetry-runtime-telemetry diff --git a/examples/example-otel-jvm-runtime-metrics/src/main/java/io/prometheus/metrics/examples/otelruntimemetrics/Main.java b/examples/example-otel-jvm-runtime-metrics/src/main/java/io/prometheus/metrics/examples/otelruntimemetrics/Main.java index 49a608651..07971096e 100644 --- a/examples/example-otel-jvm-runtime-metrics/src/main/java/io/prometheus/metrics/examples/otelruntimemetrics/Main.java +++ b/examples/example-otel-jvm-runtime-metrics/src/main/java/io/prometheus/metrics/examples/otelruntimemetrics/Main.java @@ -1,7 +1,7 @@ package io.prometheus.metrics.examples.otelruntimemetrics; import io.opentelemetry.exporter.prometheus.PrometheusMetricReader; -import io.opentelemetry.instrumentation.runtimemetrics.java8.RuntimeMetrics; +import io.opentelemetry.instrumentation.runtimetelemetry.RuntimeTelemetry; import io.opentelemetry.sdk.OpenTelemetrySdk; import io.opentelemetry.sdk.metrics.SdkMeterProvider; import io.prometheus.metrics.core.metrics.Counter; @@ -47,11 +47,7 @@ public static void main(String[] args) throws IOException, InterruptedException .build(); // 4. Start OTel JVM runtime metrics collection. - // - captureGcCause() adds a jvm.gc.cause attribute to jvm.gc.duration - // - emitExperimentalTelemetry() enables buffer pools, extended CPU, - // extended memory pools, and file descriptor metrics - RuntimeMetrics runtimeMetrics = - RuntimeMetrics.builder(openTelemetry).captureGcCause().emitExperimentalTelemetry().build(); + RuntimeTelemetry runtimeMetrics = RuntimeTelemetry.create(openTelemetry); // 5. Expose both Prometheus and OTel metrics on a single endpoint. HTTPServer server = HTTPServer.builder().port(9400).registry(registry).buildAndStart(); diff --git a/examples/example-prometheus-properties/pom.xml b/examples/example-prometheus-properties/pom.xml index 9a32827fe..2b209ac94 100644 --- a/examples/example-prometheus-properties/pom.xml +++ b/examples/example-prometheus-properties/pom.xml @@ -4,7 +4,7 @@ io.prometheus example-prometheus-properties - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT 8 diff --git a/examples/example-simpleclient-bridge/pom.xml b/examples/example-simpleclient-bridge/pom.xml index da7435825..4c47fbba8 100644 --- a/examples/example-simpleclient-bridge/pom.xml +++ b/examples/example-simpleclient-bridge/pom.xml @@ -4,7 +4,7 @@ io.prometheus example-simpleclient-bridge - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT 8 diff --git a/examples/pom.xml b/examples/pom.xml index e6f7c923c..50461b5f0 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT examples diff --git a/integration-tests/it-common/pom.xml b/integration-tests/it-common/pom.xml index 88d32d6cc..feb3f15df 100644 --- a/integration-tests/it-common/pom.xml +++ b/integration-tests/it-common/pom.xml @@ -5,7 +5,7 @@ io.prometheus integration-tests - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT it-common diff --git a/integration-tests/it-exporter/it-exporter-duplicate-metrics-sample/pom.xml b/integration-tests/it-exporter/it-exporter-duplicate-metrics-sample/pom.xml index fee621a2e..688059dcd 100644 --- a/integration-tests/it-exporter/it-exporter-duplicate-metrics-sample/pom.xml +++ b/integration-tests/it-exporter/it-exporter-duplicate-metrics-sample/pom.xml @@ -5,7 +5,7 @@ io.prometheus it-exporter - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT it-exporter-duplicate-metrics-sample diff --git a/integration-tests/it-exporter/it-exporter-httpserver-sample/pom.xml b/integration-tests/it-exporter/it-exporter-httpserver-sample/pom.xml index 8ad7afe32..d480d84b4 100644 --- a/integration-tests/it-exporter/it-exporter-httpserver-sample/pom.xml +++ b/integration-tests/it-exporter/it-exporter-httpserver-sample/pom.xml @@ -5,7 +5,7 @@ io.prometheus it-exporter - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT it-exporter-httpserver-sample diff --git a/integration-tests/it-exporter/it-exporter-no-protobuf/pom.xml b/integration-tests/it-exporter/it-exporter-no-protobuf/pom.xml index acf490032..38b844d5f 100644 --- a/integration-tests/it-exporter/it-exporter-no-protobuf/pom.xml +++ b/integration-tests/it-exporter/it-exporter-no-protobuf/pom.xml @@ -5,7 +5,7 @@ io.prometheus it-exporter - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT it-exporter-no-protobuf diff --git a/integration-tests/it-exporter/it-exporter-servlet-jetty-sample/pom.xml b/integration-tests/it-exporter/it-exporter-servlet-jetty-sample/pom.xml index 0e43aab16..bb027372b 100644 --- a/integration-tests/it-exporter/it-exporter-servlet-jetty-sample/pom.xml +++ b/integration-tests/it-exporter/it-exporter-servlet-jetty-sample/pom.xml @@ -5,7 +5,7 @@ io.prometheus it-exporter - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT it-exporter-servlet-jetty-sample @@ -15,7 +15,7 @@ Jetty Sample for the Exporter Integration Test - 12.1.9 + 12.1.10 25 diff --git a/integration-tests/it-exporter/it-exporter-servlet-tomcat-sample/pom.xml b/integration-tests/it-exporter/it-exporter-servlet-tomcat-sample/pom.xml index b4df5a052..96ee5b46b 100644 --- a/integration-tests/it-exporter/it-exporter-servlet-tomcat-sample/pom.xml +++ b/integration-tests/it-exporter/it-exporter-servlet-tomcat-sample/pom.xml @@ -5,7 +5,7 @@ io.prometheus it-exporter - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT it-exporter-servlet-tomcat-sample diff --git a/integration-tests/it-exporter/it-exporter-test/pom.xml b/integration-tests/it-exporter/it-exporter-test/pom.xml index 9b221feb4..6cb27b781 100644 --- a/integration-tests/it-exporter/it-exporter-test/pom.xml +++ b/integration-tests/it-exporter/it-exporter-test/pom.xml @@ -5,7 +5,7 @@ io.prometheus it-exporter - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT it-exporter-test @@ -23,5 +23,11 @@ ${project.version} test + + com.google.guava + guava + ${guava.version} + test + diff --git a/integration-tests/it-exporter/it-no-protobuf-test/pom.xml b/integration-tests/it-exporter/it-no-protobuf-test/pom.xml index d49e27f45..461a3b73e 100644 --- a/integration-tests/it-exporter/it-no-protobuf-test/pom.xml +++ b/integration-tests/it-exporter/it-no-protobuf-test/pom.xml @@ -5,7 +5,7 @@ io.prometheus it-exporter - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT it-no-protobuf-test diff --git a/integration-tests/it-exporter/pom.xml b/integration-tests/it-exporter/pom.xml index 946e61e94..63f01eaad 100644 --- a/integration-tests/it-exporter/pom.xml +++ b/integration-tests/it-exporter/pom.xml @@ -5,7 +5,7 @@ io.prometheus integration-tests - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT it-exporter diff --git a/integration-tests/it-pushgateway/pom.xml b/integration-tests/it-pushgateway/pom.xml index 6045a5f99..ed5e15cf3 100644 --- a/integration-tests/it-pushgateway/pom.xml +++ b/integration-tests/it-pushgateway/pom.xml @@ -5,7 +5,7 @@ io.prometheus integration-tests - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT it-pushgateway diff --git a/integration-tests/it-spring-boot-smoke-test/pom.xml b/integration-tests/it-spring-boot-smoke-test/pom.xml index c6a7e5dfc..c9d9fb851 100644 --- a/integration-tests/it-spring-boot-smoke-test/pom.xml +++ b/integration-tests/it-spring-boot-smoke-test/pom.xml @@ -12,7 +12,7 @@ io.prometheus it-spring-boot-smoke-test - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT Integration Test - Spring Smoke Tests @@ -20,7 +20,7 @@ 25 - 6.0.3 + 6.1.0 diff --git a/integration-tests/it-spring-boot-smoke-test/src/test/resources/META-INF/native-image/io.prometheus/it-spring-boot-smoke-test/serialization-config.json b/integration-tests/it-spring-boot-smoke-test/src/test/resources/META-INF/native-image/io.prometheus/it-spring-boot-smoke-test/serialization-config.json new file mode 100644 index 000000000..eccc08a42 --- /dev/null +++ b/integration-tests/it-spring-boot-smoke-test/src/test/resources/META-INF/native-image/io.prometheus/it-spring-boot-smoke-test/serialization-config.json @@ -0,0 +1,5 @@ +[ + { + "name": "org.junit.platform.engine.UniqueId$SerializedForm" + } +] diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml index ae8f87af4..41e590f32 100644 --- a/integration-tests/pom.xml +++ b/integration-tests/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT integration-tests diff --git a/mise.toml b/mise.toml index c3b10c4ab..6af4404cf 100644 --- a/mise.toml +++ b/mise.toml @@ -1,37 +1,48 @@ [tools] -"go:github.com/grafana/oats" = "0.6.1" -hugo = "0.161.1" +"go:github.com/grafana/oats" = "0.7.0" +hugo = "0.162.1" java = "temurin-25.0.3+9.0.LTS" -node = "24.15.0" -protoc = "34.1" +node = "24.16.0" +protoc = "35" # Linters actionlint = "1.7.12" -"aqua:owenlamont/ryl" = "0.8.0" -biome = "2.4.12" -editorconfig-checker = "v3.6.1" -"github:google/google-java-format" = "1.35.0" -"github:grafana/flint" = "0.21.0" -"github:jonwiggins/xmloxide" = "v0.4.2" -"github:koalaman/shellcheck" = "v0.11.0" +"aqua:grafana/flint" = "0.22.4" +"aqua:jonwiggins/xmloxide" = "v0.4.3" +"aqua:owenlamont/ryl" = "0.11.0" +biome = "2.4.16" +editorconfig-checker = "3.7.0" +google-java-format = "1.35.0" lychee = "0.24.2" -"npm:renovate" = "43.144.0" -"pipx:codespell" = "2.4.2" -ruff = "0.15.12" -rumdl = "0.1.84" +"npm:renovate" = "43.202.1" +ruff = "0.15.15" +rumdl = "0.2.4" +shellcheck = "v0.11.0" shfmt = "3.13.1" taplo = "0.10.0" +typos = "1.47.0" +zizmor = "1.25.2" [env] FLINT_CONFIG_DIR = ".github/config" # renovate: datasource=github-releases depName=grafana/docker-otel-lgtm -LGTM_VERSION = "0.25.0" +LGTM_VERSION = "0.28.0" +# Latest JMX Exporter release. The compatibility job currently tests `main` +# instead (see #2179): release 1.5.0 imports client_java's version-stamped +# protobuf package directly, which breaks when we bump protobuf; main uses the +# stable Metrics class. Kept renovate-tracked so the target is current when we +# switch the ref back to this release. +# renovate: datasource=github-tags depName=prometheus/jmx_exporter versioning=semver-coerced +DEFAULT_JMX_EXPORTER_VERSION = "1.5.0" +# renovate: datasource=github-tags depName=micrometer-metrics/micrometer versioning=semver-coerced +DEFAULT_MICROMETER_VERSION = "v1.16.5" [tasks.ci] description = "CI Build" run = "./mvnw clean install" env.REQUIRE_PROTO_UP_TO_DATE = "true" env.PROTO_GENERATION = "true" + [tasks.clean] description = "clean all modules" run = "./mvnw clean" @@ -57,6 +68,22 @@ run = "./mvnw verify" description = "build all modules without tests" run = "./mvnw install -DskipTests -Dcoverage.skip=true" +[tasks."api-diff"] +description = "Compare published API against the japicmp baseline and refresh docs/apidiffs" +run = """ +# Baseline version comes from the property in pom.xml. +# Set API_DIFF_BASELINE_VERSION only to override it ad hoc (e.g. workflow_dispatch). +BASELINE_OVERRIDE="${API_DIFF_BASELINE_VERSION:+-Dapi.diff.baseline.version=${API_DIFF_BASELINE_VERSION}}" +./mvnw -B verify \ + -P 'api-diff,!examples-and-integration-tests' \ + ${BASELINE_OVERRIDE} \ + -DskipTests \ + -Dcoverage.skip=true \ + -Dcheckstyle.skip=true \ + -Dwarnings=-nowarn +./.github/scripts/sync-api-diffs.sh +""" + [tasks."lint"] description = "Run all lints" depends = ["lint:bom"] diff --git a/pom.xml b/pom.xml index e23229181..fd9efa750 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ io.prometheus client_java_parent - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT prometheus-metrics-parent/pom.xml @@ -20,12 +20,17 @@ UTF-8 --module-name-need-to-be-overridden-- - 4.34.1 + 4.35.0 33.6.0-jre - 6.0.3 - 2.27.0-alpha + 2.3.0 + 4.3.0 + 3.13.2 + 6.1.0 + 2.28.1-alpha 8 25 + + 1.7.0 0.70 false false @@ -35,6 +40,7 @@ prometheus-metrics-parent + prometheus-metrics-annotations prometheus-metrics-bom prometheus-metrics-core prometheus-metrics-config @@ -92,41 +98,11 @@ 3.27.7 test - - com.google.guava - guava - ${guava.version} - test - org.slf4j slf4j-simple - 2.0.17 - test - - - org.junit-pioneer - junit-pioneer - 2.3.0 - test - - - org.awaitility - awaitility - 4.3.0 - test - - - org.wiremock - wiremock - 3.13.2 + 2.0.18 test - - - org.hamcrest - hamcrest-core - - @@ -149,7 +125,7 @@ maven-surefire-plugin - 3.5.5 + 3.5.6 maven-jar-plugin @@ -165,7 +141,7 @@ maven-site-plugin - 3.21.0 + 3.22.0 @@ -174,11 +150,11 @@ maven-failsafe-plugin - 3.5.5 + 3.5.6 maven-dependency-plugin - 3.10.0 + 3.11.0 maven-javadoc-plugin @@ -186,7 +162,7 @@ maven-enforcer-plugin - 3.6.2 + 3.6.3 org.codehaus.mojo @@ -198,6 +174,11 @@ exec-maven-plugin 3.6.3 + + com.github.siom79.japicmp + japicmp-maven-plugin + 0.26.1 + @@ -428,6 +409,71 @@ + + api-diff + + + + com.github.siom79.japicmp + japicmp-maven-plugin + + + + ${project.groupId} + ${project.artifactId} + ${api.diff.baseline.version} + jar + + + + + ${project.build.directory}/${project.build.finalName}.jar + + + + public + true + + io.prometheus.metrics.annotations.StableApi + @io.prometheus.metrics.annotations.StableApi + + + io.prometheus.metrics.expositionformats.generated + io.prometheus.metrics.shaded + + false + + false + + + false + + false + true + true + true + true + true + true + + bundle + jar + + + + + + api-diff + verify + + cmp + + + + + + + errorprone diff --git a/prometheus-metrics-annotations/pom.xml b/prometheus-metrics-annotations/pom.xml new file mode 100644 index 000000000..f28787a0e --- /dev/null +++ b/prometheus-metrics-annotations/pom.xml @@ -0,0 +1,22 @@ + + + 4.0.0 + + + io.prometheus + client_java + 1.7.1-SNAPSHOT + + + prometheus-metrics-annotations + bundle + + Prometheus Metrics Annotations + + Annotations for Prometheus Metrics library API contracts. + + + + io.prometheus.metrics.annotations + + diff --git a/prometheus-metrics-annotations/src/main/java/io/prometheus/metrics/annotations/StableApi.java b/prometheus-metrics-annotations/src/main/java/io/prometheus/metrics/annotations/StableApi.java new file mode 100644 index 000000000..a3bfe89ae --- /dev/null +++ b/prometheus-metrics-annotations/src/main/java/io/prometheus/metrics/annotations/StableApi.java @@ -0,0 +1,22 @@ +package io.prometheus.metrics.annotations; + +import static java.lang.annotation.ElementType.CONSTRUCTOR; +import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.TYPE; +import static java.lang.annotation.RetentionPolicy.CLASS; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +/** + * Marks a Java element as part of the stable, published Prometheus Metrics API. + * + *

Use this on public or protected types to publish the type and its members. Use it on + * individual constructors, methods, and fields when only part of a public type is stable. + */ +@Documented +@Retention(CLASS) +@Target({TYPE, CONSTRUCTOR, METHOD, FIELD}) +public @interface StableApi {} diff --git a/prometheus-metrics-bom/pom.xml b/prometheus-metrics-bom/pom.xml index b01bcce43..3f23b5052 100644 --- a/prometheus-metrics-bom/pom.xml +++ b/prometheus-metrics-bom/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java_parent - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT ../prometheus-metrics-parent/pom.xml @@ -19,6 +19,11 @@ + + io.prometheus + prometheus-metrics-annotations + ${project.version} + io.prometheus prometheus-metrics-config diff --git a/prometheus-metrics-config/pom.xml b/prometheus-metrics-config/pom.xml index 9a2b01c88..f30fdc759 100644 --- a/prometheus-metrics-config/pom.xml +++ b/prometheus-metrics-config/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT prometheus-metrics-config @@ -20,4 +20,19 @@ io.prometheus.metrics.config + + + io.prometheus + prometheus-metrics-annotations + ${project.version} + true + + + org.junit-pioneer + junit-pioneer + ${junit-pioneer.version} + test + + + diff --git a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/EscapingScheme.java b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/EscapingScheme.java index 1cd037bf3..1d6bd37cf 100644 --- a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/EscapingScheme.java +++ b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/EscapingScheme.java @@ -1,7 +1,9 @@ package io.prometheus.metrics.config; +import io.prometheus.metrics.annotations.StableApi; import javax.annotation.Nullable; +@StableApi public enum EscapingScheme { /** NO_ESCAPING indicates that a name will not be escaped. */ ALLOW_UTF8("allow-utf-8"), diff --git a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExemplarsProperties.java b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExemplarsProperties.java index 765d33ac5..93190ef19 100644 --- a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExemplarsProperties.java +++ b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExemplarsProperties.java @@ -1,8 +1,10 @@ package io.prometheus.metrics.config; +import io.prometheus.metrics.annotations.StableApi; import javax.annotation.Nullable; /** Properties starting with io.prometheus.exemplars */ +@StableApi public class ExemplarsProperties { private static final String PREFIX = "io.prometheus.exemplars"; diff --git a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterFilterProperties.java b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterFilterProperties.java index d59330cb9..999c2c8e8 100644 --- a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterFilterProperties.java +++ b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterFilterProperties.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.config; +import io.prometheus.metrics.annotations.StableApi; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -7,6 +8,7 @@ import javax.annotation.Nullable; /** Properties starting with io.prometheus.exporter.filter */ +@StableApi public class ExporterFilterProperties { public static final String METRIC_NAME_MUST_BE_EQUAL_TO = "metric_name_must_be_equal_to"; diff --git a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterHttpServerProperties.java b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterHttpServerProperties.java index 0623f78e1..4f921c2ac 100644 --- a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterHttpServerProperties.java +++ b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterHttpServerProperties.java @@ -1,8 +1,10 @@ package io.prometheus.metrics.config; +import io.prometheus.metrics.annotations.StableApi; import javax.annotation.Nullable; /** Properties starting with io.prometheus.exporter.http_server */ +@StableApi public class ExporterHttpServerProperties { private static final String PORT = "port"; diff --git a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterOpenTelemetryProperties.java b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterOpenTelemetryProperties.java index 6e93f5de7..8c0bdd5c7 100644 --- a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterOpenTelemetryProperties.java +++ b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterOpenTelemetryProperties.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.config; +import io.prometheus.metrics.annotations.StableApi; import java.util.HashMap; import java.util.Map; import javax.annotation.Nullable; @@ -31,6 +32,7 @@ * href="https://opentelemetry.io/docs/specs/otel/configuration/sdk-environment-variables/">OpenTelemetry * SDK Environment Variables */ +@StableApi public class ExporterOpenTelemetryProperties { // See diff --git a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterProperties.java b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterProperties.java index 460a5cae2..a1c67266a 100644 --- a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterProperties.java +++ b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterProperties.java @@ -1,8 +1,10 @@ package io.prometheus.metrics.config; +import io.prometheus.metrics.annotations.StableApi; import javax.annotation.Nullable; /** Properties starting with io.prometheus.exporter */ +@StableApi public class ExporterProperties { private static final String INCLUDE_CREATED_TIMESTAMPS = "include_created_timestamps"; diff --git a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterPushgatewayProperties.java b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterPushgatewayProperties.java index aea4b2d8f..10e8c0f33 100644 --- a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterPushgatewayProperties.java +++ b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterPushgatewayProperties.java @@ -1,8 +1,10 @@ package io.prometheus.metrics.config; +import io.prometheus.metrics.annotations.StableApi; import java.time.Duration; import javax.annotation.Nullable; +@StableApi public class ExporterPushgatewayProperties { private static final String ADDRESS = "address"; diff --git a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/MetricsProperties.java b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/MetricsProperties.java index a530f35e1..c2758bd87 100644 --- a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/MetricsProperties.java +++ b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/MetricsProperties.java @@ -2,12 +2,14 @@ import static java.util.Collections.unmodifiableList; +import io.prometheus.metrics.annotations.StableApi; import java.util.ArrayList; import java.util.Collections; import java.util.List; import javax.annotation.Nullable; /** Properties starting with io.prometheus.metrics */ +@StableApi public class MetricsProperties { private static final String EXEMPLARS_ENABLED = "exemplars_enabled"; diff --git a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/OpenMetrics2Properties.java b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/OpenMetrics2Properties.java index be1d13279..1f5080f05 100644 --- a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/OpenMetrics2Properties.java +++ b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/OpenMetrics2Properties.java @@ -1,11 +1,13 @@ package io.prometheus.metrics.config; +import io.prometheus.metrics.annotations.StableApi; import javax.annotation.Nullable; /** * Properties starting with io.prometheus.openmetrics2. These properties are experimental and * subject to change. */ +@StableApi public class OpenMetrics2Properties { private static final String PREFIX = "io.prometheus.openmetrics2"; diff --git a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/PrometheusProperties.java b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/PrometheusProperties.java index 55e7d8dab..aa145d07c 100644 --- a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/PrometheusProperties.java +++ b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/PrometheusProperties.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.config; +import io.prometheus.metrics.annotations.StableApi; import java.util.HashMap; import java.util.Map; import java.util.function.Consumer; @@ -10,6 +11,7 @@ * *

This class represents the runtime configuration. */ +@StableApi public class PrometheusProperties { private static final PrometheusProperties instance = PrometheusPropertiesLoader.load(); diff --git a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/PrometheusPropertiesException.java b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/PrometheusPropertiesException.java index bdb024514..b6f6fac4b 100644 --- a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/PrometheusPropertiesException.java +++ b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/PrometheusPropertiesException.java @@ -1,5 +1,8 @@ package io.prometheus.metrics.config; +import io.prometheus.metrics.annotations.StableApi; + +@StableApi public class PrometheusPropertiesException extends RuntimeException { private static final long serialVersionUID = 0L; diff --git a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/PrometheusPropertiesLoader.java b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/PrometheusPropertiesLoader.java index 018ea2c5d..6d52b71ef 100644 --- a/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/PrometheusPropertiesLoader.java +++ b/prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/PrometheusPropertiesLoader.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.config; +import io.prometheus.metrics.annotations.StableApi; import java.io.IOException; import java.io.InputStream; import java.nio.file.Files; @@ -17,6 +18,7 @@ * Boot's Externalized Configuration, like support for YAML, Properties, and env vars, or * support for Spring's naming conventions for properties. */ +@StableApi public class PrometheusPropertiesLoader { /** See {@link PrometheusProperties#get()}. */ diff --git a/prometheus-metrics-core/pom.xml b/prometheus-metrics-core/pom.xml index d7e9e17b4..4d04a5b77 100644 --- a/prometheus-metrics-core/pom.xml +++ b/prometheus-metrics-core/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT prometheus-metrics-core @@ -21,6 +21,12 @@ + + io.prometheus + prometheus-metrics-annotations + ${project.version} + true + io.prometheus prometheus-metrics-model @@ -50,5 +56,17 @@ 3.6.1 test + + org.awaitility + awaitility + ${awaitility.version} + test + + + com.google.guava + guava + ${guava.version} + test + diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/datapoints/CounterDataPoint.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/datapoints/CounterDataPoint.java index 7055d7565..4c5c2d28f 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/datapoints/CounterDataPoint.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/datapoints/CounterDataPoint.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.core.datapoints; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.model.snapshots.Labels; /** @@ -56,6 +57,7 @@ * CounterDataPoint counterData = counterWithoutLabels; * } */ +@StableApi public interface CounterDataPoint extends DataPoint { /** Add one. */ diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/datapoints/DataPoint.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/datapoints/DataPoint.java index 5b6017ddf..cfdc84df3 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/datapoints/DataPoint.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/datapoints/DataPoint.java @@ -1,3 +1,6 @@ package io.prometheus.metrics.core.datapoints; +import io.prometheus.metrics.annotations.StableApi; + +@StableApi public interface DataPoint {} diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/datapoints/DistributionDataPoint.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/datapoints/DistributionDataPoint.java index 0f2a072de..f87bede40 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/datapoints/DistributionDataPoint.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/datapoints/DistributionDataPoint.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.core.datapoints; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.model.snapshots.Labels; /** @@ -17,6 +18,7 @@ *

See JavaDoc of {@link CounterDataPoint} on how using data points directly can improve * performance. */ +@StableApi public interface DistributionDataPoint extends DataPoint, TimerApi { /** Get the count of observations. */ diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/datapoints/GaugeDataPoint.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/datapoints/GaugeDataPoint.java index eec0304c7..8d917985e 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/datapoints/GaugeDataPoint.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/datapoints/GaugeDataPoint.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.core.datapoints; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.model.snapshots.Labels; /** @@ -9,6 +10,7 @@ *

See JavaDoc of {@link CounterDataPoint} on how using data points directly can improve * performance. */ +@StableApi public interface GaugeDataPoint extends DataPoint, TimerApi { /** Add one. */ diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/datapoints/StateSetDataPoint.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/datapoints/StateSetDataPoint.java index bf13b5214..f08876cae 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/datapoints/StateSetDataPoint.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/datapoints/StateSetDataPoint.java @@ -1,11 +1,14 @@ package io.prometheus.metrics.core.datapoints; +import io.prometheus.metrics.annotations.StableApi; + /** * Represents a single StateSet data point. * *

See JavaDoc of {@link CounterDataPoint} on how using data points directly can improve * performance. */ +@StableApi public interface StateSetDataPoint extends DataPoint { /** diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/datapoints/Timer.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/datapoints/Timer.java index d860bfa08..ee302a4c5 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/datapoints/Timer.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/datapoints/Timer.java @@ -1,10 +1,12 @@ package io.prometheus.metrics.core.datapoints; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.model.snapshots.Unit; import java.io.Closeable; import java.util.function.DoubleConsumer; /** Helper class for observing durations. */ +@StableApi public class Timer implements Closeable { private final DoubleConsumer observeFunction; diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/datapoints/TimerApi.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/datapoints/TimerApi.java index 8267f7f78..00729503e 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/datapoints/TimerApi.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/datapoints/TimerApi.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.core.datapoints; +import io.prometheus.metrics.annotations.StableApi; import java.util.concurrent.Callable; import java.util.function.Supplier; @@ -11,6 +12,7 @@ * must use base units (e.g. seconds, bytes) and leave converting them to something more readable to * graphing tools". */ +@StableApi public interface TimerApi { /** diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/exemplars/ExemplarLabelsSupplier.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/exemplars/ExemplarLabelsSupplier.java new file mode 100644 index 000000000..672df100c --- /dev/null +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/exemplars/ExemplarLabelsSupplier.java @@ -0,0 +1,55 @@ +package io.prometheus.metrics.core.exemplars; + +import io.prometheus.metrics.annotations.StableApi; +import io.prometheus.metrics.model.snapshots.Labels; +import java.util.concurrent.atomic.AtomicReference; +import java.util.function.Supplier; +import javax.annotation.Nullable; + +/** + * Global holder for a {@link Supplier} of additional {@link Labels} that are merged into every + * automatically-sampled Exemplar across the entire application. + * + *

This is the global counterpart to the per-metric {@code exemplarLabelsSupplier(...)} builder + * method. Registering a supplier here affects all metrics, including metrics registered by + * third-party libraries that the application does not control. This makes it the right tool when + * you cannot modify the code that creates the metrics. + * + *

The supplier is invoked on the metric hot path (rate-limited by the exemplar sampler), each + * time an Exemplar is sampled from a valid, sampled span context. It should therefore be cheap and + * non-blocking. It may return dynamic, request-scoped values, for example an identifier read from a + * thread-local: + * + *

{@code
+ * ExemplarLabelsSupplier.setExemplarLabelsSupplier(
+ *     () -> Labels.of("management_id", currentManagementId()));
+ * }
+ * + *

Labels returned by the supplier that collide with {@code trace_id}/{@code span_id} (or, when a + * per-metric supplier is also configured, with that supplier's labels) are silently dropped rather + * than causing an error: the per-metric supplier takes precedence over the global one, and the + * reserved {@code trace_id}/{@code span_id} labels always win. If the supplier throws, the + * exception is swallowed and the Exemplar is created without the additional labels, so a + * misbehaving supplier never breaks metric collection. + */ +@StableApi +public class ExemplarLabelsSupplier { + + private static final AtomicReference> supplierRef = new AtomicReference<>(); + + private ExemplarLabelsSupplier() {} + + /** + * Register a global supplier of additional exemplar labels. Pass {@code null} to remove a + * previously registered supplier. The most recently registered supplier wins. + */ + public static void setExemplarLabelsSupplier(@Nullable Supplier supplier) { + supplierRef.set(supplier); + } + + /** Returns the registered global supplier, or {@code null} if none has been set. */ + @Nullable + public static Supplier getExemplarLabelsSupplier() { + return supplierRef.get(); + } +} diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/exemplars/ExemplarSampler.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/exemplars/ExemplarSampler.java index 1219b2a09..9d44e97da 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/exemplars/ExemplarSampler.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/exemplars/ExemplarSampler.java @@ -2,6 +2,7 @@ import static java.util.Objects.requireNonNull; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.core.util.Scheduler; import io.prometheus.metrics.model.snapshots.Exemplar; import io.prometheus.metrics.model.snapshots.Exemplars; @@ -12,6 +13,7 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.LongSupplier; +import java.util.function.Supplier; import javax.annotation.Nullable; /** @@ -31,6 +33,7 @@ * *

See {@link ExemplarSamplerConfig} for configuration options. */ +@StableApi public class ExemplarSampler { private final ExemplarSamplerConfig config; @@ -45,8 +48,10 @@ public class ExemplarSampler { private final SpanContext spanContext; // may be null, in that case SpanContextSupplier.getSpanContext() is used. + @Nullable private final Supplier additionalLabelsSupplier; + public ExemplarSampler(ExemplarSamplerConfig config) { - this(config, null); + this(config, null, null); } /** @@ -58,10 +63,24 @@ public ExemplarSampler(ExemplarSamplerConfig config) { * SpanContextSupplier.getSpanContext()} is called to find a span context. */ public ExemplarSampler(ExemplarSamplerConfig config, @Nullable SpanContext spanContext) { + this(config, spanContext, null); + } + + /** + * Constructor that additionally accepts a supplier of labels to be merged into every + * automatically-sampled exemplar. The supplier is called each time an exemplar is sampled from a + * span context, so it can return dynamic values (e.g. a request-scoped identifier). The supplier + * is only called when a valid, sampled span context is present. + */ + public ExemplarSampler( + ExemplarSamplerConfig config, + @Nullable SpanContext spanContext, + @Nullable Supplier additionalLabelsSupplier) { this.config = config; this.exemplars = new Exemplar[config.getNumberOfExemplars()]; this.customExemplars = new Exemplar[exemplars.length]; this.spanContext = spanContext; + this.additionalLabelsSupplier = additionalLabelsSupplier; } public Exemplars collect() { @@ -320,7 +339,7 @@ private long durationUntilNextExemplarExpires(long now) { private long updateCustomExemplar(int index, double value, Labels labels, long now) { if (!labels.contains(Exemplar.TRACE_ID) && !labels.contains(Exemplar.SPAN_ID)) { - labels = labels.merge(doSampleExemplar()); + labels = mergeLabels(labels, doSampleExemplar()); } customExemplars[index] = Exemplar.builder().value(value).labels(labels).timestampMillis(now).build(); @@ -355,7 +374,14 @@ private Labels doSampleExemplar() { String traceId = spanContext.getCurrentTraceId(); if (spanId != null && traceId != null) { spanContext.markCurrentSpanAsExemplar(); - return Labels.of(Exemplar.TRACE_ID, traceId, Exemplar.SPAN_ID, spanId); + Labels labels = Labels.of(Exemplar.TRACE_ID, traceId, Exemplar.SPAN_ID, spanId); + // Per-metric supplier first (more specific), then the global supplier. On a name + // collision the earlier (more specific) value is kept; the reserved trace_id/span_id + // labels always win over both. + labels = mergeAdditionalLabels(labels, additionalLabelsSupplier); + labels = + mergeAdditionalLabels(labels, ExemplarLabelsSupplier.getExemplarLabelsSupplier()); + return labels; } } } @@ -364,4 +390,68 @@ private Labels doSampleExemplar() { } return Labels.EMPTY; } + + /** + * Merge labels from {@code supplier} into {@code base}, dropping any label whose name already + * exists in {@code base}. Never throws: a {@code null} supplier, a {@code null}/empty result, a + * colliding label name, or an exception thrown by the supplier all result in {@code base} being + * returned unchanged (minus the offending labels). A misbehaving supplier must never break metric + * collection. + */ + private static Labels mergeAdditionalLabels(Labels base, @Nullable Supplier supplier) { + if (supplier == null) { + return base; + } + Labels extra; + try { + extra = supplier.get(); + } catch (Throwable ignored) { + // A misbehaving supplier (any RuntimeException or Error) must never break metric collection. + return base; + } + if (extra == null || extra.isEmpty()) { + return base; + } + return mergeLabels(base, extra); + } + + /** + * Merge {@code extra} into {@code base}, dropping any label whose name already exists in {@code + * base}. + */ + private static Labels mergeLabels(Labels base, Labels extra) { + if (extra.isEmpty()) { + return base; + } + // Count name collisions with base in a single pass so we can merge exactly once below: base + // (trace_id/span_id and any more-specific supplier) always wins, so colliding labels are + // dropped. extra is itself a valid Labels (no internal duplicates), so the surviving labels + // never collide with each other and merge() cannot throw on a duplicate name. + int size = extra.size(); + int collisions = 0; + for (int i = 0; i < size; i++) { + if (base.contains(extra.getName(i))) { + collisions++; + } + } + if (collisions == 0) { + return base.merge(extra); + } + if (collisions == size) { + return base; + } + int kept = size - collisions; + String[] names = new String[kept]; + String[] values = new String[kept]; + int j = 0; + for (int i = 0; i < size; i++) { + String name = extra.getName(i); + if (!base.contains(name)) { + names[j] = name; + values[j] = extra.getValue(i); + j++; + } + } + return base.merge(names, values); + } } diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/exemplars/ExemplarSamplerConfig.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/exemplars/ExemplarSamplerConfig.java index 5bf642e7e..f1afd1453 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/exemplars/ExemplarSamplerConfig.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/exemplars/ExemplarSamplerConfig.java @@ -1,10 +1,12 @@ package io.prometheus.metrics.core.exemplars; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.ExemplarsProperties; import io.prometheus.metrics.config.PrometheusProperties; import java.util.concurrent.TimeUnit; import javax.annotation.Nullable; +@StableApi public class ExemplarSamplerConfig { /** See {@link ExemplarsProperties#getMinRetentionPeriodSeconds()} */ diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Counter.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Counter.java index 8530c988f..1c614bdf3 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Counter.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Counter.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.core.metrics; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.MetricsProperties; import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.core.datapoints.CounterDataPoint; @@ -14,6 +15,7 @@ import java.util.List; import java.util.concurrent.atomic.DoubleAdder; import java.util.concurrent.atomic.LongAdder; +import java.util.function.Supplier; import javax.annotation.Nullable; /** @@ -31,10 +33,12 @@ * requestCount.labelValues("/hello-world", "500").inc(); * } */ +@StableApi public class Counter extends StatefulMetric implements CounterDataPoint { @Nullable private final ExemplarSamplerConfig exemplarSamplerConfig; + @Nullable private final Supplier exemplarLabelsSupplier; private Counter(Builder builder, PrometheusProperties prometheusProperties) { super(builder); @@ -47,6 +51,7 @@ private Counter(Builder builder, PrometheusProperties prometheusProperties) { } else { exemplarSamplerConfig = null; } + exemplarLabelsSupplier = builder.exemplarLabelsSupplier; } @Override @@ -90,10 +95,15 @@ protected CounterSnapshot collect(List labels, List metricDat for (int i = 0; i < labels.size(); i++) { data.add(metricData.get(i).collect(labels.get(i))); } - return new CounterSnapshot(getMetadata(), data); + return new CounterSnapshot(metadata, data); } + /** + * @deprecated Use {@link #getMetricFamilyDescriptor()} instead. + */ @Override + @Deprecated + @SuppressWarnings("InlineMeSuggester") public MetricType getMetricType() { return MetricType.COUNTER; } @@ -101,7 +111,8 @@ public MetricType getMetricType() { @Override protected DataPoint newDataPoint() { if (exemplarSamplerConfig != null) { - return new DataPoint(new ExemplarSampler(exemplarSamplerConfig)); + return new DataPoint( + new ExemplarSampler(exemplarSamplerConfig, null, exemplarLabelsSupplier)); } else { return new DataPoint(null); } diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/CounterWithCallback.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/CounterWithCallback.java index 3a818c004..514a13d26 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/CounterWithCallback.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/CounterWithCallback.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.core.metrics; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.model.registry.MetricType; import io.prometheus.metrics.model.snapshots.CounterSnapshot; @@ -22,6 +23,7 @@ * .register(); * } */ +@StableApi public class CounterWithCallback extends CallbackMetric { @FunctionalInterface @@ -48,10 +50,15 @@ public CounterSnapshot collect() { new CounterSnapshot.CounterDataPointSnapshot( value, makeLabels(labelValues), null, 0L)); }); - return new CounterSnapshot(getMetadata(), dataPoints); + return new CounterSnapshot(metadata, dataPoints); } + /** + * @deprecated Use {@link #getMetricFamilyDescriptor()} instead. + */ @Override + @Deprecated + @SuppressWarnings("InlineMeSuggester") public MetricType getMetricType() { return MetricType.COUNTER; } diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Gauge.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Gauge.java index 8b1f31409..ca743c859 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Gauge.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Gauge.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.core.metrics; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.MetricsProperties; import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.core.datapoints.GaugeDataPoint; @@ -13,6 +14,7 @@ import java.util.Collections; import java.util.List; import java.util.concurrent.atomic.AtomicLong; +import java.util.function.Supplier; import javax.annotation.Nullable; /** @@ -38,10 +40,12 @@ * } * } */ +@StableApi public class Gauge extends StatefulMetric implements GaugeDataPoint { @Nullable private final ExemplarSamplerConfig exemplarSamplerConfig; + @Nullable private final Supplier exemplarLabelsSupplier; private Gauge(Builder builder, PrometheusProperties prometheusProperties) { super(builder); @@ -54,6 +58,7 @@ private Gauge(Builder builder, PrometheusProperties prometheusProperties) { } else { exemplarSamplerConfig = null; } + exemplarLabelsSupplier = builder.exemplarLabelsSupplier; } @Override @@ -92,10 +97,15 @@ protected GaugeSnapshot collect(List labels, List metricData) for (int i = 0; i < labels.size(); i++) { dataPointSnapshots.add(metricData.get(i).collect(labels.get(i))); } - return new GaugeSnapshot(getMetadata(), dataPointSnapshots); + return new GaugeSnapshot(metadata, dataPointSnapshots); } + /** + * @deprecated Use {@link #getMetricFamilyDescriptor()} instead. + */ @Override + @Deprecated + @SuppressWarnings("InlineMeSuggester") public MetricType getMetricType() { return MetricType.GAUGE; } @@ -103,7 +113,8 @@ public MetricType getMetricType() { @Override protected DataPoint newDataPoint() { if (exemplarSamplerConfig != null) { - return new DataPoint(new ExemplarSampler(exemplarSamplerConfig)); + return new DataPoint( + new ExemplarSampler(exemplarSamplerConfig, null, exemplarLabelsSupplier)); } else { return new DataPoint(null); } diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/GaugeWithCallback.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/GaugeWithCallback.java index 88aee225f..6c81e2d89 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/GaugeWithCallback.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/GaugeWithCallback.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.core.metrics; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.model.registry.MetricType; import io.prometheus.metrics.model.snapshots.GaugeSnapshot; @@ -27,6 +28,7 @@ * .register(); * } */ +@StableApi public class GaugeWithCallback extends CallbackMetric { @FunctionalInterface @@ -52,10 +54,15 @@ public GaugeSnapshot collect() { dataPoints.add( new GaugeSnapshot.GaugeDataPointSnapshot(value, makeLabels(labelValues), null, 0L)); }); - return new GaugeSnapshot(getMetadata(), dataPoints); + return new GaugeSnapshot(metadata, dataPoints); } + /** + * @deprecated Use {@link #getMetricFamilyDescriptor()} instead. + */ @Override + @Deprecated + @SuppressWarnings("InlineMeSuggester") public MetricType getMetricType() { return MetricType.GAUGE; } diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Histogram.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Histogram.java index 930d9e67e..9a7f9b7c9 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Histogram.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Histogram.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.core.metrics; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.ExemplarsProperties; import io.prometheus.metrics.config.MetricsProperties; import io.prometheus.metrics.config.PrometheusProperties; @@ -25,6 +26,7 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.DoubleAdder; import java.util.concurrent.atomic.LongAdder; +import java.util.function.Supplier; import javax.annotation.Nullable; /** @@ -61,6 +63,7 @@ *

If you want the classic representation only, use {@link Histogram.Builder#classicOnly}. If you * want the native representation only, use {@link Histogram.Builder#nativeOnly}. */ +@StableApi public class Histogram extends StatefulMetric implements DistributionDataPoint { @@ -71,6 +74,7 @@ public class Histogram extends StatefulMetric exemplarLabelsSupplier; // Upper bounds for the classic histogram buckets. Contains at least +Inf. // An empty array indicates that this is a native histogram only. @@ -169,6 +173,7 @@ private Histogram(Histogram.Builder builder, PrometheusProperties prometheusProp } else { exemplarSamplerConfig = null; } + exemplarLabelsSupplier = builder.exemplarLabelsSupplier; } @Override @@ -210,7 +215,7 @@ public class DataPoint implements DistributionDataPoint { private DataPoint() { if (exemplarSamplerConfig != null) { - exemplarSampler = new ExemplarSampler(exemplarSamplerConfig); + exemplarSampler = new ExemplarSampler(exemplarSamplerConfig, null, exemplarLabelsSupplier); } else { exemplarSampler = null; } @@ -647,10 +652,15 @@ protected HistogramSnapshot collect(List labels, List metricD for (int i = 0; i < labels.size(); i++) { data.add(metricData.get(i).collect(labels.get(i))); } - return new HistogramSnapshot(getMetadata(), data); + return new HistogramSnapshot(metadata, data); } + /** + * @deprecated Use {@link #getMetricFamilyDescriptor()} instead. + */ @Override + @Deprecated + @SuppressWarnings("InlineMeSuggester") public MetricType getMetricType() { return MetricType.HISTOGRAM; } diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Info.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Info.java index e782c9156..69be33e9d 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Info.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Info.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.core.metrics; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.model.registry.MetricType; import io.prometheus.metrics.model.snapshots.InfoSnapshot; @@ -30,6 +31,7 @@ * info.addLabelValues("dev", version, vendor, runtime); * } */ +@StableApi public class Info extends MetricWithFixedMetadata { private final Set labels = new CopyOnWriteArraySet<>(); @@ -48,7 +50,7 @@ public void setLabelValues(String... labelValues) { throw new IllegalArgumentException( getClass().getSimpleName() + " " - + getMetadata().getName() + + metadata.getName() + " was created with " + labelNames.length + " label names, but you called setLabelValues() with " @@ -66,7 +68,7 @@ public void addLabelValues(String... labelValues) { throw new IllegalArgumentException( getClass().getSimpleName() + " " - + getMetadata().getName() + + metadata.getName() + " was created with " + labelNames.length + " label names, but you called addLabelValues() with " @@ -82,7 +84,7 @@ public void remove(String... labelValues) { throw new IllegalArgumentException( getClass().getSimpleName() + " " - + getMetadata().getName() + + metadata.getName() + " was created with " + labelNames.length + " label names, but you called remove() with " @@ -103,10 +105,15 @@ public InfoSnapshot collect() { data.add(new InfoSnapshot.InfoDataPointSnapshot(label.merge(constLabels))); } } - return new InfoSnapshot(getMetadata(), data); + return new InfoSnapshot(metadata, data); } + /** + * @deprecated Use {@link #getMetricFamilyDescriptor()} instead. + */ @Override + @Deprecated + @SuppressWarnings("InlineMeSuggester") public MetricType getMetricType() { return MetricType.INFO; } diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Metric.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Metric.java index d3c00eca0..64c03c825 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Metric.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Metric.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.core.metrics; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.model.registry.Collector; import io.prometheus.metrics.model.registry.PrometheusRegistry; @@ -10,6 +11,7 @@ import java.util.List; /** Common base class for all metrics. */ +@StableApi public abstract class Metric implements Collector { protected final Labels constLabels; diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/MetricWithFixedMetadata.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/MetricWithFixedMetadata.java index 1b63004d8..9be797b0e 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/MetricWithFixedMetadata.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/MetricWithFixedMetadata.java @@ -1,8 +1,11 @@ package io.prometheus.metrics.core.metrics; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.PrometheusProperties; +import io.prometheus.metrics.model.registry.MetricType; import io.prometheus.metrics.model.snapshots.Label; import io.prometheus.metrics.model.snapshots.Labels; +import io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor; import io.prometheus.metrics.model.snapshots.MetricMetadata; import io.prometheus.metrics.model.snapshots.PrometheusNaming; import io.prometheus.metrics.model.snapshots.Unit; @@ -18,9 +21,10 @@ *

An exception would be a metric that is a bridge to a 3rd party metric library, where the * metric name has to be retrieved from the 3rd party metric library at scrape time. */ +@StableApi public abstract class MetricWithFixedMetadata extends Metric { - private final MetricMetadata metadata; + protected final MetricMetadata metadata; protected final String[] labelNames; protected MetricWithFixedMetadata(Builder builder) { @@ -37,6 +41,22 @@ protected MetricWithFixedMetadata(Builder builder) { } @Override + @Nullable + @SuppressWarnings("deprecation") + public MetricFamilyDescriptor getMetricFamilyDescriptor() { + MetricType metricType = getMetricType(); + if (metricType == null) { + return null; + } + return MetricFamilyDescriptor.of(metricType, metadata, getPrometheusLabels()); + } + + /** + * @deprecated Use {@link #getMetricFamilyDescriptor()} instead. + */ + @Override + @Deprecated + @SuppressWarnings("InlineMeSuggester") public MetricMetadata getMetadata() { return metadata; } @@ -65,13 +85,27 @@ private String makeExpositionBaseName(@Nullable String expositionBaseName, @Null return expositionBaseName; } + /** + * @deprecated Use {@link #getMetricFamilyDescriptor()} instead. + */ @Override + @Deprecated + @SuppressWarnings("InlineMeSuggester") public String getPrometheusName() { return metadata.getPrometheusName(); } + /** + * @deprecated Use {@link #getMetricFamilyDescriptor()} instead. + */ @Override + @Deprecated + @SuppressWarnings("InlineMeSuggester") public Set getLabelNames() { + return getPrometheusLabels(); + } + + private Set getPrometheusLabels() { Set names = new HashSet<>(); for (String labelName : labelNames) { names.add(PrometheusNaming.prometheusName(labelName)); diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/SlidingWindow.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/SlidingWindow.java index e56134d5d..4940e1e6d 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/SlidingWindow.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/SlidingWindow.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.core.metrics; +import io.prometheus.metrics.annotations.StableApi; import java.lang.reflect.Array; import java.util.concurrent.TimeUnit; import java.util.function.LongSupplier; @@ -26,6 +27,7 @@ * and the observation frequency is typically lower than Counter increments, the current * implementation provides an acceptable trade-off between simplicity and performance. */ +@StableApi public class SlidingWindow { private final Supplier constructor; diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/StateSet.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/StateSet.java index 740183f31..c62aecb77 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/StateSet.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/StateSet.java @@ -2,6 +2,7 @@ import static io.prometheus.metrics.model.snapshots.PrometheusNaming.prometheusName; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.core.datapoints.StateSetDataPoint; import io.prometheus.metrics.model.registry.MetricType; @@ -51,6 +52,7 @@ * The example above shows how to use a StateSet with an enum. You don't have to use enum, you can * use regular strings as well. */ +@StableApi public class StateSet extends StatefulMetric implements StateSetDataPoint { @@ -60,7 +62,7 @@ private StateSet(Builder builder, String[] names) { super(builder); this.names = names; for (String name : names) { - if (this.getMetadata().getPrometheusName().equals(prometheusName(name))) { + if (metadata.getPrometheusName().equals(prometheusName(name))) { throw new IllegalArgumentException( "Label name " + name @@ -82,10 +84,15 @@ protected StateSetSnapshot collect(List labels, List metricDa new StateSetSnapshot.StateSetDataPointSnapshot( names, metricDataList.get(i).values, labels.get(i))); } - return new StateSetSnapshot(getMetadata(), data); + return new StateSetSnapshot(metadata, data); } + /** + * @deprecated Use {@link #getMetricFamilyDescriptor()} instead. + */ @Override + @Deprecated + @SuppressWarnings("InlineMeSuggester") public MetricType getMetricType() { return MetricType.STATESET; } diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/StatefulMetric.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/StatefulMetric.java index 386e92292..6ad26fda3 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/StatefulMetric.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/StatefulMetric.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.core.metrics; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.MetricsProperties; import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.core.datapoints.DataPoint; @@ -13,6 +14,7 @@ import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; +import java.util.function.Supplier; import javax.annotation.Nullable; /** @@ -30,6 +32,7 @@ * because in Java synchronous and asynchronous usually refers to multi-threading, but * this has nothing to do with multi-threading. */ +@StableApi public abstract class StatefulMetric extends MetricWithFixedMetadata { @@ -105,7 +108,7 @@ public D labelValues(String... labelValues) { throw new IllegalArgumentException( getClass().getSimpleName() + " " - + getMetadata().getName() + + metadata.getName() + " was created with label names, so you must call labelValues(...)" + " when using it."); } else { @@ -120,7 +123,7 @@ public D labelValues(String... labelValues) { if (l.get(i) == null) { throw new IllegalArgumentException( "null label value for metric " - + getMetadata().getName() + + metadata.getName() + " and label " + labelNames[i]); } @@ -171,7 +174,7 @@ protected MetricsProperties[] getMetricProperties( if (Objects.equals(builder.exemplarsEnabled, false)) { properties.add(MetricsProperties.builder().exemplarsEnabled(false).build()); } - String metricName = getMetadata().getName(); + String metricName = metadata.getName(); if (prometheusProperties.getMetricProperties(metricName) != null) { properties.add(prometheusProperties.getMetricProperties(metricName)); } @@ -198,11 +201,31 @@ abstract static class Builder, M extends StatefulMetric< extends MetricWithFixedMetadata.Builder { @Nullable protected Boolean exemplarsEnabled; + @Nullable protected Supplier exemplarLabelsSupplier; protected Builder(List illegalLabelNames, PrometheusProperties config) { super(illegalLabelNames, config); } + /** + * Provide additional labels to be merged into every automatically-sampled exemplar of this + * metric. The supplier is called each time an exemplar is sampled, so it can return + * dynamic values (e.g. a request-scoped identifier from a thread-local). The supplier is only + * invoked when a valid, sampled span context is present; it has no effect when tracing is not + * active. + * + *

For a global supplier that applies to all metrics (including metrics registered by + * third-party libraries you do not control), see {@link + * io.prometheus.metrics.core.exemplars.ExemplarLabelsSupplier}. When both are configured, this + * per-metric supplier takes precedence over the global one on a label-name collision, and the + * reserved {@code trace_id}/{@code span_id} labels always win over both. Labels that collide + * are silently dropped. + */ + public B exemplarLabelsSupplier(Supplier supplier) { + this.exemplarLabelsSupplier = supplier; + return self(); + } + /** Allow Exemplars for this metric. */ public B withExemplars() { this.exemplarsEnabled = true; diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Summary.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Summary.java index 47b6e2a9c..043f31129 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Summary.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/Summary.java @@ -2,6 +2,7 @@ import static java.util.Objects.requireNonNull; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.MetricsProperties; import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.core.datapoints.DistributionDataPoint; @@ -19,6 +20,7 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.DoubleAdder; import java.util.concurrent.atomic.LongAdder; +import java.util.function.Supplier; import javax.annotation.Nullable; /** @@ -42,6 +44,7 @@ * * See {@link Summary.Builder} for configuration options. */ +@StableApi public class Summary extends StatefulMetric implements DistributionDataPoint { @@ -50,6 +53,7 @@ public class Summary extends StatefulMetric exemplarLabelsSupplier; private Summary(Builder builder, PrometheusProperties prometheusProperties) { super(builder); @@ -65,6 +69,7 @@ private Summary(Builder builder, PrometheusProperties prometheusProperties) { } else { exemplarSamplerConfig = null; } + exemplarLabelsSupplier = builder.exemplarLabelsSupplier; } private List makeQuantiles(MetricsProperties[] properties) { @@ -116,10 +121,15 @@ protected SummarySnapshot collect(List labels, List metricDat for (int i = 0; i < labels.size(); i++) { data.add(metricData.get(i).collect(labels.get(i))); } - return new SummarySnapshot(getMetadata(), data); + return new SummarySnapshot(metadata, data); } + /** + * @deprecated Use {@link #getMetricFamilyDescriptor()} instead. + */ @Override + @Deprecated + @SuppressWarnings("InlineMeSuggester") public MetricType getMetricType() { return MetricType.SUMMARY; } @@ -153,7 +163,7 @@ private DataPoint() { ageBuckets); } if (exemplarSamplerConfig != null) { - exemplarSampler = new ExemplarSampler(exemplarSamplerConfig); + exemplarSampler = new ExemplarSampler(exemplarSamplerConfig, null, exemplarLabelsSupplier); } else { exemplarSampler = null; } diff --git a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/SummaryWithCallback.java b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/SummaryWithCallback.java index fa823e68e..0980f0d19 100644 --- a/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/SummaryWithCallback.java +++ b/prometheus-metrics-core/src/main/java/io/prometheus/metrics/core/metrics/SummaryWithCallback.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.core.metrics; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.model.registry.MetricType; import io.prometheus.metrics.model.snapshots.Exemplars; @@ -35,6 +36,7 @@ * .register(); * } */ +@StableApi public class SummaryWithCallback extends CallbackMetric { @FunctionalInterface @@ -61,10 +63,15 @@ public SummarySnapshot collect() { new SummarySnapshot.SummaryDataPointSnapshot( count, sum, quantiles, makeLabels(labelValues), Exemplars.EMPTY, 0L)); }); - return new SummarySnapshot(getMetadata(), dataPoints); + return new SummarySnapshot(metadata, dataPoints); } + /** + * @deprecated Use {@link #getMetricFamilyDescriptor()} instead. + */ @Override + @Deprecated + @SuppressWarnings("InlineMeSuggester") public MetricType getMetricType() { return MetricType.SUMMARY; } diff --git a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/CounterTest.java b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/CounterTest.java index b13e50f8d..69e472eb9 100644 --- a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/CounterTest.java +++ b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/CounterTest.java @@ -8,7 +8,9 @@ import io.prometheus.metrics.config.EscapingScheme; import io.prometheus.metrics.config.MetricsProperties; import io.prometheus.metrics.config.PrometheusProperties; +import io.prometheus.metrics.core.exemplars.ExemplarLabelsSupplier; import io.prometheus.metrics.core.exemplars.ExemplarSamplerConfigTestUtil; +import io.prometheus.metrics.expositionformats.OpenMetricsTextFormatWriter; import io.prometheus.metrics.expositionformats.generated.Metrics; import io.prometheus.metrics.expositionformats.internal.PrometheusProtobufWriterImpl; import io.prometheus.metrics.expositionformats.internal.ProtobufUtil; @@ -17,9 +19,11 @@ import io.prometheus.metrics.model.snapshots.Exemplar; import io.prometheus.metrics.model.snapshots.Label; import io.prometheus.metrics.model.snapshots.Labels; +import io.prometheus.metrics.model.snapshots.MetricSnapshots; import io.prometheus.metrics.model.snapshots.Unit; import io.prometheus.metrics.tracer.common.SpanContext; import io.prometheus.metrics.tracer.initializer.SpanContextSupplier; +import java.io.ByteArrayOutputStream; import java.util.Arrays; import java.util.Iterator; import org.junit.jupiter.api.AfterEach; @@ -51,6 +55,37 @@ void setUp() throws NoSuchFieldException, IllegalAccessException { @AfterEach void tearDown() { SpanContextSupplier.setSpanContext(origSpanContext); + ExemplarLabelsSupplier.setExemplarLabelsSupplier(null); + } + + /** A {@link SpanContext} that always returns a fixed, sampled span. */ + private static SpanContext sampledSpanContext(String traceId, String spanId) { + return new SpanContext() { + @Override + public String getCurrentTraceId() { + return traceId; + } + + @Override + public String getCurrentSpanId() { + return spanId; + } + + @Override + public boolean isCurrentSpanSampled() { + return true; + } + + @Override + public void markCurrentSpanAsExemplar() {} + }; + } + + private static String openMetrics(Counter counter) throws Exception { + ByteArrayOutputStream out = new ByteArrayOutputStream(); + new OpenMetricsTextFormatWriter(false, true) + .write(out, MetricSnapshots.of(counter.collect()), EscapingScheme.ALLOW_UTF8); + return out.toString(); } private CounterSnapshot.CounterDataPointSnapshot getData(Counter counter, String... labels) { @@ -321,6 +356,183 @@ void incWithExemplar2() { getData(counter).getExemplar()); } + @Test + void incWithExemplarCustomMetadataInExposition() throws Exception { + Counter counter = Counter.builder().name("requests_total").build(); + counter.incWithExemplar( + Labels.of( + Exemplar.TRACE_ID, "abc123", Exemplar.SPAN_ID, "def456", "management_id", "mgmt-42")); + + ByteArrayOutputStream out = new ByteArrayOutputStream(); + new OpenMetricsTextFormatWriter(false, true) + .write(out, MetricSnapshots.of(counter.collect()), EscapingScheme.ALLOW_UTF8); + + assertThat(out.toString()) + .contains("management_id=\"mgmt-42\"") + .contains("trace_id=\"abc123\"") + .contains("span_id=\"def456\""); + } + + @Test + void exemplarLabelsSupplierAppearsInAutomaticallySampledExemplar() throws Exception { + SpanContextSupplier.setSpanContext( + new SpanContext() { + @Override + public String getCurrentTraceId() { + return "trace-abc"; + } + + @Override + public String getCurrentSpanId() { + return "span-def"; + } + + @Override + public boolean isCurrentSpanSampled() { + return true; + } + + @Override + public void markCurrentSpanAsExemplar() {} + }); + + Counter counter = + Counter.builder() + .name("requests_total") + .exemplarLabelsSupplier(() -> Labels.of("management_id", "mgmt-42")) + .build(); + counter.inc(); // automatic sampling path + + ByteArrayOutputStream out = new ByteArrayOutputStream(); + new OpenMetricsTextFormatWriter(false, true) + .write(out, MetricSnapshots.of(counter.collect()), EscapingScheme.ALLOW_UTF8); + + assertThat(out.toString()) + .contains("management_id=\"mgmt-42\"") + .contains("trace_id=\"trace-abc\"") + .contains("span_id=\"span-def\""); + } + + @Test + void globalExemplarLabelsSupplierAppearsInAutomaticallySampledExemplar() throws Exception { + SpanContextSupplier.setSpanContext(sampledSpanContext("trace-abc", "span-def")); + ExemplarLabelsSupplier.setExemplarLabelsSupplier(() -> Labels.of("management_id", "mgmt-42")); + + Counter counter = Counter.builder().name("requests_total").build(); + counter.inc(); // automatic sampling path + + assertThat(openMetrics(counter)) + .contains("management_id=\"mgmt-42\"") + .contains("trace_id=\"trace-abc\"") + .contains("span_id=\"span-def\""); + } + + @Test + void globalAndPerMetricSuppliersBothApply() throws Exception { + SpanContextSupplier.setSpanContext(sampledSpanContext("trace-abc", "span-def")); + ExemplarLabelsSupplier.setExemplarLabelsSupplier(() -> Labels.of("global_k", "g")); + + Counter counter = + Counter.builder() + .name("requests_total") + .exemplarLabelsSupplier(() -> Labels.of("metric_k", "m")) + .build(); + counter.inc(); + + assertThat(openMetrics(counter)) + .contains("global_k=\"g\"") + .contains("metric_k=\"m\"") + .contains("trace_id=\"trace-abc\"") + .contains("span_id=\"span-def\""); + } + + @Test + void perMetricSupplierWinsOverGlobalOnCollision() throws Exception { + SpanContextSupplier.setSpanContext(sampledSpanContext("trace-abc", "span-def")); + ExemplarLabelsSupplier.setExemplarLabelsSupplier(() -> Labels.of("k", "global")); + + Counter counter = + Counter.builder() + .name("requests_total") + .exemplarLabelsSupplier(() -> Labels.of("k", "metric")) + .build(); + counter.inc(); + + assertThat(openMetrics(counter)).contains("k=\"metric\"").doesNotContain("k=\"global\""); + } + + @Test + void globalSupplierCollidingWithTraceIdIsDropped() throws Exception { + SpanContextSupplier.setSpanContext(sampledSpanContext("trace-abc", "span-def")); + ExemplarLabelsSupplier.setExemplarLabelsSupplier(() -> Labels.of(Exemplar.TRACE_ID, "evil")); + + Counter counter = Counter.builder().name("requests_total").build(); + counter.inc(); + + assertThat(openMetrics(counter)) + .contains("trace_id=\"trace-abc\"") + .doesNotContain("trace_id=\"evil\""); + } + + @Test + void globalSupplierThrowingDoesNotBreakCollection() throws Exception { + SpanContextSupplier.setSpanContext(sampledSpanContext("trace-abc", "span-def")); + ExemplarLabelsSupplier.setExemplarLabelsSupplier( + () -> { + throw new RuntimeException("boom"); + }); + + Counter counter = Counter.builder().name("requests_total").build(); + counter.inc(); + + assertThat(openMetrics(counter)) + .contains("trace_id=\"trace-abc\"") + .contains("span_id=\"span-def\""); + } + + @Test + void globalSupplierWithoutSpanContextProducesNoExemplar() { + SpanContextSupplier.setSpanContext(null); + ExemplarLabelsSupplier.setExemplarLabelsSupplier(() -> Labels.of("management_id", "mgmt-42")); + + Counter counter = Counter.builder().name("requests_total").build(); + counter.inc(); + + assertThat(getData(counter).getExemplar()).isNull(); + } + + @Test + void globalSupplierMergedIntoCustomExemplar() throws Exception { + SpanContextSupplier.setSpanContext(sampledSpanContext("trace-abc", "span-def")); + ExemplarLabelsSupplier.setExemplarLabelsSupplier(() -> Labels.of("management_id", "mgmt-42")); + + Counter counter = Counter.builder().name("requests_total").build(); + counter.incWithExemplar(Labels.of("k", "v")); + + assertThat(openMetrics(counter)) + .contains("management_id=\"mgmt-42\"") + .contains("k=\"v\"") + .contains("trace_id=\"trace-abc\"") + .contains("span_id=\"span-def\""); + } + + @Test + void callerLabelsWinOverGlobalSupplierInCustomExemplar() throws Exception { + SpanContextSupplier.setSpanContext(sampledSpanContext("trace-abc", "span-def")); + ExemplarLabelsSupplier.setExemplarLabelsSupplier( + () -> Labels.of("k", "global", "management_id", "mgmt-42")); + + Counter counter = Counter.builder().name("requests_total").build(); + counter.incWithExemplar(Labels.of("k", "caller")); + + assertThat(openMetrics(counter)) + .contains("k=\"caller\"") + .contains("management_id=\"mgmt-42\"") + .contains("trace_id=\"trace-abc\"") + .contains("span_id=\"span-def\"") + .doesNotContain("k=\"global\""); + } + @Test void testExemplarSamplerDisabled() { Counter counter = Counter.builder().name("count_total").withoutExemplars().build(); diff --git a/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/MetricWithFixedMetadataTest.java b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/MetricWithFixedMetadataTest.java new file mode 100644 index 000000000..90d49f3e9 --- /dev/null +++ b/prometheus-metrics-core/src/test/java/io/prometheus/metrics/core/metrics/MetricWithFixedMetadataTest.java @@ -0,0 +1,75 @@ +package io.prometheus.metrics.core.metrics; + +import static org.assertj.core.api.Assertions.assertThat; + +import io.prometheus.metrics.config.PrometheusProperties; +import io.prometheus.metrics.model.registry.MetricType; +import io.prometheus.metrics.model.snapshots.Labels; +import io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor; +import io.prometheus.metrics.model.snapshots.MetricSnapshot; +import java.util.Collections; +import org.junit.jupiter.api.Test; + +class MetricWithFixedMetadataTest { + + @Test + @SuppressWarnings("deprecation") + void getMetricFamilyDescriptorAdaptsDeprecatedMetricTypeOverride() { + LegacyMetric metric = + LegacyMetric.builder() + .name("legacy.metric") + .constLabels(Labels.of("const.label", "value")) + .labelNames("dynamic.label") + .build(); + + MetricFamilyDescriptor descriptor = metric.getMetricFamilyDescriptor(); + + assertThat(descriptor).isNotNull(); + assertThat(descriptor.getType()).isEqualTo(MetricType.GAUGE); + assertThat(descriptor.getPrometheusName()).isEqualTo("legacy_metric"); + assertThat(descriptor.getLabelNames()) + .containsExactlyInAnyOrder("const_label", "dynamic_label"); + } + + private static class LegacyMetric extends MetricWithFixedMetadata { + + private LegacyMetric(Builder builder) { + super(builder); + } + + private static Builder builder() { + return new Builder(); + } + + @Override + public MetricSnapshot collect() { + throw new UnsupportedOperationException(); + } + + /** + * @deprecated Use {@link #getMetricFamilyDescriptor()} instead. + */ + @Override + @Deprecated + public MetricType getMetricType() { + return MetricType.GAUGE; + } + + private static class Builder extends MetricWithFixedMetadata.Builder { + + private Builder() { + super(Collections.emptyList(), PrometheusProperties.builder().build()); + } + + @Override + public LegacyMetric build() { + return new LegacyMetric(this); + } + + @Override + protected Builder self() { + return this; + } + } + } +} diff --git a/prometheus-metrics-exporter-common/pom.xml b/prometheus-metrics-exporter-common/pom.xml index 9c1c9c91f..2000880a0 100644 --- a/prometheus-metrics-exporter-common/pom.xml +++ b/prometheus-metrics-exporter-common/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT prometheus-metrics-exporter-common @@ -21,6 +21,12 @@ + + io.prometheus + prometheus-metrics-annotations + ${project.version} + true + io.prometheus prometheus-metrics-model diff --git a/prometheus-metrics-exporter-common/src/main/java/io/prometheus/metrics/exporter/common/PrometheusHttpExchange.java b/prometheus-metrics-exporter-common/src/main/java/io/prometheus/metrics/exporter/common/PrometheusHttpExchange.java index b7ac63b28..81d00e62b 100644 --- a/prometheus-metrics-exporter-common/src/main/java/io/prometheus/metrics/exporter/common/PrometheusHttpExchange.java +++ b/prometheus-metrics-exporter-common/src/main/java/io/prometheus/metrics/exporter/common/PrometheusHttpExchange.java @@ -1,7 +1,9 @@ package io.prometheus.metrics.exporter.common; +import io.prometheus.metrics.annotations.StableApi; import java.io.IOException; +@StableApi public interface PrometheusHttpExchange extends AutoCloseable { PrometheusHttpRequest getRequest(); diff --git a/prometheus-metrics-exporter-common/src/main/java/io/prometheus/metrics/exporter/common/PrometheusHttpRequest.java b/prometheus-metrics-exporter-common/src/main/java/io/prometheus/metrics/exporter/common/PrometheusHttpRequest.java index 4483fc83f..a0c692c23 100644 --- a/prometheus-metrics-exporter-common/src/main/java/io/prometheus/metrics/exporter/common/PrometheusHttpRequest.java +++ b/prometheus-metrics-exporter-common/src/main/java/io/prometheus/metrics/exporter/common/PrometheusHttpRequest.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.exporter.common; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.model.registry.PrometheusScrapeRequest; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; @@ -7,6 +8,7 @@ import java.util.Enumeration; import javax.annotation.Nullable; +@StableApi public interface PrometheusHttpRequest extends PrometheusScrapeRequest { /** See {@code jakarta.servlet.http.HttpServletRequest.getQueryString()} */ diff --git a/prometheus-metrics-exporter-common/src/main/java/io/prometheus/metrics/exporter/common/PrometheusHttpResponse.java b/prometheus-metrics-exporter-common/src/main/java/io/prometheus/metrics/exporter/common/PrometheusHttpResponse.java index b3dd4e2fb..b084d3989 100644 --- a/prometheus-metrics-exporter-common/src/main/java/io/prometheus/metrics/exporter/common/PrometheusHttpResponse.java +++ b/prometheus-metrics-exporter-common/src/main/java/io/prometheus/metrics/exporter/common/PrometheusHttpResponse.java @@ -1,8 +1,10 @@ package io.prometheus.metrics.exporter.common; +import io.prometheus.metrics.annotations.StableApi; import java.io.IOException; import java.io.OutputStream; +@StableApi public interface PrometheusHttpResponse { /** See {@code jakarta.servlet.http.HttpServletResponse.setHeader(String, String)} */ diff --git a/prometheus-metrics-exporter-common/src/main/java/io/prometheus/metrics/exporter/common/PrometheusScrapeHandler.java b/prometheus-metrics-exporter-common/src/main/java/io/prometheus/metrics/exporter/common/PrometheusScrapeHandler.java index b538f898d..20328382a 100644 --- a/prometheus-metrics-exporter-common/src/main/java/io/prometheus/metrics/exporter/common/PrometheusScrapeHandler.java +++ b/prometheus-metrics-exporter-common/src/main/java/io/prometheus/metrics/exporter/common/PrometheusScrapeHandler.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.exporter.common; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.EscapingScheme; import io.prometheus.metrics.config.ExporterFilterProperties; import io.prometheus.metrics.config.PrometheusProperties; @@ -22,6 +23,7 @@ import javax.annotation.Nullable; /** Prometheus scrape endpoint. */ +@StableApi public class PrometheusScrapeHandler { private final PrometheusRegistry registry; diff --git a/prometheus-metrics-exporter-httpserver/pom.xml b/prometheus-metrics-exporter-httpserver/pom.xml index d8916ca72..82d445012 100644 --- a/prometheus-metrics-exporter-httpserver/pom.xml +++ b/prometheus-metrics-exporter-httpserver/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT prometheus-metrics-exporter-httpserver @@ -22,6 +22,12 @@ + + io.prometheus + prometheus-metrics-annotations + ${project.version} + true + io.prometheus prometheus-metrics-exporter-common diff --git a/prometheus-metrics-exporter-httpserver/src/main/java/io/prometheus/metrics/exporter/httpserver/DefaultHandler.java b/prometheus-metrics-exporter-httpserver/src/main/java/io/prometheus/metrics/exporter/httpserver/DefaultHandler.java index a4a343d54..2cafbb89c 100644 --- a/prometheus-metrics-exporter-httpserver/src/main/java/io/prometheus/metrics/exporter/httpserver/DefaultHandler.java +++ b/prometheus-metrics-exporter-httpserver/src/main/java/io/prometheus/metrics/exporter/httpserver/DefaultHandler.java @@ -2,10 +2,12 @@ import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpHandler; +import io.prometheus.metrics.annotations.StableApi; import java.io.IOException; import java.nio.charset.StandardCharsets; /** Handler for the / endpoint */ +@StableApi public class DefaultHandler implements HttpHandler { private final byte[] responseBytes; diff --git a/prometheus-metrics-exporter-httpserver/src/main/java/io/prometheus/metrics/exporter/httpserver/HTTPServer.java b/prometheus-metrics-exporter-httpserver/src/main/java/io/prometheus/metrics/exporter/httpserver/HTTPServer.java index 55ed6c67e..e93b122b0 100644 --- a/prometheus-metrics-exporter-httpserver/src/main/java/io/prometheus/metrics/exporter/httpserver/HTTPServer.java +++ b/prometheus-metrics-exporter-httpserver/src/main/java/io/prometheus/metrics/exporter/httpserver/HTTPServer.java @@ -7,6 +7,7 @@ import com.sun.net.httpserver.HttpServer; import com.sun.net.httpserver.HttpsConfigurator; import com.sun.net.httpserver.HttpsServer; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.model.registry.PrometheusRegistry; import java.io.Closeable; @@ -35,6 +36,7 @@ * .buildAndStart(); * } */ +@StableApi public class HTTPServer implements Closeable { static { diff --git a/prometheus-metrics-exporter-httpserver/src/main/java/io/prometheus/metrics/exporter/httpserver/HealthyHandler.java b/prometheus-metrics-exporter-httpserver/src/main/java/io/prometheus/metrics/exporter/httpserver/HealthyHandler.java index 806b47553..10cb97462 100644 --- a/prometheus-metrics-exporter-httpserver/src/main/java/io/prometheus/metrics/exporter/httpserver/HealthyHandler.java +++ b/prometheus-metrics-exporter-httpserver/src/main/java/io/prometheus/metrics/exporter/httpserver/HealthyHandler.java @@ -2,10 +2,12 @@ import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpHandler; +import io.prometheus.metrics.annotations.StableApi; import java.io.IOException; import java.nio.charset.StandardCharsets; /** Handler for the /-/healthy endpoint */ +@StableApi public class HealthyHandler implements HttpHandler { private final byte[] responseBytes; diff --git a/prometheus-metrics-exporter-httpserver/src/main/java/io/prometheus/metrics/exporter/httpserver/MetricsHandler.java b/prometheus-metrics-exporter-httpserver/src/main/java/io/prometheus/metrics/exporter/httpserver/MetricsHandler.java index 4ac4b80d7..175696b68 100644 --- a/prometheus-metrics-exporter-httpserver/src/main/java/io/prometheus/metrics/exporter/httpserver/MetricsHandler.java +++ b/prometheus-metrics-exporter-httpserver/src/main/java/io/prometheus/metrics/exporter/httpserver/MetricsHandler.java @@ -2,12 +2,14 @@ import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpHandler; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.exporter.common.PrometheusScrapeHandler; import io.prometheus.metrics.model.registry.PrometheusRegistry; import java.io.IOException; /** Handler for the /metrics endpoint */ +@StableApi public class MetricsHandler implements HttpHandler { private final PrometheusScrapeHandler prometheusScrapeHandler; diff --git a/prometheus-metrics-exporter-opentelemetry-otel-agent-resources/pom.xml b/prometheus-metrics-exporter-opentelemetry-otel-agent-resources/pom.xml index 9cc71812d..84ee1c211 100644 --- a/prometheus-metrics-exporter-opentelemetry-otel-agent-resources/pom.xml +++ b/prometheus-metrics-exporter-opentelemetry-otel-agent-resources/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT prometheus-metrics-exporter-opentelemetry-otel-agent-resources diff --git a/prometheus-metrics-exporter-opentelemetry-shaded/pom.xml b/prometheus-metrics-exporter-opentelemetry-shaded/pom.xml index 93a5c6200..cc500a738 100644 --- a/prometheus-metrics-exporter-opentelemetry-shaded/pom.xml +++ b/prometheus-metrics-exporter-opentelemetry-shaded/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT prometheus-metrics-exporter-opentelemetry @@ -33,6 +33,12 @@ + + io.prometheus + prometheus-metrics-annotations + ${project.version} + true + io.prometheus prometheus-metrics-core @@ -94,6 +100,30 @@ opentelemetry-sdk-testing test + + org.wiremock + wiremock + ${wiremock.version} + test + + + org.hamcrest + hamcrest-core + + + + + org.awaitility + awaitility + ${awaitility.version} + test + + + com.google.guava + guava + ${guava.version} + test + diff --git a/prometheus-metrics-exporter-opentelemetry/pom.xml b/prometheus-metrics-exporter-opentelemetry/pom.xml index e4aa7fa2f..31d5f8acc 100644 --- a/prometheus-metrics-exporter-opentelemetry/pom.xml +++ b/prometheus-metrics-exporter-opentelemetry/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT prometheus-metrics-exporter-opentelemetry-no-otel @@ -34,6 +34,12 @@ + + io.prometheus + prometheus-metrics-annotations + ${project.version} + true + io.prometheus prometheus-metrics-core @@ -95,6 +101,30 @@ opentelemetry-sdk-testing test + + org.wiremock + wiremock + ${wiremock.version} + test + + + org.hamcrest + hamcrest-core + + + + + org.awaitility + awaitility + ${awaitility.version} + test + + + com.google.guava + guava + ${guava.version} + test + diff --git a/prometheus-metrics-exporter-opentelemetry/src/main/java/io/prometheus/metrics/exporter/opentelemetry/OpenTelemetryExporter.java b/prometheus-metrics-exporter-opentelemetry/src/main/java/io/prometheus/metrics/exporter/opentelemetry/OpenTelemetryExporter.java index 727647e2e..1ca92c2c7 100644 --- a/prometheus-metrics-exporter-opentelemetry/src/main/java/io/prometheus/metrics/exporter/opentelemetry/OpenTelemetryExporter.java +++ b/prometheus-metrics-exporter-opentelemetry/src/main/java/io/prometheus/metrics/exporter/opentelemetry/OpenTelemetryExporter.java @@ -1,12 +1,14 @@ package io.prometheus.metrics.exporter.opentelemetry; import io.opentelemetry.sdk.metrics.export.MetricReader; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.model.registry.PrometheusRegistry; import java.util.HashMap; import java.util.Map; import javax.annotation.Nullable; +@StableApi public class OpenTelemetryExporter implements AutoCloseable { private final MetricReader reader; diff --git a/prometheus-metrics-exporter-pushgateway/pom.xml b/prometheus-metrics-exporter-pushgateway/pom.xml index 4fc7e3b0e..53eaae125 100644 --- a/prometheus-metrics-exporter-pushgateway/pom.xml +++ b/prometheus-metrics-exporter-pushgateway/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT prometheus-metrics-exporter-pushgateway @@ -21,6 +21,12 @@ + + io.prometheus + prometheus-metrics-annotations + ${project.version} + true + io.prometheus prometheus-metrics-exporter-common @@ -29,7 +35,7 @@ org.mock-server mockserver-netty-no-dependencies - 5.15.0 + 6.1.0 test diff --git a/prometheus-metrics-exporter-pushgateway/src/main/java/io/prometheus/metrics/exporter/pushgateway/DefaultHttpConnectionFactory.java b/prometheus-metrics-exporter-pushgateway/src/main/java/io/prometheus/metrics/exporter/pushgateway/DefaultHttpConnectionFactory.java index 60c110149..ef28fb34f 100644 --- a/prometheus-metrics-exporter-pushgateway/src/main/java/io/prometheus/metrics/exporter/pushgateway/DefaultHttpConnectionFactory.java +++ b/prometheus-metrics-exporter-pushgateway/src/main/java/io/prometheus/metrics/exporter/pushgateway/DefaultHttpConnectionFactory.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.exporter.pushgateway; +import io.prometheus.metrics.annotations.StableApi; import java.io.IOException; import java.net.HttpURLConnection; import java.net.URL; @@ -12,6 +13,7 @@ * certificate verification see {@code PushGatewayTestApp} in {@code * integration-tests/it-pushgateway/}. */ +@StableApi public class DefaultHttpConnectionFactory implements HttpConnectionFactory { @Override public HttpURLConnection create(URL url) throws IOException { diff --git a/prometheus-metrics-exporter-pushgateway/src/main/java/io/prometheus/metrics/exporter/pushgateway/Format.java b/prometheus-metrics-exporter-pushgateway/src/main/java/io/prometheus/metrics/exporter/pushgateway/Format.java index 3d1b9d2e6..089c686fc 100644 --- a/prometheus-metrics-exporter-pushgateway/src/main/java/io/prometheus/metrics/exporter/pushgateway/Format.java +++ b/prometheus-metrics-exporter-pushgateway/src/main/java/io/prometheus/metrics/exporter/pushgateway/Format.java @@ -1,5 +1,8 @@ package io.prometheus.metrics.exporter.pushgateway; +import io.prometheus.metrics.annotations.StableApi; + +@StableApi public enum Format { PROMETHEUS_PROTOBUF, PROMETHEUS_TEXT diff --git a/prometheus-metrics-exporter-pushgateway/src/main/java/io/prometheus/metrics/exporter/pushgateway/HttpConnectionFactory.java b/prometheus-metrics-exporter-pushgateway/src/main/java/io/prometheus/metrics/exporter/pushgateway/HttpConnectionFactory.java index f7a039af7..7b112bb4d 100644 --- a/prometheus-metrics-exporter-pushgateway/src/main/java/io/prometheus/metrics/exporter/pushgateway/HttpConnectionFactory.java +++ b/prometheus-metrics-exporter-pushgateway/src/main/java/io/prometheus/metrics/exporter/pushgateway/HttpConnectionFactory.java @@ -1,11 +1,13 @@ package io.prometheus.metrics.exporter.pushgateway; +import io.prometheus.metrics.annotations.StableApi; import java.io.IOException; import java.net.HttpURLConnection; import java.net.URL; /** See {@link DefaultHttpConnectionFactory}. */ @FunctionalInterface +@StableApi public interface HttpConnectionFactory { HttpURLConnection create(URL url) throws IOException; } diff --git a/prometheus-metrics-exporter-pushgateway/src/main/java/io/prometheus/metrics/exporter/pushgateway/PushGateway.java b/prometheus-metrics-exporter-pushgateway/src/main/java/io/prometheus/metrics/exporter/pushgateway/PushGateway.java index 594132cf2..5bf26b6c1 100644 --- a/prometheus-metrics-exporter-pushgateway/src/main/java/io/prometheus/metrics/exporter/pushgateway/PushGateway.java +++ b/prometheus-metrics-exporter-pushgateway/src/main/java/io/prometheus/metrics/exporter/pushgateway/PushGateway.java @@ -4,6 +4,7 @@ import static io.prometheus.metrics.model.snapshots.PrometheusNaming.escapeName; import static java.util.Objects.requireNonNull; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.EscapingScheme; import io.prometheus.metrics.config.ExporterPushgatewayProperties; import io.prometheus.metrics.config.PrometheusProperties; @@ -79,6 +80,7 @@ *

See https://github.com/prometheus/pushgateway. */ +@StableApi public class PushGateway { private final URL url; private final ExpositionFormatWriter writer; diff --git a/prometheus-metrics-exporter-pushgateway/src/main/java/io/prometheus/metrics/exporter/pushgateway/Scheme.java b/prometheus-metrics-exporter-pushgateway/src/main/java/io/prometheus/metrics/exporter/pushgateway/Scheme.java index 51a2e32dd..1ade4efdb 100644 --- a/prometheus-metrics-exporter-pushgateway/src/main/java/io/prometheus/metrics/exporter/pushgateway/Scheme.java +++ b/prometheus-metrics-exporter-pushgateway/src/main/java/io/prometheus/metrics/exporter/pushgateway/Scheme.java @@ -1,5 +1,8 @@ package io.prometheus.metrics.exporter.pushgateway; +import io.prometheus.metrics.annotations.StableApi; + +@StableApi public enum Scheme { HTTP("http"), HTTPS("https"); diff --git a/prometheus-metrics-exporter-servlet-jakarta/pom.xml b/prometheus-metrics-exporter-servlet-jakarta/pom.xml index 7ad2f482e..f55138c6e 100644 --- a/prometheus-metrics-exporter-servlet-jakarta/pom.xml +++ b/prometheus-metrics-exporter-servlet-jakarta/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT prometheus-metrics-exporter-servlet-jakarta @@ -22,6 +22,12 @@ + + io.prometheus + prometheus-metrics-annotations + ${project.version} + true + io.prometheus prometheus-metrics-exporter-common diff --git a/prometheus-metrics-exporter-servlet-jakarta/src/main/java/io/prometheus/metrics/exporter/servlet/jakarta/PrometheusMetricsServlet.java b/prometheus-metrics-exporter-servlet-jakarta/src/main/java/io/prometheus/metrics/exporter/servlet/jakarta/PrometheusMetricsServlet.java index 5e22fc3fd..68153f761 100644 --- a/prometheus-metrics-exporter-servlet-jakarta/src/main/java/io/prometheus/metrics/exporter/servlet/jakarta/PrometheusMetricsServlet.java +++ b/prometheus-metrics-exporter-servlet-jakarta/src/main/java/io/prometheus/metrics/exporter/servlet/jakarta/PrometheusMetricsServlet.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.exporter.servlet.jakarta; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.exporter.common.PrometheusScrapeHandler; import io.prometheus.metrics.model.registry.PrometheusRegistry; @@ -14,6 +15,7 @@ *

We'll add a Jakarta servlet, the built-in HTTPServer, etc. soon, and likely move common code * into a common module. */ +@StableApi public class PrometheusMetricsServlet extends HttpServlet { private static final long serialVersionUID = 0L; diff --git a/prometheus-metrics-exporter-servlet-javax/pom.xml b/prometheus-metrics-exporter-servlet-javax/pom.xml index 53df64c8d..1e1f0d948 100644 --- a/prometheus-metrics-exporter-servlet-javax/pom.xml +++ b/prometheus-metrics-exporter-servlet-javax/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT prometheus-metrics-exporter-servlet-javax @@ -29,6 +29,12 @@ + + io.prometheus + prometheus-metrics-annotations + ${project.version} + true + io.prometheus prometheus-metrics-exporter-common diff --git a/prometheus-metrics-exporter-servlet-javax/src/main/java/io/prometheus/metrics/exporter/servlet/javax/PrometheusMetricsServlet.java b/prometheus-metrics-exporter-servlet-javax/src/main/java/io/prometheus/metrics/exporter/servlet/javax/PrometheusMetricsServlet.java index a486aec93..aa2e3e3a9 100644 --- a/prometheus-metrics-exporter-servlet-javax/src/main/java/io/prometheus/metrics/exporter/servlet/javax/PrometheusMetricsServlet.java +++ b/prometheus-metrics-exporter-servlet-javax/src/main/java/io/prometheus/metrics/exporter/servlet/javax/PrometheusMetricsServlet.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.exporter.servlet.javax; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.exporter.common.PrometheusScrapeHandler; import io.prometheus.metrics.model.registry.PrometheusRegistry; @@ -13,6 +14,7 @@ * PrometheusScrapeHandler to handle HTTP GET requests and export metrics. The servlet can be * configured with custom PrometheusProperties and a PrometheusRegistry. */ +@StableApi public class PrometheusMetricsServlet extends HttpServlet { private static final long serialVersionUID = 0L; diff --git a/prometheus-metrics-exposition-formats-shaded/pom.xml b/prometheus-metrics-exposition-formats-shaded/pom.xml index 1d7d33684..1bf083694 100644 --- a/prometheus-metrics-exposition-formats-shaded/pom.xml +++ b/prometheus-metrics-exposition-formats-shaded/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT prometheus-metrics-exposition-formats diff --git a/prometheus-metrics-exposition-formats/generate-protobuf.sh b/prometheus-metrics-exposition-formats/generate-protobuf.sh index f1526fb1c..97b82e280 100755 --- a/prometheus-metrics-exposition-formats/generate-protobuf.sh +++ b/prometheus-metrics-exposition-formats/generate-protobuf.sh @@ -59,6 +59,6 @@ STATUS=$(git status --porcelain) if [[ ${REQUIRE_PROTO_UP_TO_DATE:-false} == "true" && -n "$STATUS" ]]; then help echo "Local changes:" - echo "$STATUS" + git diff exit 1 fi diff --git a/prometheus-metrics-exposition-formats/pom.xml b/prometheus-metrics-exposition-formats/pom.xml index 3ee43e3a1..4150b9ef9 100644 --- a/prometheus-metrics-exposition-formats/pom.xml +++ b/prometheus-metrics-exposition-formats/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT prometheus-metrics-exposition-formats-no-protobuf diff --git a/prometheus-metrics-exposition-formats/src/main/generated/io/prometheus/metrics/expositionformats/generated/com_google_protobuf_4_34_1/Metrics.java b/prometheus-metrics-exposition-formats/src/main/generated/io/prometheus/metrics/expositionformats/generated/com_google_protobuf_4_35_0/Metrics.java similarity index 88% rename from prometheus-metrics-exposition-formats/src/main/generated/io/prometheus/metrics/expositionformats/generated/com_google_protobuf_4_34_1/Metrics.java rename to prometheus-metrics-exposition-formats/src/main/generated/io/prometheus/metrics/expositionformats/generated/com_google_protobuf_4_35_0/Metrics.java index a73297fff..cb15f5a2a 100644 --- a/prometheus-metrics-exposition-formats/src/main/generated/io/prometheus/metrics/expositionformats/generated/com_google_protobuf_4_34_1/Metrics.java +++ b/prometheus-metrics-exposition-formats/src/main/generated/io/prometheus/metrics/expositionformats/generated/com_google_protobuf_4_35_0/Metrics.java @@ -2,9 +2,9 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // NO CHECKED-IN PROTOBUF GENCODE // source: src/main/protobuf/metrics.proto -// Protobuf Java Version: 4.34.1 +// Protobuf Java Version: 4.35.0 -package io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1; +package io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0; @com.google.protobuf.Generated public class Metrics extends com.google.protobuf.GeneratedFile { @@ -13,8 +13,8 @@ protected Metrics() {} com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, /* major= */ 4, - /* minor= */ 34, - /* patch= */ 1, + /* minor= */ 35, + /* patch= */ 0, /* suffix= */ "", "Metrics"); } @@ -86,8 +86,8 @@ public enum MetricType com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, /* major= */ 4, - /* minor= */ 34, - /* patch= */ 1, + /* minor= */ 35, + /* patch= */ 0, /* suffix= */ "", "MetricType"); } @@ -193,7 +193,7 @@ public MetricType findValueByNumber(int number) { } public static com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.getDescriptor().getEnumType(0); + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.getDescriptor().getEnumType(0); } private static final MetricType[] VALUES = values(); @@ -266,8 +266,8 @@ public static final class LabelPair extends com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, /* major= */ 4, - /* minor= */ 34, - /* patch= */ 1, + /* minor= */ 35, + /* patch= */ 0, /* suffix= */ "", "LabelPair"); } @@ -282,20 +282,20 @@ private LabelPair() { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_LabelPair_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_LabelPair_descriptor; } @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_LabelPair_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_LabelPair_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_LabelPair_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_LabelPair_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair.Builder.class); } private int bitField0_; @@ -419,19 +419,23 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) } getUnknownFields().writeTo(output); } - - @java.lang.Override - public int getSerializedSize() { - int size = memoizedSize; - if (size != -1) return size; - - size = 0; + private int computeSerializedSize_0() { + int size = 0; if (((bitField0_ & 0x00000001) != 0)) { size += com.google.protobuf.GeneratedMessage.computeStringSize(1, name_); } if (((bitField0_ & 0x00000002) != 0)) { size += com.google.protobuf.GeneratedMessage.computeStringSize(2, value_); } + return size; + } + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += computeSerializedSize_0(); size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -442,10 +446,10 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair)) { + if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair)) { return super.equals(obj); } - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair) obj; + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair) obj; if (hasName() != other.hasName()) return false; if (hasName()) { @@ -481,44 +485,44 @@ public int hashCode() { return hash; } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair parseFrom(byte[] data) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair parseFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -526,26 +530,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto .parseWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair parseDelimitedFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair parseDelimitedFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -558,7 +562,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto public static Builder newBuilder() { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair prototype) { + public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @java.lang.Override @@ -579,21 +583,21 @@ protected Builder newBuilderForType( public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder implements // @@protoc_insertion_point(builder_implements:io.prometheus.client.LabelPair) - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPairOrBuilder { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPairOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_LabelPair_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_LabelPair_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_LabelPair_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_LabelPair_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair.Builder.class); } - // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair.newBuilder() + // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair.newBuilder() private Builder() { } @@ -615,17 +619,17 @@ public Builder clear() { @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_LabelPair_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_LabelPair_descriptor; } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair getDefaultInstanceForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair.getDefaultInstance(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair getDefaultInstanceForType() { + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair.getDefaultInstance(); } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair build() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair result = buildPartial(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair build() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -633,14 +637,14 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair buildPartial() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair(this); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair buildPartial() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair(this); if (bitField0_ != 0) { buildPartial0(result); } onBuilt(); return result; } - private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair result) { + private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair result) { int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) != 0)) { @@ -656,16 +660,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair) { - return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair)other); + if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair) { + return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair other) { - if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair.getDefaultInstance()) return this; + public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair other) { + if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair.getDefaultInstance()) return this; if (other.hasName()) { name_ = other.name_; bitField0_ |= 0x00000001; @@ -893,12 +897,12 @@ public Builder setValueBytes( } // @@protoc_insertion_point(class_scope:io.prometheus.client.LabelPair) - private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair DEFAULT_INSTANCE; + private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair(); + DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair(); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair getDefaultInstance() { + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair getDefaultInstance() { return DEFAULT_INSTANCE; } @@ -934,7 +938,7 @@ public com.google.protobuf.Parser getParserForType() { } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair getDefaultInstanceForType() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -967,8 +971,8 @@ public static final class Gauge extends com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, /* major= */ 4, - /* minor= */ 34, - /* patch= */ 1, + /* minor= */ 35, + /* patch= */ 0, /* suffix= */ "", "Gauge"); } @@ -981,20 +985,20 @@ private Gauge() { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Gauge_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Gauge_descriptor; } @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Gauge_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Gauge_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Gauge_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Gauge_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge.Builder.class); } private int bitField0_; @@ -1036,17 +1040,21 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) } getUnknownFields().writeTo(output); } - + private int computeSerializedSize_0() { + int size = 0; + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeDoubleSize(1, value_); + } + return size; + } @java.lang.Override public int getSerializedSize() { int size = memoizedSize; if (size != -1) return size; size = 0; - if (((bitField0_ & 0x00000001) != 0)) { - size += com.google.protobuf.CodedOutputStream - .computeDoubleSize(1, value_); - } + size += computeSerializedSize_0(); size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -1057,10 +1065,10 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge)) { + if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge)) { return super.equals(obj); } - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge) obj; + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge) obj; if (hasValue() != other.hasValue()) return false; if (hasValue()) { @@ -1089,44 +1097,44 @@ public int hashCode() { return hash; } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge parseFrom(byte[] data) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge parseFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -1134,26 +1142,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto .parseWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge parseDelimitedFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge parseDelimitedFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -1166,7 +1174,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto public static Builder newBuilder() { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge prototype) { + public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @java.lang.Override @@ -1187,21 +1195,21 @@ protected Builder newBuilderForType( public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder implements // @@protoc_insertion_point(builder_implements:io.prometheus.client.Gauge) - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.GaugeOrBuilder { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.GaugeOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Gauge_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Gauge_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Gauge_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Gauge_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge.Builder.class); } - // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge.newBuilder() + // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge.newBuilder() private Builder() { } @@ -1222,17 +1230,17 @@ public Builder clear() { @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Gauge_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Gauge_descriptor; } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge getDefaultInstanceForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge.getDefaultInstance(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge getDefaultInstanceForType() { + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge.getDefaultInstance(); } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge build() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge result = buildPartial(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge build() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -1240,14 +1248,14 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge buildPartial() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge(this); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge buildPartial() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge(this); if (bitField0_ != 0) { buildPartial0(result); } onBuilt(); return result; } - private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge result) { + private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge result) { int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) != 0)) { @@ -1259,16 +1267,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge) { - return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge)other); + if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge) { + return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge other) { - if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge.getDefaultInstance()) return this; + public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge other) { + if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge.getDefaultInstance()) return this; if (other.hasValue()) { setValue(other.getValue()); } @@ -1364,12 +1372,12 @@ public Builder clearValue() { } // @@protoc_insertion_point(class_scope:io.prometheus.client.Gauge) - private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge DEFAULT_INSTANCE; + private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge(); + DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge(); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge getDefaultInstance() { + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge getDefaultInstance() { return DEFAULT_INSTANCE; } @@ -1405,7 +1413,7 @@ public com.google.protobuf.Parser getParserForType() { } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge getDefaultInstanceForType() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -1435,11 +1443,11 @@ public interface CounterOrBuilder extends * optional .io.prometheus.client.Exemplar exemplar = 2; * @return The exemplar. */ - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar getExemplar(); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar getExemplar(); /** * optional .io.prometheus.client.Exemplar exemplar = 2; */ - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.ExemplarOrBuilder getExemplarOrBuilder(); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.ExemplarOrBuilder getExemplarOrBuilder(); /** * optional .google.protobuf.Timestamp created_timestamp = 3; @@ -1468,8 +1476,8 @@ public static final class Counter extends com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, /* major= */ 4, - /* minor= */ 34, - /* patch= */ 1, + /* minor= */ 35, + /* patch= */ 0, /* suffix= */ "", "Counter"); } @@ -1482,20 +1490,20 @@ private Counter() { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Counter_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Counter_descriptor; } @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Counter_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Counter_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Counter_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Counter_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter.Builder.class); } private int bitField0_; @@ -1519,7 +1527,7 @@ public double getValue() { } public static final int EXEMPLAR_FIELD_NUMBER = 2; - private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar exemplar_; + private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar exemplar_; /** * optional .io.prometheus.client.Exemplar exemplar = 2; * @return Whether the exemplar field is set. @@ -1533,15 +1541,15 @@ public boolean hasExemplar() { * @return The exemplar. */ @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar getExemplar() { - return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.getDefaultInstance() : exemplar_; + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar getExemplar() { + return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.getDefaultInstance() : exemplar_; } /** * optional .io.prometheus.client.Exemplar exemplar = 2; */ @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.ExemplarOrBuilder getExemplarOrBuilder() { - return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.getDefaultInstance() : exemplar_; + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.ExemplarOrBuilder getExemplarOrBuilder() { + return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.getDefaultInstance() : exemplar_; } public static final int CREATED_TIMESTAMP_FIELD_NUMBER = 3; @@ -1595,13 +1603,8 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) } getUnknownFields().writeTo(output); } - - @java.lang.Override - public int getSerializedSize() { - int size = memoizedSize; - if (size != -1) return size; - - size = 0; + private int computeSerializedSize_0() { + int size = 0; if (((bitField0_ & 0x00000001) != 0)) { size += com.google.protobuf.CodedOutputStream .computeDoubleSize(1, value_); @@ -1614,6 +1617,15 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeMessageSize(3, getCreatedTimestamp()); } + return size; + } + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += computeSerializedSize_0(); size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -1624,10 +1636,10 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter)) { + if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter)) { return super.equals(obj); } - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter) obj; + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter) obj; if (hasValue() != other.hasValue()) return false; if (hasValue()) { @@ -1674,44 +1686,44 @@ public int hashCode() { return hash; } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter parseFrom(byte[] data) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter parseFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -1719,26 +1731,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto .parseWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter parseDelimitedFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter parseDelimitedFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -1751,7 +1763,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto public static Builder newBuilder() { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter prototype) { + public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @java.lang.Override @@ -1772,21 +1784,21 @@ protected Builder newBuilderForType( public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder implements // @@protoc_insertion_point(builder_implements:io.prometheus.client.Counter) - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.CounterOrBuilder { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.CounterOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Counter_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Counter_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Counter_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Counter_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter.Builder.class); } - // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter.newBuilder() + // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -1824,17 +1836,17 @@ public Builder clear() { @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Counter_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Counter_descriptor; } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter getDefaultInstanceForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter.getDefaultInstance(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter getDefaultInstanceForType() { + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter.getDefaultInstance(); } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter build() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter result = buildPartial(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter build() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -1842,14 +1854,14 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter buildPartial() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter(this); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter buildPartial() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter(this); if (bitField0_ != 0) { buildPartial0(result); } onBuilt(); return result; } - private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter result) { + private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter result) { int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) != 0)) { @@ -1873,16 +1885,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter) { - return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter)other); + if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter) { + return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter other) { - if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter.getDefaultInstance()) return this; + public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter other) { + if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter.getDefaultInstance()) return this; if (other.hasValue()) { setValue(other.getValue()); } @@ -1994,9 +2006,9 @@ public Builder clearValue() { return this; } - private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar exemplar_; + private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar exemplar_; private com.google.protobuf.SingleFieldBuilder< - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.ExemplarOrBuilder> exemplarBuilder_; + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.ExemplarOrBuilder> exemplarBuilder_; /** * optional .io.prometheus.client.Exemplar exemplar = 2; * @return Whether the exemplar field is set. @@ -2008,9 +2020,9 @@ public boolean hasExemplar() { * optional .io.prometheus.client.Exemplar exemplar = 2; * @return The exemplar. */ - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar getExemplar() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar getExemplar() { if (exemplarBuilder_ == null) { - return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.getDefaultInstance() : exemplar_; + return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.getDefaultInstance() : exemplar_; } else { return exemplarBuilder_.getMessage(); } @@ -2018,7 +2030,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 /** * optional .io.prometheus.client.Exemplar exemplar = 2; */ - public Builder setExemplar(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar value) { + public Builder setExemplar(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar value) { if (exemplarBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -2035,7 +2047,7 @@ public Builder setExemplar(io.prometheus.metrics.expositionformats.generated.com * optional .io.prometheus.client.Exemplar exemplar = 2; */ public Builder setExemplar( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.Builder builderForValue) { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.Builder builderForValue) { if (exemplarBuilder_ == null) { exemplar_ = builderForValue.build(); } else { @@ -2048,11 +2060,11 @@ public Builder setExemplar( /** * optional .io.prometheus.client.Exemplar exemplar = 2; */ - public Builder mergeExemplar(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar value) { + public Builder mergeExemplar(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar value) { if (exemplarBuilder_ == null) { if (((bitField0_ & 0x00000002) != 0) && exemplar_ != null && - exemplar_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.getDefaultInstance()) { + exemplar_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.getDefaultInstance()) { getExemplarBuilder().mergeFrom(value); } else { exemplar_ = value; @@ -2082,7 +2094,7 @@ public Builder clearExemplar() { /** * optional .io.prometheus.client.Exemplar exemplar = 2; */ - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.Builder getExemplarBuilder() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.Builder getExemplarBuilder() { bitField0_ |= 0x00000002; onChanged(); return internalGetExemplarFieldBuilder().getBuilder(); @@ -2090,23 +2102,23 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 /** * optional .io.prometheus.client.Exemplar exemplar = 2; */ - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.ExemplarOrBuilder getExemplarOrBuilder() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.ExemplarOrBuilder getExemplarOrBuilder() { if (exemplarBuilder_ != null) { return exemplarBuilder_.getMessageOrBuilder(); } else { return exemplar_ == null ? - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.getDefaultInstance() : exemplar_; + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.getDefaultInstance() : exemplar_; } } /** * optional .io.prometheus.client.Exemplar exemplar = 2; */ private com.google.protobuf.SingleFieldBuilder< - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.ExemplarOrBuilder> + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.ExemplarOrBuilder> internalGetExemplarFieldBuilder() { if (exemplarBuilder_ == null) { exemplarBuilder_ = new com.google.protobuf.SingleFieldBuilder< - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.ExemplarOrBuilder>( + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.ExemplarOrBuilder>( getExemplar(), getParentForChildren(), isClean()); @@ -2240,12 +2252,12 @@ public com.google.protobuf.TimestampOrBuilder getCreatedTimestampOrBuilder() { } // @@protoc_insertion_point(class_scope:io.prometheus.client.Counter) - private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter DEFAULT_INSTANCE; + private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter(); + DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter(); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter getDefaultInstance() { + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter getDefaultInstance() { return DEFAULT_INSTANCE; } @@ -2281,7 +2293,7 @@ public com.google.protobuf.Parser getParserForType() { } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter getDefaultInstanceForType() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -2325,8 +2337,8 @@ public static final class Quantile extends com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, /* major= */ 4, - /* minor= */ 34, - /* patch= */ 1, + /* minor= */ 35, + /* patch= */ 0, /* suffix= */ "", "Quantile"); } @@ -2339,20 +2351,20 @@ private Quantile() { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Quantile_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Quantile_descriptor; } @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Quantile_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Quantile_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Quantile_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Quantile_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile.Builder.class); } private int bitField0_; @@ -2416,13 +2428,8 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) } getUnknownFields().writeTo(output); } - - @java.lang.Override - public int getSerializedSize() { - int size = memoizedSize; - if (size != -1) return size; - - size = 0; + private int computeSerializedSize_0() { + int size = 0; if (((bitField0_ & 0x00000001) != 0)) { size += com.google.protobuf.CodedOutputStream .computeDoubleSize(1, quantile_); @@ -2431,6 +2438,15 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeDoubleSize(2, value_); } + return size; + } + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += computeSerializedSize_0(); size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -2441,10 +2457,10 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile)) { + if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile)) { return super.equals(obj); } - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile) obj; + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile) obj; if (hasQuantile() != other.hasQuantile()) return false; if (hasQuantile()) { @@ -2484,44 +2500,44 @@ public int hashCode() { return hash; } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile parseFrom(byte[] data) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile parseFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -2529,26 +2545,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto .parseWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile parseDelimitedFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile parseDelimitedFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -2561,7 +2577,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto public static Builder newBuilder() { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile prototype) { + public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @java.lang.Override @@ -2582,21 +2598,21 @@ protected Builder newBuilderForType( public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder implements // @@protoc_insertion_point(builder_implements:io.prometheus.client.Quantile) - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.QuantileOrBuilder { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.QuantileOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Quantile_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Quantile_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Quantile_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Quantile_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile.Builder.class); } - // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile.newBuilder() + // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile.newBuilder() private Builder() { } @@ -2618,17 +2634,17 @@ public Builder clear() { @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Quantile_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Quantile_descriptor; } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile getDefaultInstanceForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile.getDefaultInstance(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile getDefaultInstanceForType() { + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile.getDefaultInstance(); } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile build() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile result = buildPartial(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile build() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -2636,14 +2652,14 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile buildPartial() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile(this); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile buildPartial() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile(this); if (bitField0_ != 0) { buildPartial0(result); } onBuilt(); return result; } - private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile result) { + private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile result) { int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) != 0)) { @@ -2659,16 +2675,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile) { - return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile)other); + if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile) { + return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile other) { - if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile.getDefaultInstance()) return this; + public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile other) { + if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile.getDefaultInstance()) return this; if (other.hasQuantile()) { setQuantile(other.getQuantile()); } @@ -2812,12 +2828,12 @@ public Builder clearValue() { } // @@protoc_insertion_point(class_scope:io.prometheus.client.Quantile) - private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile DEFAULT_INSTANCE; + private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile(); + DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile(); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile getDefaultInstance() { + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile getDefaultInstance() { return DEFAULT_INSTANCE; } @@ -2853,7 +2869,7 @@ public com.google.protobuf.Parser getParserForType() { } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile getDefaultInstanceForType() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -2888,12 +2904,12 @@ public interface SummaryOrBuilder extends /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - java.util.List + java.util.List getQuantileList(); /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile getQuantile(int index); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile getQuantile(int index); /** * repeated .io.prometheus.client.Quantile quantile = 3; */ @@ -2901,12 +2917,12 @@ public interface SummaryOrBuilder extends /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - java.util.List + java.util.List getQuantileOrBuilderList(); /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.QuantileOrBuilder getQuantileOrBuilder( + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.QuantileOrBuilder getQuantileOrBuilder( int index); /** @@ -2936,8 +2952,8 @@ public static final class Summary extends com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, /* major= */ 4, - /* minor= */ 34, - /* patch= */ 1, + /* minor= */ 35, + /* patch= */ 0, /* suffix= */ "", "Summary"); } @@ -2951,20 +2967,20 @@ private Summary() { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Summary_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Summary_descriptor; } @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Summary_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Summary_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Summary_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Summary_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary.Builder.class); } private int bitField0_; @@ -3008,19 +3024,19 @@ public double getSampleSum() { public static final int QUANTILE_FIELD_NUMBER = 3; @SuppressWarnings("serial") - private java.util.List quantile_; + private java.util.List quantile_; /** * repeated .io.prometheus.client.Quantile quantile = 3; */ @java.lang.Override - public java.util.List getQuantileList() { + public java.util.List getQuantileList() { return quantile_; } /** * repeated .io.prometheus.client.Quantile quantile = 3; */ @java.lang.Override - public java.util.List + public java.util.List getQuantileOrBuilderList() { return quantile_; } @@ -3035,14 +3051,14 @@ public int getQuantileCount() { * repeated .io.prometheus.client.Quantile quantile = 3; */ @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile getQuantile(int index) { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile getQuantile(int index) { return quantile_.get(index); } /** * repeated .io.prometheus.client.Quantile quantile = 3; */ @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.QuantileOrBuilder getQuantileOrBuilder( + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.QuantileOrBuilder getQuantileOrBuilder( int index) { return quantile_.get(index); } @@ -3101,13 +3117,8 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) } getUnknownFields().writeTo(output); } - - @java.lang.Override - public int getSerializedSize() { - int size = memoizedSize; - if (size != -1) return size; - - size = 0; + private int computeSerializedSize_0() { + int size = 0; if (((bitField0_ & 0x00000001) != 0)) { size += com.google.protobuf.CodedOutputStream .computeUInt64Size(1, sampleCount_); @@ -3129,6 +3140,15 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeMessageSize(4, getCreatedTimestamp()); } + return size; + } + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += computeSerializedSize_0(); size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -3139,10 +3159,10 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary)) { + if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary)) { return super.equals(obj); } - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary) obj; + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary) obj; if (hasSampleCount() != other.hasSampleCount()) return false; if (hasSampleCount()) { @@ -3196,44 +3216,44 @@ public int hashCode() { return hash; } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary parseFrom(byte[] data) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary parseFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -3241,26 +3261,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto .parseWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary parseDelimitedFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary parseDelimitedFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -3273,7 +3293,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto public static Builder newBuilder() { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary prototype) { + public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @java.lang.Override @@ -3294,21 +3314,21 @@ protected Builder newBuilderForType( public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder implements // @@protoc_insertion_point(builder_implements:io.prometheus.client.Summary) - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.SummaryOrBuilder { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.SummaryOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Summary_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Summary_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Summary_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Summary_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary.Builder.class); } - // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary.newBuilder() + // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -3349,17 +3369,17 @@ public Builder clear() { @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Summary_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Summary_descriptor; } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary getDefaultInstanceForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary.getDefaultInstance(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary getDefaultInstanceForType() { + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary.getDefaultInstance(); } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary build() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary result = buildPartial(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary build() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -3367,15 +3387,15 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary buildPartial() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary(this); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary buildPartial() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary(this); buildPartialRepeatedFields(result); if (bitField0_ != 0) { buildPartial0(result); } onBuilt(); return result; } - private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary result) { + private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary result) { if (quantileBuilder_ == null) { if (((bitField0_ & 0x00000004) != 0)) { quantile_ = java.util.Collections.unmodifiableList(quantile_); @@ -3387,7 +3407,7 @@ private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats. } } - private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary result) { + private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary result) { int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) != 0)) { @@ -3409,16 +3429,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary) { - return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary)other); + if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary) { + return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary other) { - if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary.getDefaultInstance()) return this; + public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary other) { + if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary.getDefaultInstance()) return this; if (other.hasSampleCount()) { setSampleCount(other.getSampleCount()); } @@ -3491,9 +3511,9 @@ public Builder mergeFrom( break; } // case 17 case 26: { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile m = + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile m = input.readMessage( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile.parser(), + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile.parser(), extensionRegistry); if (quantileBuilder_ == null) { ensureQuantileIsMutable(); @@ -3607,22 +3627,22 @@ public Builder clearSampleSum() { return this; } - private java.util.List quantile_ = + private java.util.List quantile_ = java.util.Collections.emptyList(); private void ensureQuantileIsMutable() { if (!((bitField0_ & 0x00000004) != 0)) { - quantile_ = new java.util.ArrayList(quantile_); + quantile_ = new java.util.ArrayList(quantile_); bitField0_ |= 0x00000004; } } private com.google.protobuf.RepeatedFieldBuilder< - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.QuantileOrBuilder> quantileBuilder_; + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.QuantileOrBuilder> quantileBuilder_; /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - public java.util.List getQuantileList() { + public java.util.List getQuantileList() { if (quantileBuilder_ == null) { return java.util.Collections.unmodifiableList(quantile_); } else { @@ -3642,7 +3662,7 @@ public int getQuantileCount() { /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile getQuantile(int index) { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile getQuantile(int index) { if (quantileBuilder_ == null) { return quantile_.get(index); } else { @@ -3653,7 +3673,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 * repeated .io.prometheus.client.Quantile quantile = 3; */ public Builder setQuantile( - int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile value) { + int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile value) { if (quantileBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -3670,7 +3690,7 @@ public Builder setQuantile( * repeated .io.prometheus.client.Quantile quantile = 3; */ public Builder setQuantile( - int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile.Builder builderForValue) { + int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile.Builder builderForValue) { if (quantileBuilder_ == null) { ensureQuantileIsMutable(); quantile_.set(index, builderForValue.build()); @@ -3683,7 +3703,7 @@ public Builder setQuantile( /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - public Builder addQuantile(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile value) { + public Builder addQuantile(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile value) { if (quantileBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -3700,7 +3720,7 @@ public Builder addQuantile(io.prometheus.metrics.expositionformats.generated.com * repeated .io.prometheus.client.Quantile quantile = 3; */ public Builder addQuantile( - int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile value) { + int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile value) { if (quantileBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -3717,7 +3737,7 @@ public Builder addQuantile( * repeated .io.prometheus.client.Quantile quantile = 3; */ public Builder addQuantile( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile.Builder builderForValue) { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile.Builder builderForValue) { if (quantileBuilder_ == null) { ensureQuantileIsMutable(); quantile_.add(builderForValue.build()); @@ -3731,7 +3751,7 @@ public Builder addQuantile( * repeated .io.prometheus.client.Quantile quantile = 3; */ public Builder addQuantile( - int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile.Builder builderForValue) { + int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile.Builder builderForValue) { if (quantileBuilder_ == null) { ensureQuantileIsMutable(); quantile_.add(index, builderForValue.build()); @@ -3745,7 +3765,7 @@ public Builder addQuantile( * repeated .io.prometheus.client.Quantile quantile = 3; */ public Builder addAllQuantile( - java.lang.Iterable values) { + java.lang.Iterable values) { if (quantileBuilder_ == null) { ensureQuantileIsMutable(); com.google.protobuf.AbstractMessageLite.Builder.addAll( @@ -3785,14 +3805,14 @@ public Builder removeQuantile(int index) { /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile.Builder getQuantileBuilder( + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile.Builder getQuantileBuilder( int index) { return internalGetQuantileFieldBuilder().getBuilder(index); } /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.QuantileOrBuilder getQuantileOrBuilder( + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.QuantileOrBuilder getQuantileOrBuilder( int index) { if (quantileBuilder_ == null) { return quantile_.get(index); } else { @@ -3802,7 +3822,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - public java.util.List + public java.util.List getQuantileOrBuilderList() { if (quantileBuilder_ != null) { return quantileBuilder_.getMessageOrBuilderList(); @@ -3813,31 +3833,31 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile.Builder addQuantileBuilder() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile.Builder addQuantileBuilder() { return internalGetQuantileFieldBuilder().addBuilder( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile.getDefaultInstance()); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile.getDefaultInstance()); } /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile.Builder addQuantileBuilder( + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile.Builder addQuantileBuilder( int index) { return internalGetQuantileFieldBuilder().addBuilder( - index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile.getDefaultInstance()); + index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile.getDefaultInstance()); } /** * repeated .io.prometheus.client.Quantile quantile = 3; */ - public java.util.List + public java.util.List getQuantileBuilderList() { return internalGetQuantileFieldBuilder().getBuilderList(); } private com.google.protobuf.RepeatedFieldBuilder< - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.QuantileOrBuilder> + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.QuantileOrBuilder> internalGetQuantileFieldBuilder() { if (quantileBuilder_ == null) { quantileBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Quantile.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.QuantileOrBuilder>( + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Quantile.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.QuantileOrBuilder>( quantile_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), @@ -3972,12 +3992,12 @@ public com.google.protobuf.TimestampOrBuilder getCreatedTimestampOrBuilder() { } // @@protoc_insertion_point(class_scope:io.prometheus.client.Summary) - private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary DEFAULT_INSTANCE; + private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary(); + DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary(); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary getDefaultInstance() { + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary getDefaultInstance() { return DEFAULT_INSTANCE; } @@ -4013,7 +4033,7 @@ public com.google.protobuf.Parser

getParserForType() { } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary getDefaultInstanceForType() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -4046,8 +4066,8 @@ public static final class Untyped extends com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, /* major= */ 4, - /* minor= */ 34, - /* patch= */ 1, + /* minor= */ 35, + /* patch= */ 0, /* suffix= */ "", "Untyped"); } @@ -4060,20 +4080,20 @@ private Untyped() { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Untyped_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Untyped_descriptor; } @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Untyped_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Untyped_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Untyped_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Untyped_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped.Builder.class); } private int bitField0_; @@ -4115,17 +4135,21 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) } getUnknownFields().writeTo(output); } - + private int computeSerializedSize_0() { + int size = 0; + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeDoubleSize(1, value_); + } + return size; + } @java.lang.Override public int getSerializedSize() { int size = memoizedSize; if (size != -1) return size; size = 0; - if (((bitField0_ & 0x00000001) != 0)) { - size += com.google.protobuf.CodedOutputStream - .computeDoubleSize(1, value_); - } + size += computeSerializedSize_0(); size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -4136,10 +4160,10 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped)) { + if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped)) { return super.equals(obj); } - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped) obj; + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped) obj; if (hasValue() != other.hasValue()) return false; if (hasValue()) { @@ -4168,44 +4192,44 @@ public int hashCode() { return hash; } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped parseFrom(byte[] data) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped parseFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -4213,26 +4237,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto .parseWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped parseDelimitedFrom(java.io.InputStream input) + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped parseDelimitedFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessage .parseWithIOException(PARSER, input); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped parseFrom( + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -4245,7 +4269,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto public static Builder newBuilder() { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped prototype) { + public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @java.lang.Override @@ -4266,21 +4290,21 @@ protected Builder newBuilderForType( public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder implements // @@protoc_insertion_point(builder_implements:io.prometheus.client.Untyped) - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.UntypedOrBuilder { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.UntypedOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Untyped_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Untyped_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Untyped_fieldAccessorTable + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Untyped_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped.Builder.class); + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped.Builder.class); } - // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped.newBuilder() + // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped.newBuilder() private Builder() { } @@ -4301,17 +4325,17 @@ public Builder clear() { @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Untyped_descriptor; + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Untyped_descriptor; } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped getDefaultInstanceForType() { - return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped.getDefaultInstance(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped getDefaultInstanceForType() { + return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped.getDefaultInstance(); } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped build() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped result = buildPartial(); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped build() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -4319,14 +4343,14 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3 } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped buildPartial() { - io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped(this); + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped buildPartial() { + io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped(this); if (bitField0_ != 0) { buildPartial0(result); } onBuilt(); return result; } - private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped result) { + private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped result) { int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) != 0)) { @@ -4338,16 +4362,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped) { - return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped)other); + if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped) { + return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped other) { - if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped.getDefaultInstance()) return this; + public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped other) { + if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped.getDefaultInstance()) return this; if (other.hasValue()) { setValue(other.getValue()); } @@ -4443,12 +4467,12 @@ public Builder clearValue() { } // @@protoc_insertion_point(class_scope:io.prometheus.client.Untyped) - private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped DEFAULT_INSTANCE; + private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped(); + DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped(); } - public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped getDefaultInstance() { + public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped getDefaultInstance() { return DEFAULT_INSTANCE; } @@ -4484,7 +4508,7 @@ public com.google.protobuf.Parser getParserForType() { } @java.lang.Override - public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped getDefaultInstanceForType() { + public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -4542,7 +4566,7 @@ public interface HistogramOrBuilder extends * * repeated .io.prometheus.client.Bucket bucket = 3; */ - java.util.List + java.util.List getBucketList(); /** *
@@ -4551,7 +4575,7 @@ public interface HistogramOrBuilder extends
      *
      * repeated .io.prometheus.client.Bucket bucket = 3;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket getBucket(int index);
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket getBucket(int index);
     /**
      * 
      * Buckets for the conventional histogram.
@@ -4567,7 +4591,7 @@ public interface HistogramOrBuilder extends
      *
      * repeated .io.prometheus.client.Bucket bucket = 3;
      */
-    java.util.List 
+    java.util.List 
         getBucketOrBuilderList();
     /**
      * 
@@ -4576,7 +4600,7 @@ public interface HistogramOrBuilder extends
      *
      * repeated .io.prometheus.client.Bucket bucket = 3;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketOrBuilder getBucketOrBuilder(
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketOrBuilder getBucketOrBuilder(
         int index);
 
     /**
@@ -4685,7 +4709,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Met
      *
      * repeated .io.prometheus.client.BucketSpan negative_span = 9;
      */
-    java.util.List 
+    java.util.List 
         getNegativeSpanList();
     /**
      * 
@@ -4694,7 +4718,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Met
      *
      * repeated .io.prometheus.client.BucketSpan negative_span = 9;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan getNegativeSpan(int index);
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan getNegativeSpan(int index);
     /**
      * 
      * Negative buckets for the native histogram.
@@ -4710,7 +4734,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Met
      *
      * repeated .io.prometheus.client.BucketSpan negative_span = 9;
      */
-    java.util.List 
+    java.util.List 
         getNegativeSpanOrBuilderList();
     /**
      * 
@@ -4719,7 +4743,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Met
      *
      * repeated .io.prometheus.client.BucketSpan negative_span = 9;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpanOrBuilder getNegativeSpanOrBuilder(
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpanOrBuilder getNegativeSpanOrBuilder(
         int index);
 
     /**
@@ -4796,7 +4820,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Met
      *
      * repeated .io.prometheus.client.BucketSpan positive_span = 12;
      */
-    java.util.List 
+    java.util.List 
         getPositiveSpanList();
     /**
      * 
@@ -4808,7 +4832,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Met
      *
      * repeated .io.prometheus.client.BucketSpan positive_span = 12;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan getPositiveSpan(int index);
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan getPositiveSpan(int index);
     /**
      * 
      * Positive buckets for the native histogram.
@@ -4830,7 +4854,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Met
      *
      * repeated .io.prometheus.client.BucketSpan positive_span = 12;
      */
-    java.util.List 
+    java.util.List 
         getPositiveSpanOrBuilderList();
     /**
      * 
@@ -4842,7 +4866,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Met
      *
      * repeated .io.prometheus.client.BucketSpan positive_span = 12;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpanOrBuilder getPositiveSpanOrBuilder(
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpanOrBuilder getPositiveSpanOrBuilder(
         int index);
 
     /**
@@ -4916,7 +4940,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Met
      *
      * repeated .io.prometheus.client.Exemplar exemplars = 16;
      */
-    java.util.List 
+    java.util.List 
         getExemplarsList();
     /**
      * 
@@ -4925,7 +4949,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Met
      *
      * repeated .io.prometheus.client.Exemplar exemplars = 16;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar getExemplars(int index);
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar getExemplars(int index);
     /**
      * 
      * Only used for native histograms. These exemplars MUST have a timestamp.
@@ -4941,7 +4965,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Met
      *
      * repeated .io.prometheus.client.Exemplar exemplars = 16;
      */
-    java.util.List 
+    java.util.List 
         getExemplarsOrBuilderList();
     /**
      * 
@@ -4950,7 +4974,7 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Met
      *
      * repeated .io.prometheus.client.Exemplar exemplars = 16;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.ExemplarOrBuilder getExemplarsOrBuilder(
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.ExemplarOrBuilder getExemplarsOrBuilder(
         int index);
   }
   /**
@@ -4965,8 +4989,8 @@ public static final class Histogram extends
       com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
         com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
         /* major= */ 4,
-        /* minor= */ 34,
-        /* patch= */ 1,
+        /* minor= */ 35,
+        /* patch= */ 0,
         /* suffix= */ "",
         "Histogram");
     }
@@ -4987,20 +5011,20 @@ private Histogram() {
 
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Histogram_descriptor;
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Histogram_descriptor;
     }
 
     @java.lang.Override
     public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Histogram_descriptor;
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Histogram_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Histogram_fieldAccessorTable
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Histogram_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram.Builder.class);
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram.Builder.class);
     }
 
     private int bitField0_;
@@ -5071,7 +5095,7 @@ public double getSampleSum() {
 
     public static final int BUCKET_FIELD_NUMBER = 3;
     @SuppressWarnings("serial")
-    private java.util.List bucket_;
+    private java.util.List bucket_;
     /**
      * 
      * Buckets for the conventional histogram.
@@ -5080,7 +5104,7 @@ public double getSampleSum() {
      * repeated .io.prometheus.client.Bucket bucket = 3;
      */
     @java.lang.Override
-    public java.util.List getBucketList() {
+    public java.util.List getBucketList() {
       return bucket_;
     }
     /**
@@ -5091,7 +5115,7 @@ public java.util.Listrepeated .io.prometheus.client.Bucket bucket = 3;
      */
     @java.lang.Override
-    public java.util.List 
+    public java.util.List 
         getBucketOrBuilderList() {
       return bucket_;
     }
@@ -5114,7 +5138,7 @@ public int getBucketCount() {
      * repeated .io.prometheus.client.Bucket bucket = 3;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket getBucket(int index) {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket getBucket(int index) {
       return bucket_.get(index);
     }
     /**
@@ -5125,7 +5149,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
      * repeated .io.prometheus.client.Bucket bucket = 3;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketOrBuilder getBucketOrBuilder(
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketOrBuilder getBucketOrBuilder(
         int index) {
       return bucket_.get(index);
     }
@@ -5274,7 +5298,7 @@ public double getZeroCountFloat() {
 
     public static final int NEGATIVE_SPAN_FIELD_NUMBER = 9;
     @SuppressWarnings("serial")
-    private java.util.List negativeSpan_;
+    private java.util.List negativeSpan_;
     /**
      * 
      * Negative buckets for the native histogram.
@@ -5283,7 +5307,7 @@ public double getZeroCountFloat() {
      * repeated .io.prometheus.client.BucketSpan negative_span = 9;
      */
     @java.lang.Override
-    public java.util.List getNegativeSpanList() {
+    public java.util.List getNegativeSpanList() {
       return negativeSpan_;
     }
     /**
@@ -5294,7 +5318,7 @@ public java.util.Listrepeated .io.prometheus.client.BucketSpan negative_span = 9;
      */
     @java.lang.Override
-    public java.util.List 
+    public java.util.List 
         getNegativeSpanOrBuilderList() {
       return negativeSpan_;
     }
@@ -5317,7 +5341,7 @@ public int getNegativeSpanCount() {
      * repeated .io.prometheus.client.BucketSpan negative_span = 9;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan getNegativeSpan(int index) {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan getNegativeSpan(int index) {
       return negativeSpan_.get(index);
     }
     /**
@@ -5328,7 +5352,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
      * repeated .io.prometheus.client.BucketSpan negative_span = 9;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpanOrBuilder getNegativeSpanOrBuilder(
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpanOrBuilder getNegativeSpanOrBuilder(
         int index) {
       return negativeSpan_.get(index);
     }
@@ -5423,7 +5447,7 @@ public double getNegativeCount(int index) {
 
     public static final int POSITIVE_SPAN_FIELD_NUMBER = 12;
     @SuppressWarnings("serial")
-    private java.util.List positiveSpan_;
+    private java.util.List positiveSpan_;
     /**
      * 
      * Positive buckets for the native histogram.
@@ -5435,7 +5459,7 @@ public double getNegativeCount(int index) {
      * repeated .io.prometheus.client.BucketSpan positive_span = 12;
      */
     @java.lang.Override
-    public java.util.List getPositiveSpanList() {
+    public java.util.List getPositiveSpanList() {
       return positiveSpan_;
     }
     /**
@@ -5449,7 +5473,7 @@ public java.util.Listrepeated .io.prometheus.client.BucketSpan positive_span = 12;
      */
     @java.lang.Override
-    public java.util.List 
+    public java.util.List 
         getPositiveSpanOrBuilderList() {
       return positiveSpan_;
     }
@@ -5478,7 +5502,7 @@ public int getPositiveSpanCount() {
      * repeated .io.prometheus.client.BucketSpan positive_span = 12;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan getPositiveSpan(int index) {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan getPositiveSpan(int index) {
       return positiveSpan_.get(index);
     }
     /**
@@ -5492,7 +5516,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
      * repeated .io.prometheus.client.BucketSpan positive_span = 12;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpanOrBuilder getPositiveSpanOrBuilder(
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpanOrBuilder getPositiveSpanOrBuilder(
         int index) {
       return positiveSpan_.get(index);
     }
@@ -5587,7 +5611,7 @@ public double getPositiveCount(int index) {
 
     public static final int EXEMPLARS_FIELD_NUMBER = 16;
     @SuppressWarnings("serial")
-    private java.util.List exemplars_;
+    private java.util.List exemplars_;
     /**
      * 
      * Only used for native histograms. These exemplars MUST have a timestamp.
@@ -5596,7 +5620,7 @@ public double getPositiveCount(int index) {
      * repeated .io.prometheus.client.Exemplar exemplars = 16;
      */
     @java.lang.Override
-    public java.util.List getExemplarsList() {
+    public java.util.List getExemplarsList() {
       return exemplars_;
     }
     /**
@@ -5607,7 +5631,7 @@ public java.util.Listrepeated .io.prometheus.client.Exemplar exemplars = 16;
      */
     @java.lang.Override
-    public java.util.List 
+    public java.util.List 
         getExemplarsOrBuilderList() {
       return exemplars_;
     }
@@ -5630,7 +5654,7 @@ public int getExemplarsCount() {
      * repeated .io.prometheus.client.Exemplar exemplars = 16;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar getExemplars(int index) {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar getExemplars(int index) {
       return exemplars_.get(index);
     }
     /**
@@ -5641,7 +5665,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
      * repeated .io.prometheus.client.Exemplar exemplars = 16;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.ExemplarOrBuilder getExemplarsOrBuilder(
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.ExemplarOrBuilder getExemplarsOrBuilder(
         int index) {
       return exemplars_.get(index);
     }
@@ -5710,13 +5734,8 @@ public void writeTo(com.google.protobuf.CodedOutputStream output)
       }
       getUnknownFields().writeTo(output);
     }
-
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
+    private int computeSerializedSize_0() {
+      int size = 0;
       if (((bitField0_ & 0x00000001) != 0)) {
         size += com.google.protobuf.CodedOutputStream
           .computeUInt64Size(1, sampleCount_);
@@ -5815,6 +5834,15 @@ public int getSerializedSize() {
             }
             size += 2 * count;
           }
+      return size;
+    }
+    @java.lang.Override
+    public int getSerializedSize() {
+      int size = memoizedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      size += computeSerializedSize_0();
       size += getUnknownFields().getSerializedSize();
       memoizedSize = size;
       return size;
@@ -5825,10 +5853,10 @@ public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram)) {
+      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram)) {
         return super.equals(obj);
       }
-      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram) obj;
+      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram) obj;
 
       if (hasSampleCount() != other.hasSampleCount()) return false;
       if (hasSampleCount()) {
@@ -5976,44 +6004,44 @@ public int hashCode() {
       return hash;
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram parseFrom(byte[] data)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram parseFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -6021,26 +6049,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram parseDelimitedFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram parseDelimitedFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -6053,7 +6081,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram prototype) {
+    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -6074,21 +6102,21 @@ protected Builder newBuilderForType(
     public static final class Builder extends
         com.google.protobuf.GeneratedMessage.Builder implements
         // @@protoc_insertion_point(builder_implements:io.prometheus.client.Histogram)
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.HistogramOrBuilder {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.HistogramOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Histogram_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Histogram_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Histogram_fieldAccessorTable
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Histogram_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram.Builder.class);
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram.Builder.class);
       }
 
-      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram.newBuilder()
+      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -6162,17 +6190,17 @@ public Builder clear() {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Histogram_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Histogram_descriptor;
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram getDefaultInstanceForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram.getDefaultInstance();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram getDefaultInstanceForType() {
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram.getDefaultInstance();
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram build() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram result = buildPartial();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram build() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -6180,15 +6208,15 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram buildPartial() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram(this);
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram buildPartial() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram(this);
         buildPartialRepeatedFields(result);
         if (bitField0_ != 0) { buildPartial0(result); }
         onBuilt();
         return result;
       }
 
-      private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram result) {
+      private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram result) {
         if (bucketBuilder_ == null) {
           if (((bitField0_ & 0x00000008) != 0)) {
             bucket_ = java.util.Collections.unmodifiableList(bucket_);
@@ -6227,7 +6255,7 @@ private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.
         }
       }
 
-      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram result) {
+      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram result) {
         int from_bitField0_ = bitField0_;
         int to_bitField0_ = 0;
         if (((from_bitField0_ & 0x00000001) != 0)) {
@@ -6285,16 +6313,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com
 
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram) {
-          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram)other);
+        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram) {
+          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram other) {
-        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram.getDefaultInstance()) return this;
+      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram other) {
+        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram.getDefaultInstance()) return this;
         if (other.hasSampleCount()) {
           setSampleCount(other.getSampleCount());
         }
@@ -6504,9 +6532,9 @@ public Builder mergeFrom(
                 break;
               } // case 17
               case 26: {
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket m =
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket m =
                     input.readMessage(
-                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket.parser(),
+                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket.parser(),
                         extensionRegistry);
                 if (bucketBuilder_ == null) {
                   ensureBucketIsMutable();
@@ -6542,9 +6570,9 @@ public Builder mergeFrom(
                 break;
               } // case 65
               case 74: {
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan m =
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan m =
                     input.readMessage(
-                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan.parser(),
+                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan.parser(),
                         extensionRegistry);
                 if (negativeSpanBuilder_ == null) {
                   ensureNegativeSpanIsMutable();
@@ -6588,9 +6616,9 @@ public Builder mergeFrom(
                 break;
               } // case 90
               case 98: {
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan m =
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan m =
                     input.readMessage(
-                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan.parser(),
+                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan.parser(),
                         extensionRegistry);
                 if (positiveSpanBuilder_ == null) {
                   ensurePositiveSpanIsMutable();
@@ -6641,9 +6669,9 @@ public Builder mergeFrom(
                 break;
               } // case 122
               case 130: {
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar m =
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar m =
                     input.readMessage(
-                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.parser(),
+                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.parser(),
                         extensionRegistry);
                 if (exemplarsBuilder_ == null) {
                   ensureExemplarsIsMutable();
@@ -6806,17 +6834,17 @@ public Builder clearSampleSum() {
         return this;
       }
 
-      private java.util.List bucket_ =
+      private java.util.List bucket_ =
         java.util.Collections.emptyList();
       private void ensureBucketIsMutable() {
         if (!((bitField0_ & 0x00000008) != 0)) {
-          bucket_ = new java.util.ArrayList(bucket_);
+          bucket_ = new java.util.ArrayList(bucket_);
           bitField0_ |= 0x00000008;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketOrBuilder> bucketBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketOrBuilder> bucketBuilder_;
 
       /**
        * 
@@ -6825,7 +6853,7 @@ private void ensureBucketIsMutable() {
        *
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
-      public java.util.List getBucketList() {
+      public java.util.List getBucketList() {
         if (bucketBuilder_ == null) {
           return java.util.Collections.unmodifiableList(bucket_);
         } else {
@@ -6853,7 +6881,7 @@ public int getBucketCount() {
        *
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket getBucket(int index) {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket getBucket(int index) {
         if (bucketBuilder_ == null) {
           return bucket_.get(index);
         } else {
@@ -6868,7 +6896,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
       public Builder setBucket(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket value) {
         if (bucketBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -6889,7 +6917,7 @@ public Builder setBucket(
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
       public Builder setBucket(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket.Builder builderForValue) {
         if (bucketBuilder_ == null) {
           ensureBucketIsMutable();
           bucket_.set(index, builderForValue.build());
@@ -6906,7 +6934,7 @@ public Builder setBucket(
        *
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
-      public Builder addBucket(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket value) {
+      public Builder addBucket(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket value) {
         if (bucketBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -6927,7 +6955,7 @@ public Builder addBucket(io.prometheus.metrics.expositionformats.generated.com_g
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
       public Builder addBucket(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket value) {
         if (bucketBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -6948,7 +6976,7 @@ public Builder addBucket(
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
       public Builder addBucket(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket.Builder builderForValue) {
         if (bucketBuilder_ == null) {
           ensureBucketIsMutable();
           bucket_.add(builderForValue.build());
@@ -6966,7 +6994,7 @@ public Builder addBucket(
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
       public Builder addBucket(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket.Builder builderForValue) {
         if (bucketBuilder_ == null) {
           ensureBucketIsMutable();
           bucket_.add(index, builderForValue.build());
@@ -6984,7 +7012,7 @@ public Builder addBucket(
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
       public Builder addAllBucket(
-          java.lang.Iterable values) {
+          java.lang.Iterable values) {
         if (bucketBuilder_ == null) {
           ensureBucketIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
@@ -7036,7 +7064,7 @@ public Builder removeBucket(int index) {
        *
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket.Builder getBucketBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket.Builder getBucketBuilder(
           int index) {
         return internalGetBucketFieldBuilder().getBuilder(index);
       }
@@ -7047,7 +7075,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketOrBuilder getBucketOrBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketOrBuilder getBucketOrBuilder(
           int index) {
         if (bucketBuilder_ == null) {
           return bucket_.get(index);  } else {
@@ -7061,7 +7089,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
-      public java.util.List 
+      public java.util.List 
            getBucketOrBuilderList() {
         if (bucketBuilder_ != null) {
           return bucketBuilder_.getMessageOrBuilderList();
@@ -7076,9 +7104,9 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket.Builder addBucketBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket.Builder addBucketBuilder() {
         return internalGetBucketFieldBuilder().addBuilder(
-            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket.getDefaultInstance());
+            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket.getDefaultInstance());
       }
       /**
        * 
@@ -7087,10 +7115,10 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket.Builder addBucketBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket.Builder addBucketBuilder(
           int index) {
         return internalGetBucketFieldBuilder().addBuilder(
-            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket.getDefaultInstance());
+            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket.getDefaultInstance());
       }
       /**
        * 
@@ -7099,16 +7127,16 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Bucket bucket = 3;
        */
-      public java.util.List 
+      public java.util.List 
            getBucketBuilderList() {
         return internalGetBucketFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketOrBuilder> 
           internalGetBucketFieldBuilder() {
         if (bucketBuilder_ == null) {
           bucketBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketOrBuilder>(
                   bucket_,
                   ((bitField0_ & 0x00000008) != 0),
                   getParentForChildren(),
@@ -7479,17 +7507,17 @@ public Builder clearZeroCountFloat() {
         return this;
       }
 
-      private java.util.List negativeSpan_ =
+      private java.util.List negativeSpan_ =
         java.util.Collections.emptyList();
       private void ensureNegativeSpanIsMutable() {
         if (!((bitField0_ & 0x00000200) != 0)) {
-          negativeSpan_ = new java.util.ArrayList(negativeSpan_);
+          negativeSpan_ = new java.util.ArrayList(negativeSpan_);
           bitField0_ |= 0x00000200;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpanOrBuilder> negativeSpanBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpanOrBuilder> negativeSpanBuilder_;
 
       /**
        * 
@@ -7498,7 +7526,7 @@ private void ensureNegativeSpanIsMutable() {
        *
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
-      public java.util.List getNegativeSpanList() {
+      public java.util.List getNegativeSpanList() {
         if (negativeSpanBuilder_ == null) {
           return java.util.Collections.unmodifiableList(negativeSpan_);
         } else {
@@ -7526,7 +7554,7 @@ public int getNegativeSpanCount() {
        *
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan getNegativeSpan(int index) {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan getNegativeSpan(int index) {
         if (negativeSpanBuilder_ == null) {
           return negativeSpan_.get(index);
         } else {
@@ -7541,7 +7569,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
       public Builder setNegativeSpan(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan value) {
         if (negativeSpanBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -7562,7 +7590,7 @@ public Builder setNegativeSpan(
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
       public Builder setNegativeSpan(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan.Builder builderForValue) {
         if (negativeSpanBuilder_ == null) {
           ensureNegativeSpanIsMutable();
           negativeSpan_.set(index, builderForValue.build());
@@ -7579,7 +7607,7 @@ public Builder setNegativeSpan(
        *
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
-      public Builder addNegativeSpan(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan value) {
+      public Builder addNegativeSpan(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan value) {
         if (negativeSpanBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -7600,7 +7628,7 @@ public Builder addNegativeSpan(io.prometheus.metrics.expositionformats.generated
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
       public Builder addNegativeSpan(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan value) {
         if (negativeSpanBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -7621,7 +7649,7 @@ public Builder addNegativeSpan(
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
       public Builder addNegativeSpan(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan.Builder builderForValue) {
         if (negativeSpanBuilder_ == null) {
           ensureNegativeSpanIsMutable();
           negativeSpan_.add(builderForValue.build());
@@ -7639,7 +7667,7 @@ public Builder addNegativeSpan(
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
       public Builder addNegativeSpan(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan.Builder builderForValue) {
         if (negativeSpanBuilder_ == null) {
           ensureNegativeSpanIsMutable();
           negativeSpan_.add(index, builderForValue.build());
@@ -7657,7 +7685,7 @@ public Builder addNegativeSpan(
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
       public Builder addAllNegativeSpan(
-          java.lang.Iterable values) {
+          java.lang.Iterable values) {
         if (negativeSpanBuilder_ == null) {
           ensureNegativeSpanIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
@@ -7709,7 +7737,7 @@ public Builder removeNegativeSpan(int index) {
        *
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan.Builder getNegativeSpanBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan.Builder getNegativeSpanBuilder(
           int index) {
         return internalGetNegativeSpanFieldBuilder().getBuilder(index);
       }
@@ -7720,7 +7748,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpanOrBuilder getNegativeSpanOrBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpanOrBuilder getNegativeSpanOrBuilder(
           int index) {
         if (negativeSpanBuilder_ == null) {
           return negativeSpan_.get(index);  } else {
@@ -7734,7 +7762,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
-      public java.util.List 
+      public java.util.List 
            getNegativeSpanOrBuilderList() {
         if (negativeSpanBuilder_ != null) {
           return negativeSpanBuilder_.getMessageOrBuilderList();
@@ -7749,9 +7777,9 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan.Builder addNegativeSpanBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan.Builder addNegativeSpanBuilder() {
         return internalGetNegativeSpanFieldBuilder().addBuilder(
-            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan.getDefaultInstance());
+            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan.getDefaultInstance());
       }
       /**
        * 
@@ -7760,10 +7788,10 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan.Builder addNegativeSpanBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan.Builder addNegativeSpanBuilder(
           int index) {
         return internalGetNegativeSpanFieldBuilder().addBuilder(
-            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan.getDefaultInstance());
+            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan.getDefaultInstance());
       }
       /**
        * 
@@ -7772,16 +7800,16 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan negative_span = 9;
        */
-      public java.util.List 
+      public java.util.List 
            getNegativeSpanBuilderList() {
         return internalGetNegativeSpanFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpanOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpanOrBuilder> 
           internalGetNegativeSpanFieldBuilder() {
         if (negativeSpanBuilder_ == null) {
           negativeSpanBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpanOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpanOrBuilder>(
                   negativeSpan_,
                   ((bitField0_ & 0x00000200) != 0),
                   getParentForChildren(),
@@ -8035,17 +8063,17 @@ public Builder clearNegativeCount() {
         return this;
       }
 
-      private java.util.List positiveSpan_ =
+      private java.util.List positiveSpan_ =
         java.util.Collections.emptyList();
       private void ensurePositiveSpanIsMutable() {
         if (!((bitField0_ & 0x00001000) != 0)) {
-          positiveSpan_ = new java.util.ArrayList(positiveSpan_);
+          positiveSpan_ = new java.util.ArrayList(positiveSpan_);
           bitField0_ |= 0x00001000;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpanOrBuilder> positiveSpanBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpanOrBuilder> positiveSpanBuilder_;
 
       /**
        * 
@@ -8057,7 +8085,7 @@ private void ensurePositiveSpanIsMutable() {
        *
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
-      public java.util.List getPositiveSpanList() {
+      public java.util.List getPositiveSpanList() {
         if (positiveSpanBuilder_ == null) {
           return java.util.Collections.unmodifiableList(positiveSpan_);
         } else {
@@ -8091,7 +8119,7 @@ public int getPositiveSpanCount() {
        *
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan getPositiveSpan(int index) {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan getPositiveSpan(int index) {
         if (positiveSpanBuilder_ == null) {
           return positiveSpan_.get(index);
         } else {
@@ -8109,7 +8137,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
       public Builder setPositiveSpan(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan value) {
         if (positiveSpanBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -8133,7 +8161,7 @@ public Builder setPositiveSpan(
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
       public Builder setPositiveSpan(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan.Builder builderForValue) {
         if (positiveSpanBuilder_ == null) {
           ensurePositiveSpanIsMutable();
           positiveSpan_.set(index, builderForValue.build());
@@ -8153,7 +8181,7 @@ public Builder setPositiveSpan(
        *
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
-      public Builder addPositiveSpan(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan value) {
+      public Builder addPositiveSpan(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan value) {
         if (positiveSpanBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -8177,7 +8205,7 @@ public Builder addPositiveSpan(io.prometheus.metrics.expositionformats.generated
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
       public Builder addPositiveSpan(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan value) {
         if (positiveSpanBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -8201,7 +8229,7 @@ public Builder addPositiveSpan(
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
       public Builder addPositiveSpan(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan.Builder builderForValue) {
         if (positiveSpanBuilder_ == null) {
           ensurePositiveSpanIsMutable();
           positiveSpan_.add(builderForValue.build());
@@ -8222,7 +8250,7 @@ public Builder addPositiveSpan(
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
       public Builder addPositiveSpan(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan.Builder builderForValue) {
         if (positiveSpanBuilder_ == null) {
           ensurePositiveSpanIsMutable();
           positiveSpan_.add(index, builderForValue.build());
@@ -8243,7 +8271,7 @@ public Builder addPositiveSpan(
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
       public Builder addAllPositiveSpan(
-          java.lang.Iterable values) {
+          java.lang.Iterable values) {
         if (positiveSpanBuilder_ == null) {
           ensurePositiveSpanIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
@@ -8304,7 +8332,7 @@ public Builder removePositiveSpan(int index) {
        *
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan.Builder getPositiveSpanBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan.Builder getPositiveSpanBuilder(
           int index) {
         return internalGetPositiveSpanFieldBuilder().getBuilder(index);
       }
@@ -8318,7 +8346,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpanOrBuilder getPositiveSpanOrBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpanOrBuilder getPositiveSpanOrBuilder(
           int index) {
         if (positiveSpanBuilder_ == null) {
           return positiveSpan_.get(index);  } else {
@@ -8335,7 +8363,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
-      public java.util.List 
+      public java.util.List 
            getPositiveSpanOrBuilderList() {
         if (positiveSpanBuilder_ != null) {
           return positiveSpanBuilder_.getMessageOrBuilderList();
@@ -8353,9 +8381,9 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan.Builder addPositiveSpanBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan.Builder addPositiveSpanBuilder() {
         return internalGetPositiveSpanFieldBuilder().addBuilder(
-            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan.getDefaultInstance());
+            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan.getDefaultInstance());
       }
       /**
        * 
@@ -8367,10 +8395,10 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan.Builder addPositiveSpanBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan.Builder addPositiveSpanBuilder(
           int index) {
         return internalGetPositiveSpanFieldBuilder().addBuilder(
-            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan.getDefaultInstance());
+            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan.getDefaultInstance());
       }
       /**
        * 
@@ -8382,16 +8410,16 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.BucketSpan positive_span = 12;
        */
-      public java.util.List 
+      public java.util.List 
            getPositiveSpanBuilderList() {
         return internalGetPositiveSpanFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpanOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpanOrBuilder> 
           internalGetPositiveSpanFieldBuilder() {
         if (positiveSpanBuilder_ == null) {
           positiveSpanBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpanOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpanOrBuilder>(
                   positiveSpan_,
                   ((bitField0_ & 0x00001000) != 0),
                   getParentForChildren(),
@@ -8645,17 +8673,17 @@ public Builder clearPositiveCount() {
         return this;
       }
 
-      private java.util.List exemplars_ =
+      private java.util.List exemplars_ =
         java.util.Collections.emptyList();
       private void ensureExemplarsIsMutable() {
         if (!((bitField0_ & 0x00008000) != 0)) {
-          exemplars_ = new java.util.ArrayList(exemplars_);
+          exemplars_ = new java.util.ArrayList(exemplars_);
           bitField0_ |= 0x00008000;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.ExemplarOrBuilder> exemplarsBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.ExemplarOrBuilder> exemplarsBuilder_;
 
       /**
        * 
@@ -8664,7 +8692,7 @@ private void ensureExemplarsIsMutable() {
        *
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
-      public java.util.List getExemplarsList() {
+      public java.util.List getExemplarsList() {
         if (exemplarsBuilder_ == null) {
           return java.util.Collections.unmodifiableList(exemplars_);
         } else {
@@ -8692,7 +8720,7 @@ public int getExemplarsCount() {
        *
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar getExemplars(int index) {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar getExemplars(int index) {
         if (exemplarsBuilder_ == null) {
           return exemplars_.get(index);
         } else {
@@ -8707,7 +8735,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
       public Builder setExemplars(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar value) {
         if (exemplarsBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -8728,7 +8756,7 @@ public Builder setExemplars(
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
       public Builder setExemplars(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.Builder builderForValue) {
         if (exemplarsBuilder_ == null) {
           ensureExemplarsIsMutable();
           exemplars_.set(index, builderForValue.build());
@@ -8745,7 +8773,7 @@ public Builder setExemplars(
        *
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
-      public Builder addExemplars(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar value) {
+      public Builder addExemplars(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar value) {
         if (exemplarsBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -8766,7 +8794,7 @@ public Builder addExemplars(io.prometheus.metrics.expositionformats.generated.co
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
       public Builder addExemplars(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar value) {
         if (exemplarsBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -8787,7 +8815,7 @@ public Builder addExemplars(
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
       public Builder addExemplars(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.Builder builderForValue) {
         if (exemplarsBuilder_ == null) {
           ensureExemplarsIsMutable();
           exemplars_.add(builderForValue.build());
@@ -8805,7 +8833,7 @@ public Builder addExemplars(
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
       public Builder addExemplars(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.Builder builderForValue) {
         if (exemplarsBuilder_ == null) {
           ensureExemplarsIsMutable();
           exemplars_.add(index, builderForValue.build());
@@ -8823,7 +8851,7 @@ public Builder addExemplars(
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
       public Builder addAllExemplars(
-          java.lang.Iterable values) {
+          java.lang.Iterable values) {
         if (exemplarsBuilder_ == null) {
           ensureExemplarsIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
@@ -8875,7 +8903,7 @@ public Builder removeExemplars(int index) {
        *
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.Builder getExemplarsBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.Builder getExemplarsBuilder(
           int index) {
         return internalGetExemplarsFieldBuilder().getBuilder(index);
       }
@@ -8886,7 +8914,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.ExemplarOrBuilder getExemplarsOrBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.ExemplarOrBuilder getExemplarsOrBuilder(
           int index) {
         if (exemplarsBuilder_ == null) {
           return exemplars_.get(index);  } else {
@@ -8900,7 +8928,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
-      public java.util.List 
+      public java.util.List 
            getExemplarsOrBuilderList() {
         if (exemplarsBuilder_ != null) {
           return exemplarsBuilder_.getMessageOrBuilderList();
@@ -8915,9 +8943,9 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.Builder addExemplarsBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.Builder addExemplarsBuilder() {
         return internalGetExemplarsFieldBuilder().addBuilder(
-            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.getDefaultInstance());
+            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.getDefaultInstance());
       }
       /**
        * 
@@ -8926,10 +8954,10 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.Builder addExemplarsBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.Builder addExemplarsBuilder(
           int index) {
         return internalGetExemplarsFieldBuilder().addBuilder(
-            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.getDefaultInstance());
+            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.getDefaultInstance());
       }
       /**
        * 
@@ -8938,16 +8966,16 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        *
        * repeated .io.prometheus.client.Exemplar exemplars = 16;
        */
-      public java.util.List 
+      public java.util.List 
            getExemplarsBuilderList() {
         return internalGetExemplarsFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.ExemplarOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.ExemplarOrBuilder> 
           internalGetExemplarsFieldBuilder() {
         if (exemplarsBuilder_ == null) {
           exemplarsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.ExemplarOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.ExemplarOrBuilder>(
                   exemplars_,
                   ((bitField0_ & 0x00008000) != 0),
                   getParentForChildren(),
@@ -8961,12 +8989,12 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
     }
 
     // @@protoc_insertion_point(class_scope:io.prometheus.client.Histogram)
-    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram DEFAULT_INSTANCE;
+    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram();
+      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram();
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram getDefaultInstance() {
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
@@ -9002,7 +9030,7 @@ public com.google.protobuf.Parser getParserForType() {
     }
 
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram getDefaultInstanceForType() {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
@@ -9078,11 +9106,11 @@ public interface BucketOrBuilder extends
      * optional .io.prometheus.client.Exemplar exemplar = 3;
      * @return The exemplar.
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar getExemplar();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar getExemplar();
     /**
      * optional .io.prometheus.client.Exemplar exemplar = 3;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.ExemplarOrBuilder getExemplarOrBuilder();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.ExemplarOrBuilder getExemplarOrBuilder();
   }
   /**
    * 
@@ -9101,8 +9129,8 @@ public static final class Bucket extends
       com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
         com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
         /* major= */ 4,
-        /* minor= */ 34,
-        /* patch= */ 1,
+        /* minor= */ 35,
+        /* patch= */ 0,
         /* suffix= */ "",
         "Bucket");
     }
@@ -9115,20 +9143,20 @@ private Bucket() {
 
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Bucket_descriptor;
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Bucket_descriptor;
     }
 
     @java.lang.Override
     public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Bucket_descriptor;
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Bucket_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Bucket_fieldAccessorTable
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Bucket_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket.Builder.class);
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket.Builder.class);
     }
 
     private int bitField0_;
@@ -9214,7 +9242,7 @@ public double getUpperBound() {
     }
 
     public static final int EXEMPLAR_FIELD_NUMBER = 3;
-    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar exemplar_;
+    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar exemplar_;
     /**
      * optional .io.prometheus.client.Exemplar exemplar = 3;
      * @return Whether the exemplar field is set.
@@ -9228,15 +9256,15 @@ public boolean hasExemplar() {
      * @return The exemplar.
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar getExemplar() {
-      return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.getDefaultInstance() : exemplar_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar getExemplar() {
+      return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.getDefaultInstance() : exemplar_;
     }
     /**
      * optional .io.prometheus.client.Exemplar exemplar = 3;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.ExemplarOrBuilder getExemplarOrBuilder() {
-      return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.getDefaultInstance() : exemplar_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.ExemplarOrBuilder getExemplarOrBuilder() {
+      return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.getDefaultInstance() : exemplar_;
     }
 
     private byte memoizedIsInitialized = -1;
@@ -9267,13 +9295,8 @@ public void writeTo(com.google.protobuf.CodedOutputStream output)
       }
       getUnknownFields().writeTo(output);
     }
-
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
+    private int computeSerializedSize_0() {
+      int size = 0;
       if (((bitField0_ & 0x00000001) != 0)) {
         size += com.google.protobuf.CodedOutputStream
           .computeUInt64Size(1, cumulativeCount_);
@@ -9290,6 +9313,15 @@ public int getSerializedSize() {
         size += com.google.protobuf.CodedOutputStream
           .computeDoubleSize(4, cumulativeCountFloat_);
       }
+      return size;
+    }
+    @java.lang.Override
+    public int getSerializedSize() {
+      int size = memoizedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      size += computeSerializedSize_0();
       size += getUnknownFields().getSerializedSize();
       memoizedSize = size;
       return size;
@@ -9300,10 +9332,10 @@ public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket)) {
+      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket)) {
         return super.equals(obj);
       }
-      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket) obj;
+      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket) obj;
 
       if (hasCumulativeCount() != other.hasCumulativeCount()) return false;
       if (hasCumulativeCount()) {
@@ -9362,44 +9394,44 @@ public int hashCode() {
       return hash;
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket parseFrom(byte[] data)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket parseFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -9407,26 +9439,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket parseDelimitedFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket parseDelimitedFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -9439,7 +9471,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket prototype) {
+    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -9465,21 +9497,21 @@ protected Builder newBuilderForType(
     public static final class Builder extends
         com.google.protobuf.GeneratedMessage.Builder implements
         // @@protoc_insertion_point(builder_implements:io.prometheus.client.Bucket)
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketOrBuilder {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Bucket_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Bucket_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Bucket_fieldAccessorTable
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Bucket_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket.Builder.class);
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket.Builder.class);
       }
 
-      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket.newBuilder()
+      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -9513,17 +9545,17 @@ public Builder clear() {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Bucket_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Bucket_descriptor;
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket getDefaultInstanceForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket.getDefaultInstance();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket getDefaultInstanceForType() {
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket.getDefaultInstance();
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket build() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket result = buildPartial();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket build() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -9531,14 +9563,14 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket buildPartial() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket(this);
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket buildPartial() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket(this);
         if (bitField0_ != 0) { buildPartial0(result); }
         onBuilt();
         return result;
       }
 
-      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket result) {
+      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket result) {
         int from_bitField0_ = bitField0_;
         int to_bitField0_ = 0;
         if (((from_bitField0_ & 0x00000001) != 0)) {
@@ -9564,16 +9596,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com
 
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket) {
-          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket)other);
+        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket) {
+          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket other) {
-        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket.getDefaultInstance()) return this;
+      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket other) {
+        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket.getDefaultInstance()) return this;
         if (other.hasCumulativeCount()) {
           setCumulativeCount(other.getCumulativeCount());
         }
@@ -9819,9 +9851,9 @@ public Builder clearUpperBound() {
         return this;
       }
 
-      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar exemplar_;
+      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar exemplar_;
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.ExemplarOrBuilder> exemplarBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.ExemplarOrBuilder> exemplarBuilder_;
       /**
        * optional .io.prometheus.client.Exemplar exemplar = 3;
        * @return Whether the exemplar field is set.
@@ -9833,9 +9865,9 @@ public boolean hasExemplar() {
        * optional .io.prometheus.client.Exemplar exemplar = 3;
        * @return The exemplar.
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar getExemplar() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar getExemplar() {
         if (exemplarBuilder_ == null) {
-          return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.getDefaultInstance() : exemplar_;
+          return exemplar_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.getDefaultInstance() : exemplar_;
         } else {
           return exemplarBuilder_.getMessage();
         }
@@ -9843,7 +9875,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Exemplar exemplar = 3;
        */
-      public Builder setExemplar(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar value) {
+      public Builder setExemplar(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar value) {
         if (exemplarBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -9860,7 +9892,7 @@ public Builder setExemplar(io.prometheus.metrics.expositionformats.generated.com
        * optional .io.prometheus.client.Exemplar exemplar = 3;
        */
       public Builder setExemplar(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.Builder builderForValue) {
         if (exemplarBuilder_ == null) {
           exemplar_ = builderForValue.build();
         } else {
@@ -9873,11 +9905,11 @@ public Builder setExemplar(
       /**
        * optional .io.prometheus.client.Exemplar exemplar = 3;
        */
-      public Builder mergeExemplar(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar value) {
+      public Builder mergeExemplar(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar value) {
         if (exemplarBuilder_ == null) {
           if (((bitField0_ & 0x00000008) != 0) &&
             exemplar_ != null &&
-            exemplar_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.getDefaultInstance()) {
+            exemplar_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.getDefaultInstance()) {
             getExemplarBuilder().mergeFrom(value);
           } else {
             exemplar_ = value;
@@ -9907,7 +9939,7 @@ public Builder clearExemplar() {
       /**
        * optional .io.prometheus.client.Exemplar exemplar = 3;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.Builder getExemplarBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.Builder getExemplarBuilder() {
         bitField0_ |= 0x00000008;
         onChanged();
         return internalGetExemplarFieldBuilder().getBuilder();
@@ -9915,23 +9947,23 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Exemplar exemplar = 3;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.ExemplarOrBuilder getExemplarOrBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.ExemplarOrBuilder getExemplarOrBuilder() {
         if (exemplarBuilder_ != null) {
           return exemplarBuilder_.getMessageOrBuilder();
         } else {
           return exemplar_ == null ?
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.getDefaultInstance() : exemplar_;
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.getDefaultInstance() : exemplar_;
         }
       }
       /**
        * optional .io.prometheus.client.Exemplar exemplar = 3;
        */
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.ExemplarOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.ExemplarOrBuilder> 
           internalGetExemplarFieldBuilder() {
         if (exemplarBuilder_ == null) {
           exemplarBuilder_ = new com.google.protobuf.SingleFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.ExemplarOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.ExemplarOrBuilder>(
                   getExemplar(),
                   getParentForChildren(),
                   isClean());
@@ -9944,12 +9976,12 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
     }
 
     // @@protoc_insertion_point(class_scope:io.prometheus.client.Bucket)
-    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket DEFAULT_INSTANCE;
+    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket();
+      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket();
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket getDefaultInstance() {
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
@@ -9985,7 +10017,7 @@ public com.google.protobuf.Parser getParserForType() {
     }
 
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Bucket getDefaultInstanceForType() {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Bucket getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
@@ -10054,8 +10086,8 @@ public static final class BucketSpan extends
       com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
         com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
         /* major= */ 4,
-        /* minor= */ 34,
-        /* patch= */ 1,
+        /* minor= */ 35,
+        /* patch= */ 0,
         /* suffix= */ "",
         "BucketSpan");
     }
@@ -10068,20 +10100,20 @@ private BucketSpan() {
 
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_BucketSpan_descriptor;
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_BucketSpan_descriptor;
     }
 
     @java.lang.Override
     public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_BucketSpan_descriptor;
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_BucketSpan_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_BucketSpan_fieldAccessorTable
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_BucketSpan_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan.Builder.class);
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan.Builder.class);
     }
 
     private int bitField0_;
@@ -10161,13 +10193,8 @@ public void writeTo(com.google.protobuf.CodedOutputStream output)
       }
       getUnknownFields().writeTo(output);
     }
-
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
+    private int computeSerializedSize_0() {
+      int size = 0;
       if (((bitField0_ & 0x00000001) != 0)) {
         size += com.google.protobuf.CodedOutputStream
           .computeSInt32Size(1, offset_);
@@ -10176,6 +10203,15 @@ public int getSerializedSize() {
         size += com.google.protobuf.CodedOutputStream
           .computeUInt32Size(2, length_);
       }
+      return size;
+    }
+    @java.lang.Override
+    public int getSerializedSize() {
+      int size = memoizedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      size += computeSerializedSize_0();
       size += getUnknownFields().getSerializedSize();
       memoizedSize = size;
       return size;
@@ -10186,10 +10222,10 @@ public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan)) {
+      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan)) {
         return super.equals(obj);
       }
-      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan) obj;
+      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan) obj;
 
       if (hasOffset() != other.hasOffset()) return false;
       if (hasOffset()) {
@@ -10225,44 +10261,44 @@ public int hashCode() {
       return hash;
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan parseFrom(byte[] data)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan parseFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -10270,26 +10306,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan parseDelimitedFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan parseDelimitedFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -10302,7 +10338,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan prototype) {
+    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -10332,21 +10368,21 @@ protected Builder newBuilderForType(
     public static final class Builder extends
         com.google.protobuf.GeneratedMessage.Builder implements
         // @@protoc_insertion_point(builder_implements:io.prometheus.client.BucketSpan)
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpanOrBuilder {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpanOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_BucketSpan_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_BucketSpan_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_BucketSpan_fieldAccessorTable
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_BucketSpan_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan.Builder.class);
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan.Builder.class);
       }
 
-      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan.newBuilder()
+      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan.newBuilder()
       private Builder() {
 
       }
@@ -10368,17 +10404,17 @@ public Builder clear() {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_BucketSpan_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_BucketSpan_descriptor;
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan getDefaultInstanceForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan.getDefaultInstance();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan getDefaultInstanceForType() {
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan.getDefaultInstance();
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan build() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan result = buildPartial();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan build() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -10386,14 +10422,14 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan buildPartial() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan(this);
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan buildPartial() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan(this);
         if (bitField0_ != 0) { buildPartial0(result); }
         onBuilt();
         return result;
       }
 
-      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan result) {
+      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan result) {
         int from_bitField0_ = bitField0_;
         int to_bitField0_ = 0;
         if (((from_bitField0_ & 0x00000001) != 0)) {
@@ -10409,16 +10445,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com
 
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan) {
-          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan)other);
+        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan) {
+          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan other) {
-        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan.getDefaultInstance()) return this;
+      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan other) {
+        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan.getDefaultInstance()) return this;
         if (other.hasOffset()) {
           setOffset(other.getOffset());
         }
@@ -10594,12 +10630,12 @@ public Builder clearLength() {
     }
 
     // @@protoc_insertion_point(class_scope:io.prometheus.client.BucketSpan)
-    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan DEFAULT_INSTANCE;
+    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan();
+      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan();
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan getDefaultInstance() {
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
@@ -10635,7 +10671,7 @@ public com.google.protobuf.Parser getParserForType() {
     }
 
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.BucketSpan getDefaultInstanceForType() {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.BucketSpan getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
@@ -10648,12 +10684,12 @@ public interface ExemplarOrBuilder extends
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
-    java.util.List 
+    java.util.List 
         getLabelList();
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair getLabel(int index);
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair getLabel(int index);
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
@@ -10661,12 +10697,12 @@ public interface ExemplarOrBuilder extends
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
-    java.util.List 
+    java.util.List 
         getLabelOrBuilderList();
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPairOrBuilder getLabelOrBuilder(
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPairOrBuilder getLabelOrBuilder(
         int index);
 
     /**
@@ -10719,8 +10755,8 @@ public static final class Exemplar extends
       com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
         com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
         /* major= */ 4,
-        /* minor= */ 34,
-        /* patch= */ 1,
+        /* minor= */ 35,
+        /* patch= */ 0,
         /* suffix= */ "",
         "Exemplar");
     }
@@ -10734,38 +10770,38 @@ private Exemplar() {
 
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Exemplar_descriptor;
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Exemplar_descriptor;
     }
 
     @java.lang.Override
     public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Exemplar_descriptor;
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Exemplar_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Exemplar_fieldAccessorTable
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Exemplar_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.Builder.class);
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.Builder.class);
     }
 
     private int bitField0_;
     public static final int LABEL_FIELD_NUMBER = 1;
     @SuppressWarnings("serial")
-    private java.util.List label_;
+    private java.util.List label_;
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
     @java.lang.Override
-    public java.util.List getLabelList() {
+    public java.util.List getLabelList() {
       return label_;
     }
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
     @java.lang.Override
-    public java.util.List 
+    public java.util.List 
         getLabelOrBuilderList() {
       return label_;
     }
@@ -10780,14 +10816,14 @@ public int getLabelCount() {
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair getLabel(int index) {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair getLabel(int index) {
       return label_.get(index);
     }
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPairOrBuilder getLabelOrBuilder(
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPairOrBuilder getLabelOrBuilder(
         int index) {
       return label_.get(index);
     }
@@ -10874,13 +10910,8 @@ public void writeTo(com.google.protobuf.CodedOutputStream output)
       }
       getUnknownFields().writeTo(output);
     }
-
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
+    private int computeSerializedSize_0() {
+      int size = 0;
 
           {
             final int count = label_.size();
@@ -10898,6 +10929,15 @@ public int getSerializedSize() {
         size += com.google.protobuf.CodedOutputStream
           .computeMessageSize(3, getTimestamp());
       }
+      return size;
+    }
+    @java.lang.Override
+    public int getSerializedSize() {
+      int size = memoizedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      size += computeSerializedSize_0();
       size += getUnknownFields().getSerializedSize();
       memoizedSize = size;
       return size;
@@ -10908,10 +10948,10 @@ public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar)) {
+      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar)) {
         return super.equals(obj);
       }
-      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar) obj;
+      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar) obj;
 
       if (!getLabelList()
           .equals(other.getLabelList())) return false;
@@ -10955,44 +10995,44 @@ public int hashCode() {
       return hash;
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar parseFrom(byte[] data)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar parseFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -11000,26 +11040,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar parseDelimitedFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar parseDelimitedFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -11032,7 +11072,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar prototype) {
+    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -11053,21 +11093,21 @@ protected Builder newBuilderForType(
     public static final class Builder extends
         com.google.protobuf.GeneratedMessage.Builder implements
         // @@protoc_insertion_point(builder_implements:io.prometheus.client.Exemplar)
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.ExemplarOrBuilder {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.ExemplarOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Exemplar_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Exemplar_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Exemplar_fieldAccessorTable
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Exemplar_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.Builder.class);
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.Builder.class);
       }
 
-      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.newBuilder()
+      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -11107,17 +11147,17 @@ public Builder clear() {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Exemplar_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Exemplar_descriptor;
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar getDefaultInstanceForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.getDefaultInstance();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar getDefaultInstanceForType() {
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.getDefaultInstance();
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar build() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar result = buildPartial();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar build() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -11125,15 +11165,15 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar buildPartial() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar(this);
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar buildPartial() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar(this);
         buildPartialRepeatedFields(result);
         if (bitField0_ != 0) { buildPartial0(result); }
         onBuilt();
         return result;
       }
 
-      private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar result) {
+      private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar result) {
         if (labelBuilder_ == null) {
           if (((bitField0_ & 0x00000001) != 0)) {
             label_ = java.util.Collections.unmodifiableList(label_);
@@ -11145,7 +11185,7 @@ private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.
         }
       }
 
-      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar result) {
+      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar result) {
         int from_bitField0_ = bitField0_;
         int to_bitField0_ = 0;
         if (((from_bitField0_ & 0x00000002) != 0)) {
@@ -11163,16 +11203,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com
 
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar) {
-          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar)other);
+        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar) {
+          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar other) {
-        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar.getDefaultInstance()) return this;
+      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar other) {
+        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar.getDefaultInstance()) return this;
         if (labelBuilder_ == null) {
           if (!other.label_.isEmpty()) {
             if (label_.isEmpty()) {
@@ -11232,9 +11272,9 @@ public Builder mergeFrom(
                 done = true;
                 break;
               case 10: {
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair m =
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair m =
                     input.readMessage(
-                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair.parser(),
+                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair.parser(),
                         extensionRegistry);
                 if (labelBuilder_ == null) {
                   ensureLabelIsMutable();
@@ -11273,22 +11313,22 @@ public Builder mergeFrom(
       }
       private int bitField0_;
 
-      private java.util.List label_ =
+      private java.util.List label_ =
         java.util.Collections.emptyList();
       private void ensureLabelIsMutable() {
         if (!((bitField0_ & 0x00000001) != 0)) {
-          label_ = new java.util.ArrayList(label_);
+          label_ = new java.util.ArrayList(label_);
           bitField0_ |= 0x00000001;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPairOrBuilder> labelBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPairOrBuilder> labelBuilder_;
 
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public java.util.List getLabelList() {
+      public java.util.List getLabelList() {
         if (labelBuilder_ == null) {
           return java.util.Collections.unmodifiableList(label_);
         } else {
@@ -11308,7 +11348,7 @@ public int getLabelCount() {
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair getLabel(int index) {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair getLabel(int index) {
         if (labelBuilder_ == null) {
           return label_.get(index);
         } else {
@@ -11319,7 +11359,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder setLabel(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair value) {
         if (labelBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -11336,7 +11376,7 @@ public Builder setLabel(
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder setLabel(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair.Builder builderForValue) {
         if (labelBuilder_ == null) {
           ensureLabelIsMutable();
           label_.set(index, builderForValue.build());
@@ -11349,7 +11389,7 @@ public Builder setLabel(
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public Builder addLabel(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair value) {
+      public Builder addLabel(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair value) {
         if (labelBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -11366,7 +11406,7 @@ public Builder addLabel(io.prometheus.metrics.expositionformats.generated.com_go
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder addLabel(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair value) {
         if (labelBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -11383,7 +11423,7 @@ public Builder addLabel(
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder addLabel(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair.Builder builderForValue) {
         if (labelBuilder_ == null) {
           ensureLabelIsMutable();
           label_.add(builderForValue.build());
@@ -11397,7 +11437,7 @@ public Builder addLabel(
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder addLabel(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair.Builder builderForValue) {
         if (labelBuilder_ == null) {
           ensureLabelIsMutable();
           label_.add(index, builderForValue.build());
@@ -11411,7 +11451,7 @@ public Builder addLabel(
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder addAllLabel(
-          java.lang.Iterable values) {
+          java.lang.Iterable values) {
         if (labelBuilder_ == null) {
           ensureLabelIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
@@ -11451,14 +11491,14 @@ public Builder removeLabel(int index) {
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair.Builder getLabelBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair.Builder getLabelBuilder(
           int index) {
         return internalGetLabelFieldBuilder().getBuilder(index);
       }
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPairOrBuilder getLabelOrBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPairOrBuilder getLabelOrBuilder(
           int index) {
         if (labelBuilder_ == null) {
           return label_.get(index);  } else {
@@ -11468,7 +11508,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public java.util.List 
+      public java.util.List 
            getLabelOrBuilderList() {
         if (labelBuilder_ != null) {
           return labelBuilder_.getMessageOrBuilderList();
@@ -11479,31 +11519,31 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair.Builder addLabelBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair.Builder addLabelBuilder() {
         return internalGetLabelFieldBuilder().addBuilder(
-            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair.getDefaultInstance());
+            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair.getDefaultInstance());
       }
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair.Builder addLabelBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair.Builder addLabelBuilder(
           int index) {
         return internalGetLabelFieldBuilder().addBuilder(
-            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair.getDefaultInstance());
+            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair.getDefaultInstance());
       }
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public java.util.List 
+      public java.util.List 
            getLabelBuilderList() {
         return internalGetLabelFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPairOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPairOrBuilder> 
           internalGetLabelFieldBuilder() {
         if (labelBuilder_ == null) {
           labelBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPairOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPairOrBuilder>(
                   label_,
                   ((bitField0_ & 0x00000001) != 0),
                   getParentForChildren(),
@@ -11714,12 +11754,12 @@ public com.google.protobuf.TimestampOrBuilder getTimestampOrBuilder() {
     }
 
     // @@protoc_insertion_point(class_scope:io.prometheus.client.Exemplar)
-    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar DEFAULT_INSTANCE;
+    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar();
+      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar();
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar getDefaultInstance() {
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
@@ -11755,7 +11795,7 @@ public com.google.protobuf.Parser getParserForType() {
     }
 
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Exemplar getDefaultInstanceForType() {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Exemplar getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
@@ -11768,12 +11808,12 @@ public interface MetricOrBuilder extends
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
-    java.util.List 
+    java.util.List 
         getLabelList();
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair getLabel(int index);
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair getLabel(int index);
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
@@ -11781,12 +11821,12 @@ public interface MetricOrBuilder extends
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
-    java.util.List 
+    java.util.List 
         getLabelOrBuilderList();
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPairOrBuilder getLabelOrBuilder(
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPairOrBuilder getLabelOrBuilder(
         int index);
 
     /**
@@ -11798,11 +11838,11 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Met
      * optional .io.prometheus.client.Gauge gauge = 2;
      * @return The gauge.
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge getGauge();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge getGauge();
     /**
      * optional .io.prometheus.client.Gauge gauge = 2;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.GaugeOrBuilder getGaugeOrBuilder();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.GaugeOrBuilder getGaugeOrBuilder();
 
     /**
      * optional .io.prometheus.client.Counter counter = 3;
@@ -11813,11 +11853,11 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Met
      * optional .io.prometheus.client.Counter counter = 3;
      * @return The counter.
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter getCounter();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter getCounter();
     /**
      * optional .io.prometheus.client.Counter counter = 3;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.CounterOrBuilder getCounterOrBuilder();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.CounterOrBuilder getCounterOrBuilder();
 
     /**
      * optional .io.prometheus.client.Summary summary = 4;
@@ -11828,11 +11868,11 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Met
      * optional .io.prometheus.client.Summary summary = 4;
      * @return The summary.
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary getSummary();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary getSummary();
     /**
      * optional .io.prometheus.client.Summary summary = 4;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.SummaryOrBuilder getSummaryOrBuilder();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.SummaryOrBuilder getSummaryOrBuilder();
 
     /**
      * optional .io.prometheus.client.Untyped untyped = 5;
@@ -11843,11 +11883,11 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Met
      * optional .io.prometheus.client.Untyped untyped = 5;
      * @return The untyped.
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped getUntyped();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped getUntyped();
     /**
      * optional .io.prometheus.client.Untyped untyped = 5;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.UntypedOrBuilder getUntypedOrBuilder();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.UntypedOrBuilder getUntypedOrBuilder();
 
     /**
      * optional .io.prometheus.client.Histogram histogram = 7;
@@ -11858,11 +11898,11 @@ io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Met
      * optional .io.prometheus.client.Histogram histogram = 7;
      * @return The histogram.
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram getHistogram();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram getHistogram();
     /**
      * optional .io.prometheus.client.Histogram histogram = 7;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.HistogramOrBuilder getHistogramOrBuilder();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.HistogramOrBuilder getHistogramOrBuilder();
 
     /**
      * optional int64 timestamp_ms = 6;
@@ -11887,8 +11927,8 @@ public static final class Metric extends
       com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
         com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
         /* major= */ 4,
-        /* minor= */ 34,
-        /* patch= */ 1,
+        /* minor= */ 35,
+        /* patch= */ 0,
         /* suffix= */ "",
         "Metric");
     }
@@ -11902,38 +11942,38 @@ private Metric() {
 
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Metric_descriptor;
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Metric_descriptor;
     }
 
     @java.lang.Override
     public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Metric_descriptor;
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Metric_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Metric_fieldAccessorTable
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Metric_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric.Builder.class);
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric.Builder.class);
     }
 
     private int bitField0_;
     public static final int LABEL_FIELD_NUMBER = 1;
     @SuppressWarnings("serial")
-    private java.util.List label_;
+    private java.util.List label_;
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
     @java.lang.Override
-    public java.util.List getLabelList() {
+    public java.util.List getLabelList() {
       return label_;
     }
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
     @java.lang.Override
-    public java.util.List 
+    public java.util.List 
         getLabelOrBuilderList() {
       return label_;
     }
@@ -11948,20 +11988,20 @@ public int getLabelCount() {
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair getLabel(int index) {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair getLabel(int index) {
       return label_.get(index);
     }
     /**
      * repeated .io.prometheus.client.LabelPair label = 1;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPairOrBuilder getLabelOrBuilder(
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPairOrBuilder getLabelOrBuilder(
         int index) {
       return label_.get(index);
     }
 
     public static final int GAUGE_FIELD_NUMBER = 2;
-    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge gauge_;
+    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge gauge_;
     /**
      * optional .io.prometheus.client.Gauge gauge = 2;
      * @return Whether the gauge field is set.
@@ -11975,19 +12015,19 @@ public boolean hasGauge() {
      * @return The gauge.
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge getGauge() {
-      return gauge_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge.getDefaultInstance() : gauge_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge getGauge() {
+      return gauge_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge.getDefaultInstance() : gauge_;
     }
     /**
      * optional .io.prometheus.client.Gauge gauge = 2;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.GaugeOrBuilder getGaugeOrBuilder() {
-      return gauge_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge.getDefaultInstance() : gauge_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.GaugeOrBuilder getGaugeOrBuilder() {
+      return gauge_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge.getDefaultInstance() : gauge_;
     }
 
     public static final int COUNTER_FIELD_NUMBER = 3;
-    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter counter_;
+    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter counter_;
     /**
      * optional .io.prometheus.client.Counter counter = 3;
      * @return Whether the counter field is set.
@@ -12001,19 +12041,19 @@ public boolean hasCounter() {
      * @return The counter.
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter getCounter() {
-      return counter_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter.getDefaultInstance() : counter_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter getCounter() {
+      return counter_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter.getDefaultInstance() : counter_;
     }
     /**
      * optional .io.prometheus.client.Counter counter = 3;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.CounterOrBuilder getCounterOrBuilder() {
-      return counter_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter.getDefaultInstance() : counter_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.CounterOrBuilder getCounterOrBuilder() {
+      return counter_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter.getDefaultInstance() : counter_;
     }
 
     public static final int SUMMARY_FIELD_NUMBER = 4;
-    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary summary_;
+    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary summary_;
     /**
      * optional .io.prometheus.client.Summary summary = 4;
      * @return Whether the summary field is set.
@@ -12027,19 +12067,19 @@ public boolean hasSummary() {
      * @return The summary.
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary getSummary() {
-      return summary_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary.getDefaultInstance() : summary_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary getSummary() {
+      return summary_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary.getDefaultInstance() : summary_;
     }
     /**
      * optional .io.prometheus.client.Summary summary = 4;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.SummaryOrBuilder getSummaryOrBuilder() {
-      return summary_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary.getDefaultInstance() : summary_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.SummaryOrBuilder getSummaryOrBuilder() {
+      return summary_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary.getDefaultInstance() : summary_;
     }
 
     public static final int UNTYPED_FIELD_NUMBER = 5;
-    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped untyped_;
+    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped untyped_;
     /**
      * optional .io.prometheus.client.Untyped untyped = 5;
      * @return Whether the untyped field is set.
@@ -12053,19 +12093,19 @@ public boolean hasUntyped() {
      * @return The untyped.
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped getUntyped() {
-      return untyped_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped.getDefaultInstance() : untyped_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped getUntyped() {
+      return untyped_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped.getDefaultInstance() : untyped_;
     }
     /**
      * optional .io.prometheus.client.Untyped untyped = 5;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.UntypedOrBuilder getUntypedOrBuilder() {
-      return untyped_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped.getDefaultInstance() : untyped_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.UntypedOrBuilder getUntypedOrBuilder() {
+      return untyped_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped.getDefaultInstance() : untyped_;
     }
 
     public static final int HISTOGRAM_FIELD_NUMBER = 7;
-    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram histogram_;
+    private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram histogram_;
     /**
      * optional .io.prometheus.client.Histogram histogram = 7;
      * @return Whether the histogram field is set.
@@ -12079,15 +12119,15 @@ public boolean hasHistogram() {
      * @return The histogram.
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram getHistogram() {
-      return histogram_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram.getDefaultInstance() : histogram_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram getHistogram() {
+      return histogram_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram.getDefaultInstance() : histogram_;
     }
     /**
      * optional .io.prometheus.client.Histogram histogram = 7;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.HistogramOrBuilder getHistogramOrBuilder() {
-      return histogram_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram.getDefaultInstance() : histogram_;
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.HistogramOrBuilder getHistogramOrBuilder() {
+      return histogram_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram.getDefaultInstance() : histogram_;
     }
 
     public static final int TIMESTAMP_MS_FIELD_NUMBER = 6;
@@ -12146,13 +12186,8 @@ public void writeTo(com.google.protobuf.CodedOutputStream output)
       }
       getUnknownFields().writeTo(output);
     }
-
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
+    private int computeSerializedSize_0() {
+      int size = 0;
 
           {
             final int count = label_.size();
@@ -12186,6 +12221,15 @@ public int getSerializedSize() {
         size += com.google.protobuf.CodedOutputStream
           .computeMessageSize(7, getHistogram());
       }
+      return size;
+    }
+    @java.lang.Override
+    public int getSerializedSize() {
+      int size = memoizedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      size += computeSerializedSize_0();
       size += getUnknownFields().getSerializedSize();
       memoizedSize = size;
       return size;
@@ -12196,10 +12240,10 @@ public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric)) {
+      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric)) {
         return super.equals(obj);
       }
-      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric) obj;
+      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric) obj;
 
       if (!getLabelList()
           .equals(other.getLabelList())) return false;
@@ -12278,44 +12322,44 @@ public int hashCode() {
       return hash;
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric parseFrom(byte[] data)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric parseFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -12323,26 +12367,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric parseDelimitedFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric parseDelimitedFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -12355,7 +12399,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric prototype) {
+    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -12376,21 +12420,21 @@ protected Builder newBuilderForType(
     public static final class Builder extends
         com.google.protobuf.GeneratedMessage.Builder implements
         // @@protoc_insertion_point(builder_implements:io.prometheus.client.Metric)
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricOrBuilder {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Metric_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Metric_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Metric_fieldAccessorTable
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Metric_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric.Builder.class);
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric.Builder.class);
       }
 
-      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric.newBuilder()
+      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -12454,17 +12498,17 @@ public Builder clear() {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_Metric_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_Metric_descriptor;
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric getDefaultInstanceForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric.getDefaultInstance();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric getDefaultInstanceForType() {
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric.getDefaultInstance();
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric build() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric result = buildPartial();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric build() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -12472,15 +12516,15 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric buildPartial() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric(this);
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric buildPartial() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric(this);
         buildPartialRepeatedFields(result);
         if (bitField0_ != 0) { buildPartial0(result); }
         onBuilt();
         return result;
       }
 
-      private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric result) {
+      private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric result) {
         if (labelBuilder_ == null) {
           if (((bitField0_ & 0x00000001) != 0)) {
             label_ = java.util.Collections.unmodifiableList(label_);
@@ -12492,7 +12536,7 @@ private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.
         }
       }
 
-      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric result) {
+      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric result) {
         int from_bitField0_ = bitField0_;
         int to_bitField0_ = 0;
         if (((from_bitField0_ & 0x00000002) != 0)) {
@@ -12534,16 +12578,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com
 
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric) {
-          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric)other);
+        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric) {
+          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric other) {
-        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric.getDefaultInstance()) return this;
+      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric other) {
+        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric.getDefaultInstance()) return this;
         if (labelBuilder_ == null) {
           if (!other.label_.isEmpty()) {
             if (label_.isEmpty()) {
@@ -12615,9 +12659,9 @@ public Builder mergeFrom(
                 done = true;
                 break;
               case 10: {
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair m =
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair m =
                     input.readMessage(
-                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair.parser(),
+                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair.parser(),
                         extensionRegistry);
                 if (labelBuilder_ == null) {
                   ensureLabelIsMutable();
@@ -12684,22 +12728,22 @@ public Builder mergeFrom(
       }
       private int bitField0_;
 
-      private java.util.List label_ =
+      private java.util.List label_ =
         java.util.Collections.emptyList();
       private void ensureLabelIsMutable() {
         if (!((bitField0_ & 0x00000001) != 0)) {
-          label_ = new java.util.ArrayList(label_);
+          label_ = new java.util.ArrayList(label_);
           bitField0_ |= 0x00000001;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPairOrBuilder> labelBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPairOrBuilder> labelBuilder_;
 
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public java.util.List getLabelList() {
+      public java.util.List getLabelList() {
         if (labelBuilder_ == null) {
           return java.util.Collections.unmodifiableList(label_);
         } else {
@@ -12719,7 +12763,7 @@ public int getLabelCount() {
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair getLabel(int index) {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair getLabel(int index) {
         if (labelBuilder_ == null) {
           return label_.get(index);
         } else {
@@ -12730,7 +12774,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder setLabel(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair value) {
         if (labelBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -12747,7 +12791,7 @@ public Builder setLabel(
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder setLabel(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair.Builder builderForValue) {
         if (labelBuilder_ == null) {
           ensureLabelIsMutable();
           label_.set(index, builderForValue.build());
@@ -12760,7 +12804,7 @@ public Builder setLabel(
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public Builder addLabel(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair value) {
+      public Builder addLabel(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair value) {
         if (labelBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -12777,7 +12821,7 @@ public Builder addLabel(io.prometheus.metrics.expositionformats.generated.com_go
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder addLabel(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair value) {
         if (labelBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -12794,7 +12838,7 @@ public Builder addLabel(
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder addLabel(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair.Builder builderForValue) {
         if (labelBuilder_ == null) {
           ensureLabelIsMutable();
           label_.add(builderForValue.build());
@@ -12808,7 +12852,7 @@ public Builder addLabel(
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder addLabel(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair.Builder builderForValue) {
         if (labelBuilder_ == null) {
           ensureLabelIsMutable();
           label_.add(index, builderForValue.build());
@@ -12822,7 +12866,7 @@ public Builder addLabel(
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
       public Builder addAllLabel(
-          java.lang.Iterable values) {
+          java.lang.Iterable values) {
         if (labelBuilder_ == null) {
           ensureLabelIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
@@ -12862,14 +12906,14 @@ public Builder removeLabel(int index) {
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair.Builder getLabelBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair.Builder getLabelBuilder(
           int index) {
         return internalGetLabelFieldBuilder().getBuilder(index);
       }
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPairOrBuilder getLabelOrBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPairOrBuilder getLabelOrBuilder(
           int index) {
         if (labelBuilder_ == null) {
           return label_.get(index);  } else {
@@ -12879,7 +12923,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public java.util.List 
+      public java.util.List 
            getLabelOrBuilderList() {
         if (labelBuilder_ != null) {
           return labelBuilder_.getMessageOrBuilderList();
@@ -12890,31 +12934,31 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair.Builder addLabelBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair.Builder addLabelBuilder() {
         return internalGetLabelFieldBuilder().addBuilder(
-            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair.getDefaultInstance());
+            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair.getDefaultInstance());
       }
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair.Builder addLabelBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair.Builder addLabelBuilder(
           int index) {
         return internalGetLabelFieldBuilder().addBuilder(
-            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair.getDefaultInstance());
+            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair.getDefaultInstance());
       }
       /**
        * repeated .io.prometheus.client.LabelPair label = 1;
        */
-      public java.util.List 
+      public java.util.List 
            getLabelBuilderList() {
         return internalGetLabelFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPairOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPairOrBuilder> 
           internalGetLabelFieldBuilder() {
         if (labelBuilder_ == null) {
           labelBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.LabelPairOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPair.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.LabelPairOrBuilder>(
                   label_,
                   ((bitField0_ & 0x00000001) != 0),
                   getParentForChildren(),
@@ -12924,9 +12968,9 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
         return labelBuilder_;
       }
 
-      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge gauge_;
+      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge gauge_;
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.GaugeOrBuilder> gaugeBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.GaugeOrBuilder> gaugeBuilder_;
       /**
        * optional .io.prometheus.client.Gauge gauge = 2;
        * @return Whether the gauge field is set.
@@ -12938,9 +12982,9 @@ public boolean hasGauge() {
        * optional .io.prometheus.client.Gauge gauge = 2;
        * @return The gauge.
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge getGauge() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge getGauge() {
         if (gaugeBuilder_ == null) {
-          return gauge_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge.getDefaultInstance() : gauge_;
+          return gauge_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge.getDefaultInstance() : gauge_;
         } else {
           return gaugeBuilder_.getMessage();
         }
@@ -12948,7 +12992,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Gauge gauge = 2;
        */
-      public Builder setGauge(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge value) {
+      public Builder setGauge(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge value) {
         if (gaugeBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -12965,7 +13009,7 @@ public Builder setGauge(io.prometheus.metrics.expositionformats.generated.com_go
        * optional .io.prometheus.client.Gauge gauge = 2;
        */
       public Builder setGauge(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge.Builder builderForValue) {
         if (gaugeBuilder_ == null) {
           gauge_ = builderForValue.build();
         } else {
@@ -12978,11 +13022,11 @@ public Builder setGauge(
       /**
        * optional .io.prometheus.client.Gauge gauge = 2;
        */
-      public Builder mergeGauge(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge value) {
+      public Builder mergeGauge(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge value) {
         if (gaugeBuilder_ == null) {
           if (((bitField0_ & 0x00000002) != 0) &&
             gauge_ != null &&
-            gauge_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge.getDefaultInstance()) {
+            gauge_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge.getDefaultInstance()) {
             getGaugeBuilder().mergeFrom(value);
           } else {
             gauge_ = value;
@@ -13012,7 +13056,7 @@ public Builder clearGauge() {
       /**
        * optional .io.prometheus.client.Gauge gauge = 2;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge.Builder getGaugeBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge.Builder getGaugeBuilder() {
         bitField0_ |= 0x00000002;
         onChanged();
         return internalGetGaugeFieldBuilder().getBuilder();
@@ -13020,23 +13064,23 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Gauge gauge = 2;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.GaugeOrBuilder getGaugeOrBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.GaugeOrBuilder getGaugeOrBuilder() {
         if (gaugeBuilder_ != null) {
           return gaugeBuilder_.getMessageOrBuilder();
         } else {
           return gauge_ == null ?
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge.getDefaultInstance() : gauge_;
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge.getDefaultInstance() : gauge_;
         }
       }
       /**
        * optional .io.prometheus.client.Gauge gauge = 2;
        */
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.GaugeOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.GaugeOrBuilder> 
           internalGetGaugeFieldBuilder() {
         if (gaugeBuilder_ == null) {
           gaugeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Gauge.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.GaugeOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Gauge.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.GaugeOrBuilder>(
                   getGauge(),
                   getParentForChildren(),
                   isClean());
@@ -13045,9 +13089,9 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
         return gaugeBuilder_;
       }
 
-      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter counter_;
+      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter counter_;
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.CounterOrBuilder> counterBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.CounterOrBuilder> counterBuilder_;
       /**
        * optional .io.prometheus.client.Counter counter = 3;
        * @return Whether the counter field is set.
@@ -13059,9 +13103,9 @@ public boolean hasCounter() {
        * optional .io.prometheus.client.Counter counter = 3;
        * @return The counter.
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter getCounter() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter getCounter() {
         if (counterBuilder_ == null) {
-          return counter_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter.getDefaultInstance() : counter_;
+          return counter_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter.getDefaultInstance() : counter_;
         } else {
           return counterBuilder_.getMessage();
         }
@@ -13069,7 +13113,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Counter counter = 3;
        */
-      public Builder setCounter(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter value) {
+      public Builder setCounter(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter value) {
         if (counterBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -13086,7 +13130,7 @@ public Builder setCounter(io.prometheus.metrics.expositionformats.generated.com_
        * optional .io.prometheus.client.Counter counter = 3;
        */
       public Builder setCounter(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter.Builder builderForValue) {
         if (counterBuilder_ == null) {
           counter_ = builderForValue.build();
         } else {
@@ -13099,11 +13143,11 @@ public Builder setCounter(
       /**
        * optional .io.prometheus.client.Counter counter = 3;
        */
-      public Builder mergeCounter(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter value) {
+      public Builder mergeCounter(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter value) {
         if (counterBuilder_ == null) {
           if (((bitField0_ & 0x00000004) != 0) &&
             counter_ != null &&
-            counter_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter.getDefaultInstance()) {
+            counter_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter.getDefaultInstance()) {
             getCounterBuilder().mergeFrom(value);
           } else {
             counter_ = value;
@@ -13133,7 +13177,7 @@ public Builder clearCounter() {
       /**
        * optional .io.prometheus.client.Counter counter = 3;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter.Builder getCounterBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter.Builder getCounterBuilder() {
         bitField0_ |= 0x00000004;
         onChanged();
         return internalGetCounterFieldBuilder().getBuilder();
@@ -13141,23 +13185,23 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Counter counter = 3;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.CounterOrBuilder getCounterOrBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.CounterOrBuilder getCounterOrBuilder() {
         if (counterBuilder_ != null) {
           return counterBuilder_.getMessageOrBuilder();
         } else {
           return counter_ == null ?
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter.getDefaultInstance() : counter_;
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter.getDefaultInstance() : counter_;
         }
       }
       /**
        * optional .io.prometheus.client.Counter counter = 3;
        */
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.CounterOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.CounterOrBuilder> 
           internalGetCounterFieldBuilder() {
         if (counterBuilder_ == null) {
           counterBuilder_ = new com.google.protobuf.SingleFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Counter.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.CounterOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Counter.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.CounterOrBuilder>(
                   getCounter(),
                   getParentForChildren(),
                   isClean());
@@ -13166,9 +13210,9 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
         return counterBuilder_;
       }
 
-      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary summary_;
+      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary summary_;
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.SummaryOrBuilder> summaryBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.SummaryOrBuilder> summaryBuilder_;
       /**
        * optional .io.prometheus.client.Summary summary = 4;
        * @return Whether the summary field is set.
@@ -13180,9 +13224,9 @@ public boolean hasSummary() {
        * optional .io.prometheus.client.Summary summary = 4;
        * @return The summary.
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary getSummary() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary getSummary() {
         if (summaryBuilder_ == null) {
-          return summary_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary.getDefaultInstance() : summary_;
+          return summary_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary.getDefaultInstance() : summary_;
         } else {
           return summaryBuilder_.getMessage();
         }
@@ -13190,7 +13234,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Summary summary = 4;
        */
-      public Builder setSummary(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary value) {
+      public Builder setSummary(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary value) {
         if (summaryBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -13207,7 +13251,7 @@ public Builder setSummary(io.prometheus.metrics.expositionformats.generated.com_
        * optional .io.prometheus.client.Summary summary = 4;
        */
       public Builder setSummary(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary.Builder builderForValue) {
         if (summaryBuilder_ == null) {
           summary_ = builderForValue.build();
         } else {
@@ -13220,11 +13264,11 @@ public Builder setSummary(
       /**
        * optional .io.prometheus.client.Summary summary = 4;
        */
-      public Builder mergeSummary(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary value) {
+      public Builder mergeSummary(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary value) {
         if (summaryBuilder_ == null) {
           if (((bitField0_ & 0x00000008) != 0) &&
             summary_ != null &&
-            summary_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary.getDefaultInstance()) {
+            summary_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary.getDefaultInstance()) {
             getSummaryBuilder().mergeFrom(value);
           } else {
             summary_ = value;
@@ -13254,7 +13298,7 @@ public Builder clearSummary() {
       /**
        * optional .io.prometheus.client.Summary summary = 4;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary.Builder getSummaryBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary.Builder getSummaryBuilder() {
         bitField0_ |= 0x00000008;
         onChanged();
         return internalGetSummaryFieldBuilder().getBuilder();
@@ -13262,23 +13306,23 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Summary summary = 4;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.SummaryOrBuilder getSummaryOrBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.SummaryOrBuilder getSummaryOrBuilder() {
         if (summaryBuilder_ != null) {
           return summaryBuilder_.getMessageOrBuilder();
         } else {
           return summary_ == null ?
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary.getDefaultInstance() : summary_;
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary.getDefaultInstance() : summary_;
         }
       }
       /**
        * optional .io.prometheus.client.Summary summary = 4;
        */
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.SummaryOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.SummaryOrBuilder> 
           internalGetSummaryFieldBuilder() {
         if (summaryBuilder_ == null) {
           summaryBuilder_ = new com.google.protobuf.SingleFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Summary.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.SummaryOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Summary.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.SummaryOrBuilder>(
                   getSummary(),
                   getParentForChildren(),
                   isClean());
@@ -13287,9 +13331,9 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
         return summaryBuilder_;
       }
 
-      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped untyped_;
+      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped untyped_;
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.UntypedOrBuilder> untypedBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.UntypedOrBuilder> untypedBuilder_;
       /**
        * optional .io.prometheus.client.Untyped untyped = 5;
        * @return Whether the untyped field is set.
@@ -13301,9 +13345,9 @@ public boolean hasUntyped() {
        * optional .io.prometheus.client.Untyped untyped = 5;
        * @return The untyped.
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped getUntyped() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped getUntyped() {
         if (untypedBuilder_ == null) {
-          return untyped_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped.getDefaultInstance() : untyped_;
+          return untyped_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped.getDefaultInstance() : untyped_;
         } else {
           return untypedBuilder_.getMessage();
         }
@@ -13311,7 +13355,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Untyped untyped = 5;
        */
-      public Builder setUntyped(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped value) {
+      public Builder setUntyped(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped value) {
         if (untypedBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -13328,7 +13372,7 @@ public Builder setUntyped(io.prometheus.metrics.expositionformats.generated.com_
        * optional .io.prometheus.client.Untyped untyped = 5;
        */
       public Builder setUntyped(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped.Builder builderForValue) {
         if (untypedBuilder_ == null) {
           untyped_ = builderForValue.build();
         } else {
@@ -13341,11 +13385,11 @@ public Builder setUntyped(
       /**
        * optional .io.prometheus.client.Untyped untyped = 5;
        */
-      public Builder mergeUntyped(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped value) {
+      public Builder mergeUntyped(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped value) {
         if (untypedBuilder_ == null) {
           if (((bitField0_ & 0x00000010) != 0) &&
             untyped_ != null &&
-            untyped_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped.getDefaultInstance()) {
+            untyped_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped.getDefaultInstance()) {
             getUntypedBuilder().mergeFrom(value);
           } else {
             untyped_ = value;
@@ -13375,7 +13419,7 @@ public Builder clearUntyped() {
       /**
        * optional .io.prometheus.client.Untyped untyped = 5;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped.Builder getUntypedBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped.Builder getUntypedBuilder() {
         bitField0_ |= 0x00000010;
         onChanged();
         return internalGetUntypedFieldBuilder().getBuilder();
@@ -13383,23 +13427,23 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Untyped untyped = 5;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.UntypedOrBuilder getUntypedOrBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.UntypedOrBuilder getUntypedOrBuilder() {
         if (untypedBuilder_ != null) {
           return untypedBuilder_.getMessageOrBuilder();
         } else {
           return untyped_ == null ?
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped.getDefaultInstance() : untyped_;
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped.getDefaultInstance() : untyped_;
         }
       }
       /**
        * optional .io.prometheus.client.Untyped untyped = 5;
        */
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.UntypedOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.UntypedOrBuilder> 
           internalGetUntypedFieldBuilder() {
         if (untypedBuilder_ == null) {
           untypedBuilder_ = new com.google.protobuf.SingleFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Untyped.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.UntypedOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Untyped.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.UntypedOrBuilder>(
                   getUntyped(),
                   getParentForChildren(),
                   isClean());
@@ -13408,9 +13452,9 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
         return untypedBuilder_;
       }
 
-      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram histogram_;
+      private io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram histogram_;
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.HistogramOrBuilder> histogramBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.HistogramOrBuilder> histogramBuilder_;
       /**
        * optional .io.prometheus.client.Histogram histogram = 7;
        * @return Whether the histogram field is set.
@@ -13422,9 +13466,9 @@ public boolean hasHistogram() {
        * optional .io.prometheus.client.Histogram histogram = 7;
        * @return The histogram.
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram getHistogram() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram getHistogram() {
         if (histogramBuilder_ == null) {
-          return histogram_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram.getDefaultInstance() : histogram_;
+          return histogram_ == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram.getDefaultInstance() : histogram_;
         } else {
           return histogramBuilder_.getMessage();
         }
@@ -13432,7 +13476,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Histogram histogram = 7;
        */
-      public Builder setHistogram(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram value) {
+      public Builder setHistogram(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram value) {
         if (histogramBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -13449,7 +13493,7 @@ public Builder setHistogram(io.prometheus.metrics.expositionformats.generated.co
        * optional .io.prometheus.client.Histogram histogram = 7;
        */
       public Builder setHistogram(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram.Builder builderForValue) {
         if (histogramBuilder_ == null) {
           histogram_ = builderForValue.build();
         } else {
@@ -13462,11 +13506,11 @@ public Builder setHistogram(
       /**
        * optional .io.prometheus.client.Histogram histogram = 7;
        */
-      public Builder mergeHistogram(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram value) {
+      public Builder mergeHistogram(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram value) {
         if (histogramBuilder_ == null) {
           if (((bitField0_ & 0x00000020) != 0) &&
             histogram_ != null &&
-            histogram_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram.getDefaultInstance()) {
+            histogram_ != io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram.getDefaultInstance()) {
             getHistogramBuilder().mergeFrom(value);
           } else {
             histogram_ = value;
@@ -13496,7 +13540,7 @@ public Builder clearHistogram() {
       /**
        * optional .io.prometheus.client.Histogram histogram = 7;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram.Builder getHistogramBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram.Builder getHistogramBuilder() {
         bitField0_ |= 0x00000020;
         onChanged();
         return internalGetHistogramFieldBuilder().getBuilder();
@@ -13504,23 +13548,23 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * optional .io.prometheus.client.Histogram histogram = 7;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.HistogramOrBuilder getHistogramOrBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.HistogramOrBuilder getHistogramOrBuilder() {
         if (histogramBuilder_ != null) {
           return histogramBuilder_.getMessageOrBuilder();
         } else {
           return histogram_ == null ?
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram.getDefaultInstance() : histogram_;
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram.getDefaultInstance() : histogram_;
         }
       }
       /**
        * optional .io.prometheus.client.Histogram histogram = 7;
        */
       private com.google.protobuf.SingleFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.HistogramOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.HistogramOrBuilder> 
           internalGetHistogramFieldBuilder() {
         if (histogramBuilder_ == null) {
           histogramBuilder_ = new com.google.protobuf.SingleFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Histogram.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.HistogramOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Histogram.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.HistogramOrBuilder>(
                   getHistogram(),
                   getParentForChildren(),
                   isClean());
@@ -13573,12 +13617,12 @@ public Builder clearTimestampMs() {
     }
 
     // @@protoc_insertion_point(class_scope:io.prometheus.client.Metric)
-    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric DEFAULT_INSTANCE;
+    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric();
+      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric();
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric getDefaultInstance() {
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
@@ -13614,7 +13658,7 @@ public com.google.protobuf.Parser getParserForType() {
     }
 
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric getDefaultInstanceForType() {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
@@ -13667,17 +13711,17 @@ public interface MetricFamilyOrBuilder extends
      * optional .io.prometheus.client.MetricType type = 3;
      * @return The type.
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricType getType();
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricType getType();
 
     /**
      * repeated .io.prometheus.client.Metric metric = 4;
      */
-    java.util.List 
+    java.util.List 
         getMetricList();
     /**
      * repeated .io.prometheus.client.Metric metric = 4;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric getMetric(int index);
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric getMetric(int index);
     /**
      * repeated .io.prometheus.client.Metric metric = 4;
      */
@@ -13685,12 +13729,12 @@ public interface MetricFamilyOrBuilder extends
     /**
      * repeated .io.prometheus.client.Metric metric = 4;
      */
-    java.util.List 
+    java.util.List 
         getMetricOrBuilderList();
     /**
      * repeated .io.prometheus.client.Metric metric = 4;
      */
-    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricOrBuilder getMetricOrBuilder(
+    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricOrBuilder getMetricOrBuilder(
         int index);
 
     /**
@@ -13722,8 +13766,8 @@ public static final class MetricFamily extends
       com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
         com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
         /* major= */ 4,
-        /* minor= */ 34,
-        /* patch= */ 1,
+        /* minor= */ 35,
+        /* patch= */ 0,
         /* suffix= */ "",
         "MetricFamily");
     }
@@ -13741,20 +13785,20 @@ private MetricFamily() {
 
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_MetricFamily_descriptor;
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_MetricFamily_descriptor;
     }
 
     @java.lang.Override
     public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_MetricFamily_descriptor;
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_MetricFamily_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_MetricFamily_fieldAccessorTable
+      return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_MetricFamily_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamily.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamily.Builder.class);
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamily.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamily.Builder.class);
     }
 
     private int bitField0_;
@@ -13869,26 +13913,26 @@ public java.lang.String getHelp() {
      * optional .io.prometheus.client.MetricType type = 3;
      * @return The type.
      */
-    @java.lang.Override public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricType getType() {
-      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricType result = io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricType.forNumber(type_);
-      return result == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricType.COUNTER : result;
+    @java.lang.Override public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricType getType() {
+      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricType result = io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricType.forNumber(type_);
+      return result == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricType.COUNTER : result;
     }
 
     public static final int METRIC_FIELD_NUMBER = 4;
     @SuppressWarnings("serial")
-    private java.util.List metric_;
+    private java.util.List metric_;
     /**
      * repeated .io.prometheus.client.Metric metric = 4;
      */
     @java.lang.Override
-    public java.util.List getMetricList() {
+    public java.util.List getMetricList() {
       return metric_;
     }
     /**
      * repeated .io.prometheus.client.Metric metric = 4;
      */
     @java.lang.Override
-    public java.util.List 
+    public java.util.List 
         getMetricOrBuilderList() {
       return metric_;
     }
@@ -13903,14 +13947,14 @@ public int getMetricCount() {
      * repeated .io.prometheus.client.Metric metric = 4;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric getMetric(int index) {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric getMetric(int index) {
       return metric_.get(index);
     }
     /**
      * repeated .io.prometheus.client.Metric metric = 4;
      */
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricOrBuilder getMetricOrBuilder(
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricOrBuilder getMetricOrBuilder(
         int index) {
       return metric_.get(index);
     }
@@ -13995,13 +14039,8 @@ public void writeTo(com.google.protobuf.CodedOutputStream output)
       }
       getUnknownFields().writeTo(output);
     }
-
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
+    private int computeSerializedSize_0() {
+      int size = 0;
       if (((bitField0_ & 0x00000001) != 0)) {
         size += com.google.protobuf.GeneratedMessage.computeStringSize(1, name_);
       }
@@ -14024,6 +14063,15 @@ public int getSerializedSize() {
       if (((bitField0_ & 0x00000008) != 0)) {
         size += com.google.protobuf.GeneratedMessage.computeStringSize(5, unit_);
       }
+      return size;
+    }
+    @java.lang.Override
+    public int getSerializedSize() {
+      int size = memoizedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      size += computeSerializedSize_0();
       size += getUnknownFields().getSerializedSize();
       memoizedSize = size;
       return size;
@@ -14034,10 +14082,10 @@ public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamily)) {
+      if (!(obj instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamily)) {
         return super.equals(obj);
       }
-      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamily other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamily) obj;
+      io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamily other = (io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamily) obj;
 
       if (hasName() != other.hasName()) return false;
       if (hasName()) {
@@ -14096,44 +14144,44 @@ public int hashCode() {
       return hash;
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamily parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamily parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamily parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamily parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamily parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamily parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamily parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamily parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamily parseFrom(byte[] data)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamily parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamily parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamily parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamily parseFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamily parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamily parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamily parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -14141,26 +14189,26 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamily parseDelimitedFrom(java.io.InputStream input)
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamily parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input);
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamily parseDelimitedFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamily parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamily parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamily parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessage
           .parseWithIOException(PARSER, input);
     }
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamily parseFrom(
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamily parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -14173,7 +14221,7 @@ public static io.prometheus.metrics.expositionformats.generated.com_google_proto
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamily prototype) {
+    public static Builder newBuilder(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamily prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -14194,21 +14242,21 @@ protected Builder newBuilderForType(
     public static final class Builder extends
         com.google.protobuf.GeneratedMessage.Builder implements
         // @@protoc_insertion_point(builder_implements:io.prometheus.client.MetricFamily)
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamilyOrBuilder {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamilyOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_MetricFamily_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_MetricFamily_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_MetricFamily_fieldAccessorTable
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_MetricFamily_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamily.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamily.Builder.class);
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamily.class, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamily.Builder.class);
       }
 
-      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamily.newBuilder()
+      // Construct using io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamily.newBuilder()
       private Builder() {
 
       }
@@ -14239,17 +14287,17 @@ public Builder clear() {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.internal_static_io_prometheus_client_MetricFamily_descriptor;
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.internal_static_io_prometheus_client_MetricFamily_descriptor;
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamily getDefaultInstanceForType() {
-        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamily.getDefaultInstance();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamily getDefaultInstanceForType() {
+        return io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamily.getDefaultInstance();
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamily build() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamily result = buildPartial();
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamily build() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamily result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -14257,15 +14305,15 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       }
 
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamily buildPartial() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamily result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamily(this);
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamily buildPartial() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamily result = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamily(this);
         buildPartialRepeatedFields(result);
         if (bitField0_ != 0) { buildPartial0(result); }
         onBuilt();
         return result;
       }
 
-      private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamily result) {
+      private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamily result) {
         if (metricBuilder_ == null) {
           if (((bitField0_ & 0x00000008) != 0)) {
             metric_ = java.util.Collections.unmodifiableList(metric_);
@@ -14277,7 +14325,7 @@ private void buildPartialRepeatedFields(io.prometheus.metrics.expositionformats.
         }
       }
 
-      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamily result) {
+      private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamily result) {
         int from_bitField0_ = bitField0_;
         int to_bitField0_ = 0;
         if (((from_bitField0_ & 0x00000001) != 0)) {
@@ -14301,16 +14349,16 @@ private void buildPartial0(io.prometheus.metrics.expositionformats.generated.com
 
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamily) {
-          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamily)other);
+        if (other instanceof io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamily) {
+          return mergeFrom((io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamily)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamily other) {
-        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamily.getDefaultInstance()) return this;
+      public Builder mergeFrom(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamily other) {
+        if (other == io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamily.getDefaultInstance()) return this;
         if (other.hasName()) {
           name_ = other.name_;
           bitField0_ |= 0x00000001;
@@ -14393,8 +14441,8 @@ public Builder mergeFrom(
               } // case 18
               case 24: {
                 int tmpRaw = input.readEnum();
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricType tmpValue =
-                    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricType.forNumber(tmpRaw);
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricType tmpValue =
+                    io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricType.forNumber(tmpRaw);
                 if (tmpValue == null) {
                   mergeUnknownVarintField(3, tmpRaw);
                 } else {
@@ -14404,9 +14452,9 @@ public Builder mergeFrom(
                 break;
               } // case 24
               case 34: {
-                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric m =
+                io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric m =
                     input.readMessage(
-                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric.parser(),
+                        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric.parser(),
                         extensionRegistry);
                 if (metricBuilder_ == null) {
                   ensureMetricIsMutable();
@@ -14611,16 +14659,16 @@ public Builder setHelpBytes(
        * @return The type.
        */
       @java.lang.Override
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricType getType() {
-        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricType result = io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricType.forNumber(type_);
-        return result == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricType.COUNTER : result;
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricType getType() {
+        io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricType result = io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricType.forNumber(type_);
+        return result == null ? io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricType.COUNTER : result;
       }
       /**
        * optional .io.prometheus.client.MetricType type = 3;
        * @param value The type to set.
        * @return This builder for chaining.
        */
-      public Builder setType(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricType value) {
+      public Builder setType(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricType value) {
         if (value == null) { throw new NullPointerException(); }
         bitField0_ |= 0x00000004;
         type_ = value.getNumber();
@@ -14638,22 +14686,22 @@ public Builder clearType() {
         return this;
       }
 
-      private java.util.List metric_ =
+      private java.util.List metric_ =
         java.util.Collections.emptyList();
       private void ensureMetricIsMutable() {
         if (!((bitField0_ & 0x00000008) != 0)) {
-          metric_ = new java.util.ArrayList(metric_);
+          metric_ = new java.util.ArrayList(metric_);
           bitField0_ |= 0x00000008;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricOrBuilder> metricBuilder_;
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricOrBuilder> metricBuilder_;
 
       /**
        * repeated .io.prometheus.client.Metric metric = 4;
        */
-      public java.util.List getMetricList() {
+      public java.util.List getMetricList() {
         if (metricBuilder_ == null) {
           return java.util.Collections.unmodifiableList(metric_);
         } else {
@@ -14673,7 +14721,7 @@ public int getMetricCount() {
       /**
        * repeated .io.prometheus.client.Metric metric = 4;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric getMetric(int index) {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric getMetric(int index) {
         if (metricBuilder_ == null) {
           return metric_.get(index);
         } else {
@@ -14684,7 +14732,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
        * repeated .io.prometheus.client.Metric metric = 4;
        */
       public Builder setMetric(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric value) {
         if (metricBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -14701,7 +14749,7 @@ public Builder setMetric(
        * repeated .io.prometheus.client.Metric metric = 4;
        */
       public Builder setMetric(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric.Builder builderForValue) {
         if (metricBuilder_ == null) {
           ensureMetricIsMutable();
           metric_.set(index, builderForValue.build());
@@ -14714,7 +14762,7 @@ public Builder setMetric(
       /**
        * repeated .io.prometheus.client.Metric metric = 4;
        */
-      public Builder addMetric(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric value) {
+      public Builder addMetric(io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric value) {
         if (metricBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -14731,7 +14779,7 @@ public Builder addMetric(io.prometheus.metrics.expositionformats.generated.com_g
        * repeated .io.prometheus.client.Metric metric = 4;
        */
       public Builder addMetric(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric value) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric value) {
         if (metricBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -14748,7 +14796,7 @@ public Builder addMetric(
        * repeated .io.prometheus.client.Metric metric = 4;
        */
       public Builder addMetric(
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric.Builder builderForValue) {
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric.Builder builderForValue) {
         if (metricBuilder_ == null) {
           ensureMetricIsMutable();
           metric_.add(builderForValue.build());
@@ -14762,7 +14810,7 @@ public Builder addMetric(
        * repeated .io.prometheus.client.Metric metric = 4;
        */
       public Builder addMetric(
-          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric.Builder builderForValue) {
+          int index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric.Builder builderForValue) {
         if (metricBuilder_ == null) {
           ensureMetricIsMutable();
           metric_.add(index, builderForValue.build());
@@ -14776,7 +14824,7 @@ public Builder addMetric(
        * repeated .io.prometheus.client.Metric metric = 4;
        */
       public Builder addAllMetric(
-          java.lang.Iterable values) {
+          java.lang.Iterable values) {
         if (metricBuilder_ == null) {
           ensureMetricIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
@@ -14816,14 +14864,14 @@ public Builder removeMetric(int index) {
       /**
        * repeated .io.prometheus.client.Metric metric = 4;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric.Builder getMetricBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric.Builder getMetricBuilder(
           int index) {
         return internalGetMetricFieldBuilder().getBuilder(index);
       }
       /**
        * repeated .io.prometheus.client.Metric metric = 4;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricOrBuilder getMetricOrBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricOrBuilder getMetricOrBuilder(
           int index) {
         if (metricBuilder_ == null) {
           return metric_.get(index);  } else {
@@ -14833,7 +14881,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * repeated .io.prometheus.client.Metric metric = 4;
        */
-      public java.util.List 
+      public java.util.List 
            getMetricOrBuilderList() {
         if (metricBuilder_ != null) {
           return metricBuilder_.getMessageOrBuilderList();
@@ -14844,31 +14892,31 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       /**
        * repeated .io.prometheus.client.Metric metric = 4;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric.Builder addMetricBuilder() {
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric.Builder addMetricBuilder() {
         return internalGetMetricFieldBuilder().addBuilder(
-            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric.getDefaultInstance());
+            io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric.getDefaultInstance());
       }
       /**
        * repeated .io.prometheus.client.Metric metric = 4;
        */
-      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric.Builder addMetricBuilder(
+      public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric.Builder addMetricBuilder(
           int index) {
         return internalGetMetricFieldBuilder().addBuilder(
-            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric.getDefaultInstance());
+            index, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric.getDefaultInstance());
       }
       /**
        * repeated .io.prometheus.client.Metric metric = 4;
        */
-      public java.util.List 
+      public java.util.List 
            getMetricBuilderList() {
         return internalGetMetricFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilder<
-          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricOrBuilder> 
+          io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricOrBuilder> 
           internalGetMetricFieldBuilder() {
         if (metricBuilder_ == null) {
           metricBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.Metric.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricOrBuilder>(
+              io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.Metric.Builder, io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricOrBuilder>(
                   metric_,
                   ((bitField0_ & 0x00000008) != 0),
                   getParentForChildren(),
@@ -14962,12 +15010,12 @@ public Builder setUnitBytes(
     }
 
     // @@protoc_insertion_point(class_scope:io.prometheus.client.MetricFamily)
-    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamily DEFAULT_INSTANCE;
+    private static final io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamily DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamily();
+      DEFAULT_INSTANCE = new io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamily();
     }
 
-    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamily getDefaultInstance() {
+    public static io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamily getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
@@ -15003,7 +15051,7 @@ public com.google.protobuf.Parser getParserForType() {
     }
 
     @java.lang.Override
-    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics.MetricFamily getDefaultInstanceForType() {
+    public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics.MetricFamily getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
@@ -15128,7 +15176,7 @@ public io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_3
       "\002\022\013\n\007UNTYPED\020\003\022\r\n\tHISTOGRAM\020\004\022\023\n\017GAUGE_H" +
       "ISTOGRAM\020\005B\212\001\nLio.prometheus.metrics.exp" +
       "ositionformats.generated.com_google_prot" +
-      "obuf_4_34_1Z:github.com/prometheus/clien" +
+      "obuf_4_35_0Z:github.com/prometheus/clien" +
       "t_model/go;io_prometheus_client"
     };
     descriptor = com.google.protobuf.Descriptors.FileDescriptor
diff --git a/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/generated/Metrics.java b/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/generated/Metrics.java
index fe6e7ae8d..231d33d7d 100644
--- a/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/generated/Metrics.java
+++ b/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/generated/Metrics.java
@@ -1,6 +1,6 @@
 package io.prometheus.metrics.expositionformats.generated;
 
 public final class Metrics
-    extends io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_34_1.Metrics {
+    extends io.prometheus.metrics.expositionformats.generated.com_google_protobuf_4_35_0.Metrics {
   private Metrics() {}
 }
diff --git a/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/internal/PrometheusProtobufWriterImpl.java b/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/internal/PrometheusProtobufWriterImpl.java
index 5e58275ca..9c3f74943 100644
--- a/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/internal/PrometheusProtobufWriterImpl.java
+++ b/prometheus-metrics-exposition-formats/src/main/java/io/prometheus/metrics/expositionformats/internal/PrometheusProtobufWriterImpl.java
@@ -50,7 +50,10 @@ public String toDebugString(MetricSnapshots metricSnapshots, EscapingScheme esca
     for (MetricSnapshot s : merged) {
       MetricSnapshot snapshot = SnapshotEscaper.escapeMetricSnapshot(s, escapingScheme);
       if (!snapshot.getDataPoints().isEmpty()) {
-        stringBuilder.append(TextFormat.printer().printToString(convert(snapshot, escapingScheme)));
+        stringBuilder.append(
+            TextFormat.printer()
+                .printToString(
+                    convert(snapshot, s.getMetadata().getOriginalName(), escapingScheme)));
       }
     }
     return stringBuilder.toString();
@@ -64,12 +67,17 @@ public void write(
     for (MetricSnapshot s : merged) {
       MetricSnapshot snapshot = SnapshotEscaper.escapeMetricSnapshot(s, escapingScheme);
       if (!snapshot.getDataPoints().isEmpty()) {
-        convert(snapshot, escapingScheme).writeDelimitedTo(out);
+        convert(snapshot, s.getMetadata().getOriginalName(), escapingScheme).writeDelimitedTo(out);
       }
     }
   }
 
   public Metrics.MetricFamily convert(MetricSnapshot snapshot, EscapingScheme scheme) {
+    return convert(snapshot, snapshot.getMetadata().getOriginalName(), scheme);
+  }
+
+  private Metrics.MetricFamily convert(
+      MetricSnapshot snapshot, String rawOriginalName, EscapingScheme scheme) {
     Metrics.MetricFamily.Builder builder = Metrics.MetricFamily.newBuilder();
     if (snapshot instanceof CounterSnapshot) {
       for (CounterDataPointSnapshot data : ((CounterSnapshot) snapshot).getDataPoints()) {
@@ -82,7 +90,13 @@ public Metrics.MetricFamily convert(MetricSnapshot snapshot, EscapingScheme sche
         builder.addMetric(convert(data, scheme));
       }
       setMetadataUnlessEmpty(
-          builder, snapshot.getMetadata(), null, Metrics.MetricType.GAUGE, scheme);
+          builder,
+          snapshot.getMetadata(),
+          rawOriginalName,
+          null,
+          Metrics.MetricType.GAUGE,
+          scheme,
+          true);
     } else if (snapshot instanceof HistogramSnapshot) {
       HistogramSnapshot histogram = (HistogramSnapshot) snapshot;
       for (HistogramSnapshot.HistogramDataPointSnapshot data : histogram.getDataPoints()) {
@@ -290,25 +304,49 @@ private void setMetadataUnlessEmpty(
       @Nullable String nameSuffix,
       Metrics.MetricType type,
       EscapingScheme scheme) {
+    setMetadataUnlessEmpty(
+        builder, metadata, metadata.getOriginalName(), nameSuffix, type, scheme, false);
+  }
+
+  private void setMetadataUnlessEmpty(
+      Metrics.MetricFamily.Builder builder,
+      MetricMetadata metadata,
+      String rawOriginalName,
+      @Nullable String nameSuffix,
+      Metrics.MetricType type,
+      EscapingScheme scheme,
+      boolean normalizeLegacyGaugeName) {
     if (builder.getMetricCount() == 0) {
       return;
     }
-    if (nameSuffix == null) {
-      builder.setName(SnapshotEscaper.getMetadataName(metadata, scheme));
-    } else {
-      String expositionBaseName = SnapshotEscaper.getExpositionBaseMetadataName(metadata, scheme);
-      if (expositionBaseName.endsWith(nameSuffix)) {
-        builder.setName(expositionBaseName);
-      } else {
-        builder.setName(SnapshotEscaper.getMetadataName(metadata, scheme) + nameSuffix);
-      }
-    }
+    builder.setName(
+        resolveMetricFamilyName(
+            metadata, rawOriginalName, nameSuffix, scheme, normalizeLegacyGaugeName));
     if (metadata.getHelp() != null) {
       builder.setHelp(metadata.getHelp());
     }
     builder.setType(type);
   }
 
+  private String resolveMetricFamilyName(
+      MetricMetadata metadata,
+      String rawOriginalName,
+      @Nullable String nameSuffix,
+      EscapingScheme scheme,
+      boolean normalizeLegacyGaugeName) {
+    if (normalizeLegacyGaugeName) {
+      return SnapshotEscaper.getLegacyGaugeName(metadata, rawOriginalName, scheme);
+    }
+    if (nameSuffix == null) {
+      return SnapshotEscaper.getMetadataName(metadata, scheme);
+    }
+    String expositionBaseName = SnapshotEscaper.getExpositionBaseMetadataName(metadata, scheme);
+    if (expositionBaseName.endsWith(nameSuffix)) {
+      return expositionBaseName;
+    }
+    return SnapshotEscaper.getMetadataName(metadata, scheme) + nameSuffix;
+  }
+
   private long getNativeCount(HistogramSnapshot.HistogramDataPointSnapshot data) {
     if (data.hasCount()) {
       return data.getCount();
diff --git a/prometheus-metrics-exposition-formats/src/test/java/io/prometheus/metrics/expositionformats/DuplicateNamesProtobufTest.java b/prometheus-metrics-exposition-formats/src/test/java/io/prometheus/metrics/expositionformats/DuplicateNamesProtobufTest.java
index c5fc7bf34..1ae7e3179 100644
--- a/prometheus-metrics-exposition-formats/src/test/java/io/prometheus/metrics/expositionformats/DuplicateNamesProtobufTest.java
+++ b/prometheus-metrics-exposition-formats/src/test/java/io/prometheus/metrics/expositionformats/DuplicateNamesProtobufTest.java
@@ -19,7 +19,7 @@
 import java.util.List;
 import org.junit.jupiter.api.Test;
 
-@SuppressWarnings("NonCanonicalType")
+@SuppressWarnings({"NonCanonicalType", "deprecation"})
 class DuplicateNamesProtobufTest {
 
   private static PrometheusRegistry getPrometheusRegistry() {
@@ -239,6 +239,53 @@ void testDifferentMetrics_producesSeparateMetricFamilies() throws IOException {
     assertThat(gaugeFamily.getMetric(0).getGauge().getValue()).isEqualTo(50.0);
   }
 
+  @Test
+  void testLegacyGaugeNameWithAlternateEscapingSchemes_usesBaseName() throws IOException {
+    MetricSnapshots snapshots =
+        MetricSnapshots.of(
+            GaugeSnapshot.builder()
+                .name("legacy.name.total")
+                .dataPoint(GaugeSnapshot.GaugeDataPointSnapshot.builder().value(7).build())
+                .build());
+
+    assertThat(getSingleMetricFamilyName(snapshots, EscapingScheme.DOTS_ESCAPING))
+        .isEqualTo("legacy_dot_name");
+    assertThat(getSingleMetricFamilyName(snapshots, EscapingScheme.VALUE_ENCODING_ESCAPING))
+        .isEqualTo("U__legacy_2e_name");
+  }
+
+  @Test
+  void testLegacyGaugeNameWithDotTotal_usesBaseName() throws IOException {
+    MetricSnapshots snapshots =
+        MetricSnapshots.of(
+            GaugeSnapshot.builder()
+                .name("legacy.total")
+                .dataPoint(GaugeSnapshot.GaugeDataPointSnapshot.builder().value(7).build())
+                .build());
+    ByteArrayOutputStream out = new ByteArrayOutputStream();
+    PrometheusProtobufWriterImpl writer = new PrometheusProtobufWriterImpl();
+    writer.write(out, snapshots, EscapingScheme.UNDERSCORE_ESCAPING);
+
+    List metricFamilies = parseProtobufOutput(out);
+
+    assertThat(metricFamilies).hasSize(1);
+    Metrics.MetricFamily family = metricFamilies.get(0);
+    assertThat(family.getName()).isEqualTo("legacy");
+    assertThat(family.getType()).isEqualTo(Metrics.MetricType.GAUGE);
+    assertThat(family.getMetricCount()).isEqualTo(1);
+    assertThat(family.getMetric(0).getGauge().getValue()).isEqualTo(7.0);
+  }
+
+  private static String getSingleMetricFamilyName(
+      MetricSnapshots snapshots, EscapingScheme escapingScheme) throws IOException {
+    ByteArrayOutputStream out = new ByteArrayOutputStream();
+    PrometheusProtobufWriterImpl writer = new PrometheusProtobufWriterImpl();
+    writer.write(out, snapshots, escapingScheme);
+    List metricFamilies = parseProtobufOutput(out);
+    assertThat(metricFamilies).hasSize(1);
+    return metricFamilies.get(0).getName();
+  }
+
   private static MetricSnapshots getMetricSnapshots() {
     PrometheusRegistry registry = new PrometheusRegistry();
 
diff --git a/prometheus-metrics-exposition-textformats/pom.xml b/prometheus-metrics-exposition-textformats/pom.xml
index 91cb0de39..3740d6552 100644
--- a/prometheus-metrics-exposition-textformats/pom.xml
+++ b/prometheus-metrics-exposition-textformats/pom.xml
@@ -5,7 +5,7 @@
   
     io.prometheus
     client_java
-    1.6.2-SNAPSHOT
+    1.7.1-SNAPSHOT
   
 
   prometheus-metrics-exposition-textformats
@@ -22,6 +22,12 @@
   
 
   
+    
+      io.prometheus
+      prometheus-metrics-annotations
+      ${project.version}
+      true
+    
     
       io.prometheus
       prometheus-metrics-model
diff --git a/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/ExpositionFormatWriter.java b/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/ExpositionFormatWriter.java
index 03ac229ca..7ea071bf7 100644
--- a/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/ExpositionFormatWriter.java
+++ b/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/ExpositionFormatWriter.java
@@ -1,5 +1,6 @@
 package io.prometheus.metrics.expositionformats;
 
+import io.prometheus.metrics.annotations.StableApi;
 import io.prometheus.metrics.config.EscapingScheme;
 import io.prometheus.metrics.model.snapshots.MetricSnapshots;
 import java.io.ByteArrayOutputStream;
@@ -7,6 +8,7 @@
 import java.io.OutputStream;
 import javax.annotation.Nullable;
 
+@StableApi
 public interface ExpositionFormatWriter {
   boolean accepts(@Nullable String acceptHeader);
 
diff --git a/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/ExpositionFormats.java b/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/ExpositionFormats.java
index feabd89b8..0cfce9b5f 100644
--- a/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/ExpositionFormats.java
+++ b/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/ExpositionFormats.java
@@ -1,10 +1,12 @@
 package io.prometheus.metrics.expositionformats;
 
+import io.prometheus.metrics.annotations.StableApi;
 import io.prometheus.metrics.config.ExporterProperties;
 import io.prometheus.metrics.config.OpenMetrics2Properties;
 import io.prometheus.metrics.config.PrometheusProperties;
 import javax.annotation.Nullable;
 
+@StableApi
 public class ExpositionFormats {
 
   private final PrometheusProtobufWriter prometheusProtobufWriter;
diff --git a/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/OpenMetrics2TextFormatWriter.java b/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/OpenMetrics2TextFormatWriter.java
index 19e1e4c93..f400ecce0 100644
--- a/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/OpenMetrics2TextFormatWriter.java
+++ b/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/OpenMetrics2TextFormatWriter.java
@@ -9,6 +9,7 @@
 import static io.prometheus.metrics.model.snapshots.SnapshotEscaper.getOriginalMetadataName;
 import static io.prometheus.metrics.model.snapshots.SnapshotEscaper.getSnapshotLabelName;
 
+import io.prometheus.metrics.annotations.StableApi;
 import io.prometheus.metrics.config.EscapingScheme;
 import io.prometheus.metrics.config.OpenMetrics2Properties;
 import io.prometheus.metrics.model.snapshots.ClassicHistogramBuckets;
@@ -45,6 +46,7 @@
  * href="https://github.com/prometheus/docs/blob/main/docs/specs/om/open_metrics_spec_2_0.md">OpenMetrics
  * 2.0 specification evolves.
  */
+@StableApi
 public class OpenMetrics2TextFormatWriter implements ExpositionFormatWriter {
 
   public static class Builder {
diff --git a/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/OpenMetricsTextFormatWriter.java b/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/OpenMetricsTextFormatWriter.java
index cd299cb94..02614a561 100644
--- a/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/OpenMetricsTextFormatWriter.java
+++ b/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/OpenMetricsTextFormatWriter.java
@@ -10,6 +10,7 @@
 import static io.prometheus.metrics.model.snapshots.SnapshotEscaper.getMetadataName;
 import static io.prometheus.metrics.model.snapshots.SnapshotEscaper.getSnapshotLabelName;
 
+import io.prometheus.metrics.annotations.StableApi;
 import io.prometheus.metrics.config.EscapingScheme;
 import io.prometheus.metrics.model.snapshots.ClassicHistogramBuckets;
 import io.prometheus.metrics.model.snapshots.CounterSnapshot;
@@ -43,6 +44,7 @@
  * Write the OpenMetrics text format as defined on https://openmetrics.io.
  */
+@StableApi
 public class OpenMetricsTextFormatWriter implements ExpositionFormatWriter {
 
   public static class Builder {
diff --git a/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/PrometheusProtobufWriter.java b/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/PrometheusProtobufWriter.java
index 342beb255..d7f4e4469 100644
--- a/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/PrometheusProtobufWriter.java
+++ b/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/PrometheusProtobufWriter.java
@@ -1,5 +1,6 @@
 package io.prometheus.metrics.expositionformats;
 
+import io.prometheus.metrics.annotations.StableApi;
 import io.prometheus.metrics.config.EscapingScheme;
 import io.prometheus.metrics.model.snapshots.MetricSnapshots;
 import java.io.IOException;
@@ -12,6 +13,7 @@
  *
  * 

As of today, this is the only exposition format that supports native histograms. */ +@StableApi public class PrometheusProtobufWriter implements ExpositionFormatWriter { @Nullable private static final ExpositionFormatWriter DELEGATE = createProtobufWriter(); diff --git a/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/PrometheusTextFormatWriter.java b/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/PrometheusTextFormatWriter.java index 29894b103..f94d710ba 100644 --- a/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/PrometheusTextFormatWriter.java +++ b/prometheus-metrics-exposition-textformats/src/main/java/io/prometheus/metrics/expositionformats/PrometheusTextFormatWriter.java @@ -8,9 +8,11 @@ import static io.prometheus.metrics.expositionformats.TextFormatUtil.writePrometheusTimestamp; import static io.prometheus.metrics.model.snapshots.SnapshotEscaper.escapeMetricSnapshot; import static io.prometheus.metrics.model.snapshots.SnapshotEscaper.getExpositionBaseMetadataName; +import static io.prometheus.metrics.model.snapshots.SnapshotEscaper.getLegacyGaugeName; import static io.prometheus.metrics.model.snapshots.SnapshotEscaper.getMetadataName; import static io.prometheus.metrics.model.snapshots.SnapshotEscaper.getSnapshotLabelName; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.EscapingScheme; import io.prometheus.metrics.model.snapshots.ClassicHistogramBuckets; import io.prometheus.metrics.model.snapshots.CounterSnapshot; @@ -39,6 +41,7 @@ * Write the Prometheus text format. This is the default if you view a Prometheus endpoint with your * Web browser. */ +@StableApi public class PrometheusTextFormatWriter implements ExpositionFormatWriter { public static final String CONTENT_TYPE = "text/plain; version=0.0.4; charset=utf-8"; @@ -60,6 +63,9 @@ public Builder setIncludeCreatedTimestamps(boolean includeCreatedTimestamps) { return this; } + /** + * @deprecated Use {@link #build()} with the default millisecond timestamps instead. + */ @Deprecated public Builder setTimestampsInMs(boolean timestampsInMs) { this.timestampsInMs = timestampsInMs; @@ -123,7 +129,7 @@ public void write(OutputStream out, MetricSnapshots metricSnapshots, EscapingSch if (snapshot instanceof CounterSnapshot) { writeCounter(writer, (CounterSnapshot) snapshot, scheme); } else if (snapshot instanceof GaugeSnapshot) { - writeGauge(writer, (GaugeSnapshot) snapshot, scheme); + writeGauge(writer, (GaugeSnapshot) snapshot, s.getMetadata().getOriginalName(), scheme); } else if (snapshot instanceof HistogramSnapshot) { writeHistogram(writer, (HistogramSnapshot) snapshot, scheme); } else if (snapshot instanceof SummarySnapshot) { @@ -189,13 +195,14 @@ private void writeCounter(Writer writer, CounterSnapshot snapshot, EscapingSchem } } - private void writeGauge(Writer writer, GaugeSnapshot snapshot, EscapingScheme scheme) + private void writeGauge( + Writer writer, GaugeSnapshot snapshot, String rawOriginalName, EscapingScheme scheme) throws IOException { MetricMetadata metadata = snapshot.getMetadata(); - writeMetadata(writer, null, "gauge", metadata, scheme); - String name = getMetadataName(metadata, scheme); + String gaugeName = getLegacyGaugeName(metadata, rawOriginalName, scheme); + writeMetadataWithFullName(writer, gaugeName, "gauge", metadata); for (GaugeSnapshot.GaugeDataPointSnapshot data : snapshot.getDataPoints()) { - writeNameAndLabels(writer, name, null, data.getLabels(), scheme); + writeNameAndLabels(writer, gaugeName, null, data.getLabels(), scheme); writeDouble(writer, data.getValue()); writeScrapeTimestampAndNewline(writer, data); } diff --git a/prometheus-metrics-exposition-textformats/src/test/java/io/prometheus/metrics/expositionformats/DuplicateNamesExpositionTest.java b/prometheus-metrics-exposition-textformats/src/test/java/io/prometheus/metrics/expositionformats/DuplicateNamesExpositionTest.java index d1e8c2b9a..db564d479 100644 --- a/prometheus-metrics-exposition-textformats/src/test/java/io/prometheus/metrics/expositionformats/DuplicateNamesExpositionTest.java +++ b/prometheus-metrics-exposition-textformats/src/test/java/io/prometheus/metrics/expositionformats/DuplicateNamesExpositionTest.java @@ -13,6 +13,7 @@ import java.io.IOException; import org.junit.jupiter.api.Test; +@SuppressWarnings("deprecation") class DuplicateNamesExpositionTest { private static PrometheusRegistry getPrometheusRegistry() { diff --git a/prometheus-metrics-exposition-textformats/src/test/java/io/prometheus/metrics/expositionformats/ExpositionFormatsTest.java b/prometheus-metrics-exposition-textformats/src/test/java/io/prometheus/metrics/expositionformats/ExpositionFormatsTest.java index 454b3ef7b..c875b94b0 100644 --- a/prometheus-metrics-exposition-textformats/src/test/java/io/prometheus/metrics/expositionformats/ExpositionFormatsTest.java +++ b/prometheus-metrics-exposition-textformats/src/test/java/io/prometheus/metrics/expositionformats/ExpositionFormatsTest.java @@ -666,6 +666,86 @@ void testGaugeWithDots() throws IOException { assertPrometheusProtobuf(prometheusProtobuf, gauge); } + @Test + void testGaugeReservedSuffixCompatibilityWithAlternateEscapingSchemes() throws IOException { + GaugeSnapshot totalGauge = + GaugeSnapshot.builder() + .name("legacy.name.total") + .dataPoint(GaugeDataPointSnapshot.builder().value(6).build()) + .build(); + assertPrometheusText( + """ + # TYPE legacy_dot_name gauge + legacy_dot_name 6.0 + """, + totalGauge, + EscapingScheme.DOTS_ESCAPING); + assertPrometheusText( + """ + # TYPE U__legacy_2e_name gauge + U__legacy_2e_name 6.0 + """, + totalGauge, + EscapingScheme.VALUE_ENCODING_ESCAPING); + } + + @Test + void testGaugeReservedSuffixCompatibilityOutsideOpenMetrics() throws IOException { + GaugeSnapshot createdGauge = + GaugeSnapshot.builder() + .name("test3.created") + .dataPoint(GaugeDataPointSnapshot.builder().value(3).build()) + .build(); + assertOpenMetricsText( + """ + # TYPE U__test3_2e_created gauge + U__test3_2e_created 3.0 + # EOF + """, + createdGauge); + assertPrometheusText( + """ + # TYPE test3 gauge + test3 3.0 + """, + createdGauge); + assertPrometheusTextWithoutCreated( + """ + # TYPE test3 gauge + test3 3.0 + """, + createdGauge); + assertPrometheusProtobuf( + "name: \"test3\" type: GAUGE metric { gauge { value: 3.0 } }", createdGauge); + + GaugeSnapshot totalGauge = + GaugeSnapshot.builder() + .name("test6.total") + .dataPoint(GaugeDataPointSnapshot.builder().value(6).build()) + .build(); + assertOpenMetricsText( + """ + # TYPE U__test6_2e_total gauge + U__test6_2e_total 6.0 + # EOF + """, + totalGauge); + assertPrometheusText( + """ + # TYPE test6 gauge + test6 6.0 + """, + totalGauge); + assertPrometheusTextWithoutCreated( + """ + # TYPE test6 gauge + test6 6.0 + """, + totalGauge); + assertPrometheusProtobuf( + "name: \"test6\" type: GAUGE metric { gauge { value: 6.0 } }", totalGauge); + } + @Test void testGaugeUTF8() throws IOException { String prometheusText = @@ -3088,9 +3168,14 @@ private void assertOpenMetricsTextWithoutCreated(String expected, MetricSnapshot } private void assertPrometheusText(String expected, MetricSnapshot snapshot) throws IOException { + assertPrometheusText(expected, snapshot, EscapingScheme.UNDERSCORE_ESCAPING); + } + + private void assertPrometheusText( + String expected, MetricSnapshot snapshot, EscapingScheme escapingScheme) throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(); getPrometheusWriter(PrometheusTextFormatWriter.builder().setIncludeCreatedTimestamps(true)) - .write(out, MetricSnapshots.of(snapshot), EscapingScheme.UNDERSCORE_ESCAPING); + .write(out, MetricSnapshots.of(snapshot), escapingScheme); assertThat(out).hasToString(expected); } diff --git a/prometheus-metrics-instrumentation-caffeine/pom.xml b/prometheus-metrics-instrumentation-caffeine/pom.xml index f2776f309..d931a837e 100644 --- a/prometheus-metrics-instrumentation-caffeine/pom.xml +++ b/prometheus-metrics-instrumentation-caffeine/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT prometheus-metrics-instrumentation-caffeine @@ -29,6 +29,12 @@ + + io.prometheus + prometheus-metrics-annotations + ${project.version} + true + io.prometheus prometheus-metrics-core diff --git a/prometheus-metrics-instrumentation-caffeine/src/main/java/io/prometheus/metrics/instrumentation/caffeine/CacheMetricsCollector.java b/prometheus-metrics-instrumentation-caffeine/src/main/java/io/prometheus/metrics/instrumentation/caffeine/CacheMetricsCollector.java index c847e13eb..ba7552910 100644 --- a/prometheus-metrics-instrumentation-caffeine/src/main/java/io/prometheus/metrics/instrumentation/caffeine/CacheMetricsCollector.java +++ b/prometheus-metrics-instrumentation-caffeine/src/main/java/io/prometheus/metrics/instrumentation/caffeine/CacheMetricsCollector.java @@ -5,6 +5,7 @@ import com.github.benmanes.caffeine.cache.LoadingCache; import com.github.benmanes.caffeine.cache.Policy; import com.github.benmanes.caffeine.cache.stats.CacheStats; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.model.registry.MultiCollector; import io.prometheus.metrics.model.snapshots.CounterSnapshot; import io.prometheus.metrics.model.snapshots.GaugeSnapshot; @@ -55,6 +56,7 @@ * caffeine_cache_load_duration_seconds_sum{cache="mycache"} 0.0034 *

*/ +@StableApi public class CacheMetricsCollector implements MultiCollector { private static final double NANOSECONDS_PER_SECOND = 1_000_000_000.0; @@ -95,6 +97,8 @@ public class CacheMetricsCollector implements MultiCollector { * *

Note that the {@link #builder()} API has different default values than this deprecated * constructor. + * + * @deprecated Use {@link #builder()} instead. */ @Deprecated public CacheMetricsCollector() { @@ -313,7 +317,12 @@ public MetricSnapshots collect() { .build(); } + /** + * @deprecated Use {@link #getMetricFamilyDescriptors()} instead. + */ @Override + @Deprecated + @SuppressWarnings("InlineMeSuggester") public List getPrometheusNames() { if (!collectWeightedSize) { return ALL_METRIC_NAMES.stream() diff --git a/prometheus-metrics-instrumentation-caffeine/src/test/java/io/prometheus/metrics/instrumentation/caffeine/CacheMetricsCollectorTest.java b/prometheus-metrics-instrumentation-caffeine/src/test/java/io/prometheus/metrics/instrumentation/caffeine/CacheMetricsCollectorTest.java index d2d12aa11..cbad48b56 100644 --- a/prometheus-metrics-instrumentation-caffeine/src/test/java/io/prometheus/metrics/instrumentation/caffeine/CacheMetricsCollectorTest.java +++ b/prometheus-metrics-instrumentation-caffeine/src/test/java/io/prometheus/metrics/instrumentation/caffeine/CacheMetricsCollectorTest.java @@ -22,7 +22,7 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.EnumSource; -@SuppressWarnings("CheckReturnValue") +@SuppressWarnings({"CheckReturnValue", "deprecation"}) class CacheMetricsCollectorTest { // This enum was added to simplify test parametrization on argument options. enum Options { diff --git a/prometheus-metrics-instrumentation-dropwizard/pom.xml b/prometheus-metrics-instrumentation-dropwizard/pom.xml index 01bceb8e4..4833cae5b 100644 --- a/prometheus-metrics-instrumentation-dropwizard/pom.xml +++ b/prometheus-metrics-instrumentation-dropwizard/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT prometheus-metrics-instrumentation-dropwizard @@ -29,6 +29,12 @@ + + io.prometheus + prometheus-metrics-annotations + ${project.version} + true + io.prometheus prometheus-metrics-core @@ -37,7 +43,7 @@ io.dropwizard.metrics metrics-core - 4.2.38 + 4.2.39 provided diff --git a/prometheus-metrics-instrumentation-dropwizard/src/main/java/io/prometheus/metrics/instrumentation/dropwizard/DropwizardExports.java b/prometheus-metrics-instrumentation-dropwizard/src/main/java/io/prometheus/metrics/instrumentation/dropwizard/DropwizardExports.java index 0c1c8455f..4e527ce87 100644 --- a/prometheus-metrics-instrumentation-dropwizard/src/main/java/io/prometheus/metrics/instrumentation/dropwizard/DropwizardExports.java +++ b/prometheus-metrics-instrumentation-dropwizard/src/main/java/io/prometheus/metrics/instrumentation/dropwizard/DropwizardExports.java @@ -9,6 +9,7 @@ import com.codahale.metrics.MetricRegistry; import com.codahale.metrics.Snapshot; import com.codahale.metrics.Timer; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.instrumentation.dropwizard5.InvalidMetricHandler; import io.prometheus.metrics.instrumentation.dropwizard5.internal.AbstractDropwizardExports; import io.prometheus.metrics.instrumentation.dropwizard5.labels.CustomLabelMapper; @@ -22,6 +23,7 @@ *

This is a thin wrapper around {@link AbstractDropwizardExports} that handles the Dropwizard * 4.x specific API where metric names are Strings. */ +@StableApi public class DropwizardExports extends AbstractDropwizardExports< MetricRegistry, diff --git a/prometheus-metrics-instrumentation-dropwizard5/pom.xml b/prometheus-metrics-instrumentation-dropwizard5/pom.xml index 1b973bf58..ab2908a65 100644 --- a/prometheus-metrics-instrumentation-dropwizard5/pom.xml +++ b/prometheus-metrics-instrumentation-dropwizard5/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT prometheus-metrics-instrumentation-dropwizard5 @@ -22,6 +22,12 @@ + + io.prometheus + prometheus-metrics-annotations + ${project.version} + true + io.prometheus prometheus-metrics-core @@ -30,7 +36,7 @@ io.dropwizard.metrics5 metrics-core - 5.0.6 + 5.0.7 provided diff --git a/prometheus-metrics-instrumentation-dropwizard5/src/main/java/io/prometheus/metrics/instrumentation/dropwizard5/DropwizardExports.java b/prometheus-metrics-instrumentation-dropwizard5/src/main/java/io/prometheus/metrics/instrumentation/dropwizard5/DropwizardExports.java index 86c64b54e..dec51dc92 100644 --- a/prometheus-metrics-instrumentation-dropwizard5/src/main/java/io/prometheus/metrics/instrumentation/dropwizard5/DropwizardExports.java +++ b/prometheus-metrics-instrumentation-dropwizard5/src/main/java/io/prometheus/metrics/instrumentation/dropwizard5/DropwizardExports.java @@ -10,6 +10,7 @@ import io.dropwizard.metrics5.MetricRegistry; import io.dropwizard.metrics5.Snapshot; import io.dropwizard.metrics5.Timer; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.instrumentation.dropwizard5.internal.AbstractDropwizardExports; import io.prometheus.metrics.instrumentation.dropwizard5.labels.CustomLabelMapper; import io.prometheus.metrics.model.registry.PrometheusRegistry; @@ -22,6 +23,7 @@ *

This is a thin wrapper around {@link AbstractDropwizardExports} that handles the Dropwizard * 5.x specific API where metric names are {@link MetricName} objects. */ +@StableApi public class DropwizardExports extends AbstractDropwizardExports< MetricRegistry, diff --git a/prometheus-metrics-instrumentation-dropwizard5/src/main/java/io/prometheus/metrics/instrumentation/dropwizard5/InvalidMetricHandler.java b/prometheus-metrics-instrumentation-dropwizard5/src/main/java/io/prometheus/metrics/instrumentation/dropwizard5/InvalidMetricHandler.java index bac1aa0af..cb7d965ff 100644 --- a/prometheus-metrics-instrumentation-dropwizard5/src/main/java/io/prometheus/metrics/instrumentation/dropwizard5/InvalidMetricHandler.java +++ b/prometheus-metrics-instrumentation-dropwizard5/src/main/java/io/prometheus/metrics/instrumentation/dropwizard5/InvalidMetricHandler.java @@ -1,6 +1,9 @@ package io.prometheus.metrics.instrumentation.dropwizard5; +import io.prometheus.metrics.annotations.StableApi; + @FunctionalInterface +@StableApi public interface InvalidMetricHandler { InvalidMetricHandler ALWAYS_THROW = (metricName, exc) -> false; diff --git a/prometheus-metrics-instrumentation-dropwizard5/src/main/java/io/prometheus/metrics/instrumentation/dropwizard5/labels/CustomLabelMapper.java b/prometheus-metrics-instrumentation-dropwizard5/src/main/java/io/prometheus/metrics/instrumentation/dropwizard5/labels/CustomLabelMapper.java index f2174970c..61fb5de5a 100644 --- a/prometheus-metrics-instrumentation-dropwizard5/src/main/java/io/prometheus/metrics/instrumentation/dropwizard5/labels/CustomLabelMapper.java +++ b/prometheus-metrics-instrumentation-dropwizard5/src/main/java/io/prometheus/metrics/instrumentation/dropwizard5/labels/CustomLabelMapper.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.instrumentation.dropwizard5.labels; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.model.snapshots.Labels; import java.util.ArrayList; import java.util.List; @@ -10,6 +11,7 @@ * labels and names. Prometheus metric name and labels are extracted from the Dropwizard name based * on the provided list of {@link MapperConfig}s. The FIRST matching config will be used. */ +@StableApi public class CustomLabelMapper { private final List compiledMapperConfigs; diff --git a/prometheus-metrics-instrumentation-dropwizard5/src/main/java/io/prometheus/metrics/instrumentation/dropwizard5/labels/MapperConfig.java b/prometheus-metrics-instrumentation-dropwizard5/src/main/java/io/prometheus/metrics/instrumentation/dropwizard5/labels/MapperConfig.java index 2fced7ef6..46d4d36e4 100644 --- a/prometheus-metrics-instrumentation-dropwizard5/src/main/java/io/prometheus/metrics/instrumentation/dropwizard5/labels/MapperConfig.java +++ b/prometheus-metrics-instrumentation-dropwizard5/src/main/java/io/prometheus/metrics/instrumentation/dropwizard5/labels/MapperConfig.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.instrumentation.dropwizard5.labels; +import io.prometheus.metrics.annotations.StableApi; import java.util.HashMap; import java.util.Map; import java.util.regex.Pattern; @@ -15,6 +16,7 @@ *

Dropwizard metrics that match the "match" pattern will be further processed to have a new name * and new labels based on this config. */ +@StableApi public final class MapperConfig { // Each part of the metric name between dots. Accepts letters, digits, underscores, hyphens, // colons, and glob wildcards (*) to support a broad range of metric naming conventions. diff --git a/prometheus-metrics-instrumentation-guava/pom.xml b/prometheus-metrics-instrumentation-guava/pom.xml index bb23faf3e..ef85b36ea 100644 --- a/prometheus-metrics-instrumentation-guava/pom.xml +++ b/prometheus-metrics-instrumentation-guava/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT prometheus-metrics-instrumentation-guava @@ -29,6 +29,12 @@ + + io.prometheus + prometheus-metrics-annotations + ${project.version} + true + io.prometheus prometheus-metrics-core diff --git a/prometheus-metrics-instrumentation-guava/src/main/java/io/prometheus/metrics/instrumentation/guava/CacheMetricsCollector.java b/prometheus-metrics-instrumentation-guava/src/main/java/io/prometheus/metrics/instrumentation/guava/CacheMetricsCollector.java index 42473c686..b807a28f0 100644 --- a/prometheus-metrics-instrumentation-guava/src/main/java/io/prometheus/metrics/instrumentation/guava/CacheMetricsCollector.java +++ b/prometheus-metrics-instrumentation-guava/src/main/java/io/prometheus/metrics/instrumentation/guava/CacheMetricsCollector.java @@ -3,6 +3,7 @@ import com.google.common.cache.Cache; import com.google.common.cache.CacheStats; import com.google.common.cache.LoadingCache; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.model.registry.MultiCollector; import io.prometheus.metrics.model.snapshots.CounterSnapshot; import io.prometheus.metrics.model.snapshots.GaugeSnapshot; @@ -51,6 +52,7 @@ * guava_cache_load_duration_seconds_sum{cache="mycache"} 0.0034 *

*/ +@StableApi public class CacheMetricsCollector implements MultiCollector { private static final double NANOSECONDS_PER_SECOND = 1_000_000_000.0; @@ -216,7 +218,12 @@ public MetricSnapshots collect() { return metricSnapshotsBuilder.build(); } + /** + * @deprecated Use {@link #getMetricFamilyDescriptors()} instead. + */ @Override + @Deprecated + @SuppressWarnings("InlineMeSuggester") public List getPrometheusNames() { return ALL_METRIC_NAMES; } diff --git a/prometheus-metrics-instrumentation-guava/src/test/java/io/prometheus/metrics/instrumentation/guava/CacheMetricsCollectorTest.java b/prometheus-metrics-instrumentation-guava/src/test/java/io/prometheus/metrics/instrumentation/guava/CacheMetricsCollectorTest.java index 3373afaed..d56e6c15c 100644 --- a/prometheus-metrics-instrumentation-guava/src/test/java/io/prometheus/metrics/instrumentation/guava/CacheMetricsCollectorTest.java +++ b/prometheus-metrics-instrumentation-guava/src/test/java/io/prometheus/metrics/instrumentation/guava/CacheMetricsCollectorTest.java @@ -20,6 +20,7 @@ import java.util.List; import org.junit.jupiter.api.Test; +@SuppressWarnings("deprecation") class CacheMetricsCollectorTest { @Test diff --git a/prometheus-metrics-instrumentation-jvm/pom.xml b/prometheus-metrics-instrumentation-jvm/pom.xml index d50a567e4..c88eb1ea5 100644 --- a/prometheus-metrics-instrumentation-jvm/pom.xml +++ b/prometheus-metrics-instrumentation-jvm/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT prometheus-metrics-instrumentation-jvm @@ -22,6 +22,12 @@ + + io.prometheus + prometheus-metrics-annotations + ${project.version} + true + io.prometheus prometheus-metrics-core diff --git a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmBufferPoolMetrics.java b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmBufferPoolMetrics.java index 8fc4b87e9..a31d46ba4 100644 --- a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmBufferPoolMetrics.java +++ b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmBufferPoolMetrics.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.instrumentation.jvm; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.core.metrics.GaugeWithCallback; import io.prometheus.metrics.model.registry.PrometheusRegistry; @@ -41,6 +42,7 @@ * jvm_buffer_pool_used_bytes{pool="mapped"} 0.0 *
*/ +@StableApi public class JvmBufferPoolMetrics { private static final String JVM_BUFFER_POOL_USED_BYTES = "jvm_buffer_pool_used_bytes"; diff --git a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmClassLoadingMetrics.java b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmClassLoadingMetrics.java index 34e9dcb8a..28b10cfb7 100644 --- a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmClassLoadingMetrics.java +++ b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmClassLoadingMetrics.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.instrumentation.jvm; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.core.metrics.CounterWithCallback; import io.prometheus.metrics.core.metrics.GaugeWithCallback; @@ -37,6 +38,7 @@ * jvm_classes_unloaded_total 0.0 *
*/ +@StableApi public class JvmClassLoadingMetrics { private static final String JVM_CLASSES_CURRENTLY_LOADED = "jvm_classes_currently_loaded"; diff --git a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmCompilationMetrics.java b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmCompilationMetrics.java index 975b6c6a3..86b5cc88d 100644 --- a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmCompilationMetrics.java +++ b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmCompilationMetrics.java @@ -2,6 +2,7 @@ import static io.prometheus.metrics.model.snapshots.Unit.millisToSeconds; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.core.metrics.CounterWithCallback; import io.prometheus.metrics.model.registry.PrometheusRegistry; @@ -33,6 +34,7 @@ * jvm_compilation_time_seconds_total 0.152 *
*/ +@StableApi public class JvmCompilationMetrics { private static final String JVM_COMPILATION_TIME_SECONDS_TOTAL = diff --git a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmGarbageCollectorMetrics.java b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmGarbageCollectorMetrics.java index a87b52a4f..aec943706 100644 --- a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmGarbageCollectorMetrics.java +++ b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmGarbageCollectorMetrics.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.instrumentation.jvm; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.core.metrics.SummaryWithCallback; import io.prometheus.metrics.model.registry.PrometheusRegistry; @@ -37,6 +38,7 @@ * jvm_gc_collection_seconds_sum{gc="PS Scavenge"} 0.0 *
*/ +@StableApi public class JvmGarbageCollectorMetrics { private static final String JVM_GC_COLLECTION_SECONDS = "jvm_gc_collection_seconds"; diff --git a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmMemoryMetrics.java b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmMemoryMetrics.java index 1b34dba6c..2fb377882 100644 --- a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmMemoryMetrics.java +++ b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmMemoryMetrics.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.instrumentation.jvm; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.core.metrics.GaugeWithCallback; import io.prometheus.metrics.model.registry.PrometheusRegistry; @@ -104,6 +105,7 @@ * jvm_memory_used_bytes{area="nonheap"} 1.1490688E7 *
*/ +@StableApi public class JvmMemoryMetrics { private static final String JVM_MEMORY_OBJECTS_PENDING_FINALIZATION = diff --git a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmMemoryPoolAllocationMetrics.java b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmMemoryPoolAllocationMetrics.java index 5dfb4199b..a8f520584 100644 --- a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmMemoryPoolAllocationMetrics.java +++ b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmMemoryPoolAllocationMetrics.java @@ -2,6 +2,7 @@ import com.sun.management.GarbageCollectionNotificationInfo; import com.sun.management.GcInfo; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.core.metrics.Counter; import io.prometheus.metrics.model.registry.PrometheusRegistry; @@ -47,6 +48,7 @@ * jvm_memory_pool_allocated_bytes_total{pool="PS Survivor Space"} 4115280.0 *
*/ +@StableApi public class JvmMemoryPoolAllocationMetrics { private static final String JVM_MEMORY_POOL_ALLOCATED_BYTES_TOTAL = diff --git a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmMetrics.java b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmMetrics.java index b0abd86b1..d7ab40d13 100644 --- a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmMetrics.java +++ b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmMetrics.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.instrumentation.jvm; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.model.registry.PrometheusRegistry; import io.prometheus.metrics.model.snapshots.Labels; @@ -13,6 +14,7 @@ * JvmMetrics.builder().register(); * }
*/ +@StableApi public class JvmMetrics { private static final Set REGISTERED = ConcurrentHashMap.newKeySet(); diff --git a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmNativeMemoryMetrics.java b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmNativeMemoryMetrics.java index 6b11df38a..d08e3fb11 100644 --- a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmNativeMemoryMetrics.java +++ b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmNativeMemoryMetrics.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.instrumentation.jvm; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.core.metrics.GaugeWithCallback; import io.prometheus.metrics.model.registry.PrometheusRegistry; @@ -85,6 +86,7 @@ * jvm_native_memory_reserved_bytes{pool="Unknown"} 32768.0 *
*/ +@StableApi public class JvmNativeMemoryMetrics { private static final String JVM_NATIVE_MEMORY_RESERVED_BYTES = "jvm_native_memory_reserved_bytes"; private static final String JVM_NATIVE_MEMORY_COMMITTED_BYTES = diff --git a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmRuntimeInfoMetric.java b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmRuntimeInfoMetric.java index 58363780f..095b643b0 100644 --- a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmRuntimeInfoMetric.java +++ b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmRuntimeInfoMetric.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.instrumentation.jvm; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.core.metrics.Info; import io.prometheus.metrics.model.registry.PrometheusRegistry; @@ -26,6 +27,7 @@ * jvm_runtime_info{runtime="OpenJDK Runtime Environment",vendor="Oracle Corporation",version="1.8.0_382-b05"} 1 *
*/ +@StableApi public class JvmRuntimeInfoMetric { private static final String JVM_RUNTIME_INFO = "jvm_runtime_info"; diff --git a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmThreadsMetrics.java b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmThreadsMetrics.java index 0e98e29d3..af41887bf 100644 --- a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmThreadsMetrics.java +++ b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/JvmThreadsMetrics.java @@ -2,6 +2,7 @@ import static java.util.Objects.requireNonNull; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.core.metrics.CounterWithCallback; import io.prometheus.metrics.core.metrics.GaugeWithCallback; @@ -61,6 +62,7 @@ * jvm_threads_state{state="WAITING"} 3.0 *
*/ +@StableApi public class JvmThreadsMetrics { private static final String UNKNOWN = "UNKNOWN"; diff --git a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/ProcessMetrics.java b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/ProcessMetrics.java index b341f848a..6132ad08e 100644 --- a/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/ProcessMetrics.java +++ b/prometheus-metrics-instrumentation-jvm/src/main/java/io/prometheus/metrics/instrumentation/jvm/ProcessMetrics.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.instrumentation.jvm; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.core.metrics.CounterWithCallback; import io.prometheus.metrics.core.metrics.GaugeWithCallback; @@ -67,6 +68,7 @@ * process_virtual_memory_bytes 1.2683624448E10 *
*/ +@StableApi public class ProcessMetrics { private static final String PROCESS_CPU_SECONDS_TOTAL = "process_cpu_seconds_total"; diff --git a/prometheus-metrics-model/pom.xml b/prometheus-metrics-model/pom.xml index cdac0a60b..257a01f45 100644 --- a/prometheus-metrics-model/pom.xml +++ b/prometheus-metrics-model/pom.xml @@ -6,7 +6,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT prometheus-metrics-model @@ -22,6 +22,12 @@ + + io.prometheus + prometheus-metrics-annotations + ${project.version} + true + io.prometheus prometheus-metrics-config diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/Collector.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/Collector.java index 1d1e7d232..0f2ccd516 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/Collector.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/Collector.java @@ -1,7 +1,10 @@ package io.prometheus.metrics.model.registry; +import io.prometheus.metrics.annotations.StableApi; +import io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor; import io.prometheus.metrics.model.snapshots.MetricMetadata; import io.prometheus.metrics.model.snapshots.MetricSnapshot; +import java.util.Collections; import java.util.Set; import java.util.function.Predicate; import javax.annotation.Nullable; @@ -11,6 +14,7 @@ * href="https://prometheus.io/docs/instrumenting/writing_clientlibs/">https://prometheus.io/docs/instrumenting/writing_clientlibs/. */ @FunctionalInterface +@StableApi public interface Collector { /** Called when the Prometheus server scrapes metrics. */ @@ -60,6 +64,33 @@ default MetricSnapshot collect( } } + /** + * Returns a registration-time descriptor for this metric family. + * + *

The registry uses this descriptor for duplicate-name, type, label-schema, help, and unit + * validation at registration time. Returning {@code null} means registration-time validation is + * skipped for this collector. + * + *

The default implementation adapts the deprecated fragmented metadata methods. New collectors + * with fixed registration-time metadata should override this method directly. + */ + @Nullable + @SuppressWarnings("deprecation") + default MetricFamilyDescriptor getMetricFamilyDescriptor() { + String prometheusName = getPrometheusName(); + MetricType metricType = getMetricType(); + if (prometheusName == null || metricType == null) { + return null; + } + MetricMetadata metadata = getMetadata(); + if (metadata == null) { + metadata = new MetricMetadata(prometheusName); + } + Set labelNames = getLabelNames(); + return MetricFamilyDescriptor.of( + metricType, metadata, labelNames == null ? Collections.emptySet() : labelNames); + } + /** * This is called in two places: * @@ -77,7 +108,10 @@ default MetricSnapshot collect( * this and return the name. * *

All metrics in {@code prometheus-metrics-core} override this. + * + * @deprecated Override {@link #getMetricFamilyDescriptor()} instead. */ + @Deprecated @Nullable default String getPrometheusName() { return null; @@ -94,7 +128,9 @@ default String getPrometheusName() { * result in invalid exposition output. * * @return the metric type, or {@code null} to skip validation + * @deprecated Override {@link #getMetricFamilyDescriptor()} instead. */ + @Deprecated @Nullable default MetricType getMetricType() { return null; @@ -118,7 +154,9 @@ default MetricType getMetricType() { * * @return the set of all label names, or {@code null} (treated as empty) for a metric with no * labels + * @deprecated Override {@link #getMetricFamilyDescriptor()} instead. */ + @Deprecated @Nullable default Set getLabelNames() { return null; @@ -132,7 +170,9 @@ default Set getLabelNames() { * collector. * * @return the metric metadata, or {@code null} to skip help/unit validation + * @deprecated Override {@link #getMetricFamilyDescriptor()} instead. */ + @Deprecated @Nullable default MetricMetadata getMetadata() { return null; diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/MetricNameFilter.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/MetricNameFilter.java index 609f7fd33..642f27150 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/MetricNameFilter.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/MetricNameFilter.java @@ -2,6 +2,7 @@ import static java.util.Collections.unmodifiableCollection; +import io.prometheus.metrics.annotations.StableApi; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -9,6 +10,7 @@ import javax.annotation.Nullable; /** Filter samples (i.e. time series) by name. */ +@StableApi public class MetricNameFilter implements Predicate { /** For convenience, a filter that allows all names. */ diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/MetricType.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/MetricType.java index 5258da84e..f1b5d76ba 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/MetricType.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/MetricType.java @@ -1,11 +1,14 @@ package io.prometheus.metrics.model.registry; +import io.prometheus.metrics.annotations.StableApi; + /** * Represents the type of Prometheus metric. * *

This enum is used for registration-time validation to ensure that metrics with the same name * have consistent types across all registered collectors. */ +@StableApi public enum MetricType { COUNTER, GAUGE, diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/MultiCollector.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/MultiCollector.java index 27ac3e10c..54ce8c47c 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/MultiCollector.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/MultiCollector.java @@ -1,8 +1,11 @@ package io.prometheus.metrics.model.registry; +import io.prometheus.metrics.annotations.StableApi; +import io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor; import io.prometheus.metrics.model.snapshots.MetricMetadata; import io.prometheus.metrics.model.snapshots.MetricSnapshot; import io.prometheus.metrics.model.snapshots.MetricSnapshots; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Set; @@ -11,6 +14,7 @@ /** Like {@link Collector}, but collecting multiple Snapshots at once. */ @FunctionalInterface +@StableApi public interface MultiCollector { /** Called when the Prometheus server scrapes metrics. */ @@ -53,6 +57,36 @@ default MetricSnapshots collect( return result.build(); } + /** + * Returns registration-time descriptors for the metric families collected by this collector. + * + *

The registry uses these descriptors for duplicate-name, type, label-schema, help, and unit + * validation at registration time. Returning an empty list means registration-time validation is + * skipped for this collector. + * + *

The default implementation adapts the deprecated fragmented metadata methods. New collectors + * with fixed registration-time metadata should override this method directly. + */ + @SuppressWarnings("deprecation") + default List getMetricFamilyDescriptors() { + List prometheusNames = getPrometheusNames(); + List descriptors = new ArrayList<>(prometheusNames.size()); + for (String prometheusName : prometheusNames) { + MetricType metricType = getMetricType(prometheusName); + if (metricType != null) { + MetricMetadata metadata = getMetadata(prometheusName); + if (metadata == null) { + metadata = new MetricMetadata(prometheusName); + } + Set labelNames = getLabelNames(prometheusName); + descriptors.add( + MetricFamilyDescriptor.of( + metricType, metadata, labelNames == null ? Collections.emptySet() : labelNames)); + } + } + return Collections.unmodifiableList(descriptors); + } + /** * This is called in two places: * @@ -68,7 +102,10 @@ default MetricSnapshots collect( * *

If your collector returns a constant list of metrics that have names that do not change at * runtime it is a good idea to overwrite this and return the names. + * + * @deprecated Override {@link #getMetricFamilyDescriptors()} instead. */ + @Deprecated default List getPrometheusNames() { return Collections.emptyList(); } @@ -85,7 +122,9 @@ default List getPrometheusNames() { * * @param prometheusName the Prometheus metric name * @return the metric type for the given name, or {@code null} to skip validation + * @deprecated Override {@link #getMetricFamilyDescriptors()} instead. */ + @Deprecated @Nullable default MetricType getMetricType(String prometheusName) { return null; @@ -108,7 +147,9 @@ default MetricType getMetricType(String prometheusName) { * @param prometheusName the Prometheus metric name * @return the set of all label names for the given name, or {@code null} (treated as empty) for a * metric with no labels + * @deprecated Override {@link #getMetricFamilyDescriptors()} instead. */ + @Deprecated @Nullable default Set getLabelNames(String prometheusName) { return null; @@ -123,7 +164,9 @@ default Set getLabelNames(String prometheusName) { * * @param prometheusName the Prometheus metric name * @return the metric metadata for that name, or {@code null} to skip help/unit validation + * @deprecated Override {@link #getMetricFamilyDescriptors()} instead. */ + @Deprecated @Nullable default MetricMetadata getMetadata(String prometheusName) { return null; diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/PrometheusRegistry.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/PrometheusRegistry.java index b7e305977..882f5711d 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/PrometheusRegistry.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/PrometheusRegistry.java @@ -2,6 +2,8 @@ import static java.util.Collections.emptySet; +import io.prometheus.metrics.annotations.StableApi; +import io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor; import io.prometheus.metrics.model.snapshots.MetricMetadata; import io.prometheus.metrics.model.snapshots.MetricSnapshot; import io.prometheus.metrics.model.snapshots.MetricSnapshots; @@ -16,6 +18,7 @@ import java.util.function.Predicate; import javax.annotation.Nullable; +@StableApi public class PrometheusRegistry { public static final PrometheusRegistry defaultRegistry = new PrometheusRegistry(); @@ -158,6 +161,17 @@ private static Set immutableLabelNames(@Nullable Set labelNames) return Collections.unmodifiableSet(new HashSet<>(labelNames)); } + @SuppressWarnings("deprecation") + @Nullable + private static String getDeprecatedPrometheusName(Collector collector) { + return collector.getPrometheusName(); + } + + @SuppressWarnings("deprecation") + private static List getDeprecatedPrometheusNames(MultiCollector collector) { + return collector.getPrometheusNames(); + } + /** * Computes the set of exposition-level time series names that a metric with the given name and * type will produce. @@ -288,27 +302,24 @@ public void register(Collector collector) { throw new IllegalArgumentException("Collector instance is already registered"); } try { - String prometheusName = collector.getPrometheusName(); - MetricType metricType = collector.getMetricType(); - Set normalizedLabels = immutableLabelNames(collector.getLabelNames()); - MetricMetadata metadata = collector.getMetadata(); - String help = metadata != null ? metadata.getHelp() : null; - Unit unit = metadata != null ? metadata.getUnit() : null; - - // Only perform validation if collector provides sufficient metadata. - // Collectors that don't implement getPrometheusName()/getMetricType() will skip validation. - if (prometheusName != null && metricType != null) { - validateRegistration(prometheusName, metricType, normalizedLabels, help, unit); - String expositionBasePrometheusName = - metadata != null ? metadata.getExpositionBasePrometheusName() : null; + MetricFamilyDescriptor descriptor = collector.getMetricFamilyDescriptor(); + + // Only perform validation if collector provides sufficient metadata. Collectors that don't + // implement getMetricFamilyDescriptor() will skip registration-time validation. + if (descriptor != null) { + String prometheusName = descriptor.getPrometheusName(); + MetricType metricType = descriptor.getType(); + Set normalizedLabels = immutableLabelNames(descriptor.getLabelNames()); + MetricMetadata metadata = descriptor.getMetadata(); + validateRegistration( + prometheusName, metricType, normalizedLabels, metadata.getHelp(), metadata.getUnit()); collectorMetadata.put( collector, new CollectorRegistration( - prometheusName, expositionBasePrometheusName, normalizedLabels)); + prometheusName, metadata.getExpositionBasePrometheusName(), normalizedLabels)); } - // Catch RuntimeException broadly because collector methods (getPrometheusName, getMetricType, - // etc.) are user-implemented and could throw any RuntimeException. Ensures cleanup on - // failure. + // Catch RuntimeException broadly because collector methods are user-implemented and could + // throw any RuntimeException. Ensures cleanup on failure. } catch (RuntimeException e) { collectors.remove(collector); CollectorRegistration reg = collectorMetadata.remove(collector); @@ -323,27 +334,26 @@ public void register(MultiCollector collector) { if (!multiCollectors.add(collector)) { throw new IllegalArgumentException("MultiCollector instance is already registered"); } - List prometheusNamesList = collector.getPrometheusNames(); List registrations = new ArrayList<>(); try { - for (String prometheusName : prometheusNamesList) { - MetricType metricType = collector.getMetricType(prometheusName); - Set normalizedLabels = immutableLabelNames(collector.getLabelNames(prometheusName)); - MetricMetadata metadata = collector.getMetadata(prometheusName); - String help = metadata != null ? metadata.getHelp() : null; - Unit unit = metadata != null ? metadata.getUnit() : null; - - if (metricType != null) { - validateRegistration(prometheusName, metricType, normalizedLabels, help, unit); - registrations.add(new MultiCollectorRegistration(prometheusName, normalizedLabels)); - } + for (MetricFamilyDescriptor descriptor : collector.getMetricFamilyDescriptors()) { + String prometheusName = descriptor.getPrometheusName(); + Set normalizedLabels = immutableLabelNames(descriptor.getLabelNames()); + MetricMetadata metadata = descriptor.getMetadata(); + + validateRegistration( + prometheusName, + descriptor.getType(), + normalizedLabels, + metadata.getHelp(), + metadata.getUnit()); + registrations.add(new MultiCollectorRegistration(prometheusName, normalizedLabels)); } multiCollectorMetadata.put(collector, registrations); - // Catch RuntimeException broadly because collector methods (getPrometheusNames, - // getMetricType, etc.) are user-implemented and could throw any RuntimeException. - // Ensures cleanup on failure. + // Catch RuntimeException broadly because collector methods are user-implemented and could + // throw any RuntimeException. Ensures cleanup on failure. } catch (RuntimeException e) { multiCollectors.remove(collector); for (MultiCollectorRegistration registration : registrations) { @@ -445,11 +455,12 @@ public MetricSnapshots scrape( } List allSnapshots = new ArrayList<>(); for (Collector collector : collectors) { - String prometheusName = collector.getPrometheusName(); + CollectorRegistration reg = collectorMetadata.get(collector); + String prometheusName = + reg != null ? reg.prometheusName : getDeprecatedPrometheusName(collector); // prometheusName == null means the name is unknown, and we have to scrape to learn the name. // prometheusName != null means we can skip the scrape if the name is excluded. // Also test the original name (e.g. "events_total" for a counter named "events"). - CollectorRegistration reg = collectorMetadata.get(collector); String expositionName = reg != null ? reg.expositionBasePrometheusName : null; if (prometheusName == null || includedNames.test(prometheusName) @@ -464,12 +475,22 @@ public MetricSnapshots scrape( } } for (MultiCollector collector : multiCollectors) { - List prometheusNames = collector.getPrometheusNames(); + List registrations = multiCollectorMetadata.get(collector); + List prometheusNames = getDeprecatedPrometheusNames(collector); // empty prometheusNames means the names are unknown, and we have to scrape to learn the // names. // non-empty prometheusNames means we can exclude the collector if all names are excluded by // the filter. - boolean excluded = !prometheusNames.isEmpty(); + boolean excluded = + (registrations != null && !registrations.isEmpty()) || !prometheusNames.isEmpty(); + if (registrations != null) { + for (MultiCollectorRegistration registration : registrations) { + if (includedNames.test(registration.prometheusName)) { + excluded = false; + break; + } + } + } for (String prometheusName : prometheusNames) { if (includedNames.test(prometheusName)) { excluded = false; diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/PrometheusScrapeRequest.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/PrometheusScrapeRequest.java index 91a1313ab..2ec6c768f 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/PrometheusScrapeRequest.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/registry/PrometheusScrapeRequest.java @@ -1,8 +1,10 @@ package io.prometheus.metrics.model.registry; +import io.prometheus.metrics.annotations.StableApi; import javax.annotation.Nullable; /** Infos extracted from the request received by the endpoint */ +@StableApi public interface PrometheusScrapeRequest { /** Absolute path of the HTTP request. */ diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/ClassicHistogramBucket.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/ClassicHistogramBucket.java index ebadd1f16..0f487efdf 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/ClassicHistogramBucket.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/ClassicHistogramBucket.java @@ -1,9 +1,12 @@ package io.prometheus.metrics.model.snapshots; +import io.prometheus.metrics.annotations.StableApi; + /** * Helper class for iterating over {@link ClassicHistogramBuckets}. Note that the {@code count} is * not cumulative. */ +@StableApi public class ClassicHistogramBucket implements Comparable { private final long count; // not cumulative diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/ClassicHistogramBuckets.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/ClassicHistogramBuckets.java index 09e75181b..b2998d799 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/ClassicHistogramBuckets.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/ClassicHistogramBuckets.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.model.snapshots; +import io.prometheus.metrics.annotations.StableApi; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -11,6 +12,7 @@ * Immutable container for histogram buckets with fixed bucket boundaries. Note that the counts are * not cumulative. */ +@StableApi public class ClassicHistogramBuckets implements Iterable { /** Used in native histograms to indicate that no classic histogram buckets are present. */ @@ -110,25 +112,16 @@ private static void sortAndValidate(double[] upperBounds, long[] counts) { validate(upperBounds, counts); } + /** + * Sorts upperBounds and counts in place using introspective quicksort. + * + *

Algorithm: 3-way quicksort with insertion sort for tiny partitions and heapsort fallback at + * the recursion depth limit. Parallel arrays are swapped in lockstep. + * + *

Complexity: O(n log n) average and worst case. + */ private static void sort(double[] upperBounds, long[] counts) { - // Bubblesort. Should be efficient here as in most cases upperBounds is already sorted. - int n = upperBounds.length; - for (int i = 0; i < n - 1; i++) { - for (int j = 0; j < n - i - 1; j++) { - if (upperBounds[j] > upperBounds[j + 1]) { - swap(j, j + 1, upperBounds, counts); - } - } - } - } - - private static void swap(int i, int j, double[] upperBounds, long[] counts) { - double tmpDouble = upperBounds[j]; - upperBounds[j] = upperBounds[i]; - upperBounds[i] = tmpDouble; - long tmpLong = counts[j]; - counts[j] = counts[i]; - counts[i] = tmpLong; + DoubleArraySorter.sort(upperBounds, counts); } private static void validate(double[] upperBounds, long[] counts) { @@ -224,4 +217,157 @@ public ClassicHistogramBuckets build() { return ClassicHistogramBuckets.of(upperBounds, counts); } } + + /** + * In-place introsort for {@code upperBounds} and parallel {@code counts}. + * + *

Uses 3-way quicksort partitioning for large ranges, insertion sort for tiny ranges, and a + * heapsort fallback at the recursion-depth limit to guarantee O(n log n) worst-case complexity. + */ + private static final class DoubleArraySorter { + + private static final int INSERTION_SORT_THRESHOLD = 24; + + private static void sort(double[] upperBounds, long[] counts) { + int right = upperBounds.length - 1; + if (right <= 0) { + return; + } + introSort(upperBounds, counts, 0, right, depthLimit(upperBounds.length)); + } + + private static void introSort( + double[] upperBounds, long[] counts, int left, int right, int depthLimit) { + while (left < right) { + if (right - left + 1 <= INSERTION_SORT_THRESHOLD) { + insertionSort(upperBounds, counts, left, right); + return; + } + if (depthLimit == 0) { + heapSort(upperBounds, counts, left, right); + return; + } + depthLimit--; + + int mid = left + ((right - left) >>> 1); + int pivotIndex = medianOf3(upperBounds, left, mid, right); + double pivot = upperBounds[pivotIndex]; + + int lt = left; + int i = left; + int gt = right; + while (i <= gt) { + int cmp = compare(upperBounds[i], pivot); + if (cmp < 0) { + swap(i, lt, upperBounds, counts); + i++; + lt++; + } else if (cmp > 0) { + swap(i, gt, upperBounds, counts); + gt--; + } else { + i++; + } + } + + if (lt - left < right - gt) { + introSort(upperBounds, counts, left, lt - 1, depthLimit); + left = gt + 1; + } else { + introSort(upperBounds, counts, gt + 1, right, depthLimit); + right = lt - 1; + } + } + } + + private static void insertionSort(double[] upperBounds, long[] counts, int left, int right) { + for (int i = left + 1; i <= right; i++) { + double upperBound = upperBounds[i]; + long count = counts[i]; + int j = i - 1; + while (j >= left && compare(upperBounds[j], upperBound) > 0) { + upperBounds[j + 1] = upperBounds[j]; + counts[j + 1] = counts[j]; + j--; + } + upperBounds[j + 1] = upperBound; + counts[j + 1] = count; + } + } + + private static void heapSort(double[] upperBounds, long[] counts, int left, int right) { + int size = right - left + 1; + for (int i = (size >>> 1) - 1; i >= 0; i--) { + siftDown(upperBounds, counts, left, i, size); + } + for (int end = size - 1; end > 0; end--) { + swap(left, left + end, upperBounds, counts); + siftDown(upperBounds, counts, left, 0, end); + } + } + + private static void siftDown( + double[] upperBounds, long[] counts, int base, int root, int size) { + while (true) { + int child = (root << 1) + 1; + if (child >= size) { + return; + } + int rightChild = child + 1; + if (rightChild < size + && compare(upperBounds[base + child], upperBounds[base + rightChild]) < 0) { + child = rightChild; + } + if (compare(upperBounds[base + root], upperBounds[base + child]) >= 0) { + return; + } + swap(base + root, base + child, upperBounds, counts); + root = child; + } + } + + private static int depthLimit(int length) { + int result = 0; + while (length > 1) { + result++; + length >>>= 1; + } + return result << 1; + } + + private static int medianOf3(double[] upperBounds, int i, int j, int k) { + if (compare(upperBounds[i], upperBounds[j]) > 0) { + int tmp = i; + i = j; + j = tmp; + } + if (compare(upperBounds[j], upperBounds[k]) > 0) { + int tmp = j; + j = k; + k = tmp; + } + if (compare(upperBounds[i], upperBounds[j]) > 0) { + int tmp = i; + i = j; + j = tmp; + } + return j; + } + + private static int compare(double a, double b) { + return Double.compare(a, b); + } + + private static void swap(int i, int j, double[] upperBounds, long[] counts) { + if (i == j) { + return; + } + double upperBound = upperBounds[i]; + upperBounds[i] = upperBounds[j]; + upperBounds[j] = upperBound; + long count = counts[i]; + counts[i] = counts[j]; + counts[j] = count; + } + } } diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/CounterSnapshot.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/CounterSnapshot.java index 72a83a879..42a06f3bb 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/CounterSnapshot.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/CounterSnapshot.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.model.snapshots; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.EscapingScheme; import java.util.ArrayList; import java.util.Collection; @@ -7,6 +8,7 @@ import javax.annotation.Nullable; /** Immutable snapshot of a Counter. */ +@StableApi public class CounterSnapshot extends MetricSnapshot { /** @@ -179,6 +181,14 @@ public Builder dataPoint(CounterDataPointSnapshot dataPoint) { return this; } + @Override + protected MetricMetadata buildMetadata() { + if (name == null) { + throw new IllegalArgumentException("Missing required field: name is null"); + } + return MetricMetadataSupport.counterMetadata(name, help, unit); + } + @Override public CounterSnapshot build() { return new CounterSnapshot(buildMetadata(), dataPoints); diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/DataPointSnapshot.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/DataPointSnapshot.java index d960912a0..910e2ef50 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/DataPointSnapshot.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/DataPointSnapshot.java @@ -1,8 +1,10 @@ package io.prometheus.metrics.model.snapshots; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.EscapingScheme; @SuppressWarnings("this-escape") +@StableApi public abstract class DataPointSnapshot { private final Labels labels; private final long createdTimestampMillis; diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/DistributionDataPointSnapshot.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/DistributionDataPointSnapshot.java index 1ae0559e1..2d1331915 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/DistributionDataPointSnapshot.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/DistributionDataPointSnapshot.java @@ -1,9 +1,12 @@ package io.prometheus.metrics.model.snapshots; +import io.prometheus.metrics.annotations.StableApi; + /** * Common base class for histogram and summary data. Histograms and Summaries represent * distributions, like a latency distribution or a distribution of request sizes in Bytes. */ +@StableApi public abstract class DistributionDataPointSnapshot extends DataPointSnapshot { private final long count; // optional, negative value means no count. private final double sum; // optional, Double.NaN means no sum. diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/DuplicateLabelsException.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/DuplicateLabelsException.java index 721655105..fd1e6d838 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/DuplicateLabelsException.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/DuplicateLabelsException.java @@ -1,9 +1,12 @@ package io.prometheus.metrics.model.snapshots; +import io.prometheus.metrics.annotations.StableApi; + /** * Thrown when a collector tries to create a {@link MetricSnapshot} where multiple data points have * the same labels (same label names and label values). */ +@StableApi public class DuplicateLabelsException extends IllegalArgumentException { private static final long serialVersionUID = 0L; diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/Exemplar.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/Exemplar.java index 418603580..07dc811f8 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/Exemplar.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/Exemplar.java @@ -2,9 +2,11 @@ import static java.util.Objects.requireNonNull; +import io.prometheus.metrics.annotations.StableApi; import javax.annotation.Nullable; /** Immutable representation of an Exemplar. */ +@StableApi public class Exemplar { /** Label name for trace id. */ diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/Exemplars.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/Exemplars.java index 887a80fff..1408419b7 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/Exemplars.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/Exemplars.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.model.snapshots; +import io.prometheus.metrics.annotations.StableApi; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -14,6 +15,7 @@ *

This is currently backed by a {@code List}. May be refactored later to use a more * efficient data structure. */ +@StableApi public class Exemplars implements Iterable { /** EMPTY means no Exemplars. */ diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/GaugeSnapshot.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/GaugeSnapshot.java index 03474852f..7a4208b05 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/GaugeSnapshot.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/GaugeSnapshot.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.model.snapshots; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.EscapingScheme; import java.util.ArrayList; import java.util.Collection; @@ -7,6 +8,7 @@ import javax.annotation.Nullable; /** Immutable snapshot of a Gauge. */ +@StableApi public final class GaugeSnapshot extends MetricSnapshot { /** diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/HistogramSnapshot.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/HistogramSnapshot.java index acc78d3d3..06c687c9f 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/HistogramSnapshot.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/HistogramSnapshot.java @@ -1,11 +1,13 @@ package io.prometheus.metrics.model.snapshots; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.EscapingScheme; import java.util.ArrayList; import java.util.Collection; import java.util.List; /** Immutable snapshot of a Histogram. */ +@StableApi public final class HistogramSnapshot extends MetricSnapshot { private final boolean gaugeHistogram; diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/InfoSnapshot.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/InfoSnapshot.java index ca6cf70a0..0178eea2e 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/InfoSnapshot.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/InfoSnapshot.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.model.snapshots; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.EscapingScheme; import java.util.ArrayList; import java.util.Collection; @@ -7,6 +8,7 @@ import javax.annotation.Nullable; /** Immutable snapshot of an Info metric. */ +@StableApi public final class InfoSnapshot extends MetricSnapshot { /** @@ -118,6 +120,14 @@ public Builder unit(@Nullable Unit unit) { throw new IllegalArgumentException("Info metric cannot have a unit."); } + @Override + protected MetricMetadata buildMetadata() { + if (name == null) { + throw new IllegalArgumentException("Missing required field: name is null"); + } + return MetricMetadataSupport.infoMetadata(name, help); + } + @Override public InfoSnapshot build() { return new InfoSnapshot(buildMetadata(), dataPoints); diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/Label.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/Label.java index 45acd56ee..7af8d3310 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/Label.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/Label.java @@ -1,8 +1,10 @@ package io.prometheus.metrics.model.snapshots; +import io.prometheus.metrics.annotations.StableApi; import java.util.Objects; /** Utility for iterating over {@link Labels}. */ +@StableApi public final class Label implements Comparable

Algorithm: 3-way quicksort with insertion sort for tiny partitions and heapsort fallback at + * the recursion depth limit. Parallel arrays are swapped in lockstep. + * + *

Complexity: O(n log n) average and worst case. + */ private static void sort(String[] names, String[] prometheusNames, String[] values) { - // bubblesort - int n = prometheusNames.length; - for (int i = 0; i < n - 1; i++) { - for (int j = 0; j < n - i - 1; j++) { - if (prometheusNames[j].compareTo(prometheusNames[j + 1]) > 0) { - swap(j, j + 1, names, prometheusNames, values); - } - } - } - } - - private static void swap( - int i, int j, String[] names, String[] prometheusNames, String[] values) { - String tmp = names[j]; - names[j] = names[i]; - names[i] = tmp; - tmp = values[j]; - values[j] = values[i]; - values[i] = tmp; - if (prometheusNames != names) { - tmp = prometheusNames[j]; - prometheusNames[j] = prometheusNames[i]; - prometheusNames[i] = tmp; - } + StringArraySorter.sort(names, prometheusNames, values); } @Override @@ -441,4 +428,177 @@ public Labels build() { return Labels.of(names, values); } } + + /** + * In-place introsort for label arrays, keyed by {@code prometheusNames}. + * + *

Uses 3-way quicksort partitioning for large ranges, insertion sort for tiny ranges, and a + * heapsort fallback at the recursion-depth limit to guarantee O(n log n) worst-case complexity. + */ + private static final class StringArraySorter { + + private static final int INSERTION_SORT_THRESHOLD = 24; + + private static void sort(String[] names, String[] prometheusNames, String[] values) { + int right = names.length - 1; + if (right <= 0) { + return; + } + introSort(names, prometheusNames, values, 0, right, depthLimit(names.length)); + } + + private static void introSort( + String[] names, + String[] prometheusNames, + String[] values, + int left, + int right, + int depthLimit) { + while (left < right) { + if (right - left + 1 <= INSERTION_SORT_THRESHOLD) { + insertionSort(names, prometheusNames, values, left, right); + return; + } + if (depthLimit == 0) { + heapSort(names, prometheusNames, values, left, right); + return; + } + depthLimit--; + + int mid = left + ((right - left) >>> 1); + int pivotIndex = medianOf3(prometheusNames, left, mid, right); + String pivot = prometheusNames[pivotIndex]; + + int lt = left; + int i = left; + int gt = right; + while (i <= gt) { + int cmp = compare(prometheusNames[i], pivot); + if (cmp < 0) { + swap(i, lt, names, prometheusNames, values); + i++; + lt++; + } else if (cmp > 0) { + swap(i, gt, names, prometheusNames, values); + gt--; + } else { + i++; + } + } + + if (lt - left < right - gt) { + introSort(names, prometheusNames, values, left, lt - 1, depthLimit); + left = gt + 1; + } else { + introSort(names, prometheusNames, values, gt + 1, right, depthLimit); + right = lt - 1; + } + } + } + + private static void insertionSort( + String[] names, String[] prometheusNames, String[] values, int left, int right) { + for (int i = left + 1; i <= right; i++) { + String name = names[i]; + String prometheusName = prometheusNames[i]; + final String value = values[i]; + int j = i - 1; + while (j >= left && compare(prometheusNames[j], prometheusName) > 0) { + names[j + 1] = names[j]; + if (prometheusNames != names) { + prometheusNames[j + 1] = prometheusNames[j]; + } + values[j + 1] = values[j]; + j--; + } + names[j + 1] = name; + if (prometheusNames != names) { + prometheusNames[j + 1] = prometheusName; + } + values[j + 1] = value; + } + } + + private static void heapSort( + String[] names, String[] prometheusNames, String[] values, int left, int right) { + int size = right - left + 1; + for (int i = (size >>> 1) - 1; i >= 0; i--) { + siftDown(names, prometheusNames, values, left, i, size); + } + for (int end = size - 1; end > 0; end--) { + swap(left, left + end, names, prometheusNames, values); + siftDown(names, prometheusNames, values, left, 0, end); + } + } + + private static void siftDown( + String[] names, String[] prometheusNames, String[] values, int base, int root, int size) { + while (true) { + int child = (root << 1) + 1; + if (child >= size) { + return; + } + int rightChild = child + 1; + if (rightChild < size + && compare(prometheusNames[base + child], prometheusNames[base + rightChild]) < 0) { + child = rightChild; + } + if (compare(prometheusNames[base + root], prometheusNames[base + child]) >= 0) { + return; + } + swap(base + root, base + child, names, prometheusNames, values); + root = child; + } + } + + private static int depthLimit(int length) { + int result = 0; + while (length > 1) { + result++; + length >>>= 1; + } + return result << 1; + } + + private static int medianOf3(String[] values, int i, int j, int k) { + if (compare(values[i], values[j]) > 0) { + int tmp = i; + i = j; + j = tmp; + } + if (compare(values[j], values[k]) > 0) { + int tmp = j; + j = k; + k = tmp; + } + if (compare(values[i], values[j]) > 0) { + int tmp = i; + i = j; + j = tmp; + } + return j; + } + + private static int compare(String left, String right) { + return left.compareTo(right); + } + + private static void swap( + int i, int j, String[] names, String[] prometheusNames, String[] values) { + if (i == j) { + return; + } + String tmp = names[i]; + names[i] = names[j]; + names[j] = tmp; + tmp = values[i]; + values[i] = values[j]; + values[j] = tmp; + if (prometheusNames != names) { + tmp = prometheusNames[i]; + prometheusNames[i] = prometheusNames[j]; + prometheusNames[j] = tmp; + } + } + } } diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/MetricFamilyDescriptor.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/MetricFamilyDescriptor.java new file mode 100644 index 000000000..79b531fa8 --- /dev/null +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/MetricFamilyDescriptor.java @@ -0,0 +1,293 @@ +package io.prometheus.metrics.model.snapshots; + +import io.prometheus.metrics.annotations.StableApi; +import io.prometheus.metrics.model.registry.MetricType; +import java.util.Collection; +import java.util.Collections; +import java.util.LinkedHashSet; +import java.util.Set; +import javax.annotation.Nullable; + +/** Registration-time descriptor for a metric family. */ +@StableApi +public final class MetricFamilyDescriptor { + + private final MetricType type; + private final MetricMetadata metadata; + private final Set labelNames; + + private MetricFamilyDescriptor( + MetricType type, MetricMetadata metadata, Collection labelNames) { + if (type == null) { + throw new IllegalArgumentException("Missing required field: type is null"); + } + if (metadata == null) { + throw new IllegalArgumentException("Missing required field: metadata is null"); + } + if (labelNames == null) { + throw new IllegalArgumentException("Missing required field: labelNames is null"); + } + this.type = type; + this.metadata = metadata; + this.labelNames = Collections.unmodifiableSet(new LinkedHashSet<>(labelNames)); + } + + public static MetricFamilyDescriptor of(MetricType type, MetricMetadata metadata) { + return of(type, metadata, Collections.emptySet()); + } + + public static MetricFamilyDescriptor of( + MetricType type, MetricMetadata metadata, Collection labelNames) { + return new MetricFamilyDescriptor(type, metadata, labelNames); + } + + public static Builder of(MetricType type, String name) { + switch (type) { + case COUNTER: + return counter(name); + case GAUGE: + return gauge(name); + case HISTOGRAM: + return histogram(name); + case SUMMARY: + return summary(name); + case INFO: + return info(name); + case STATESET: + return stateSet(name); + case UNKNOWN: + default: + return unknown(name); + } + } + + public static CounterBuilder counter(String name) { + return new CounterBuilder().name(name); + } + + public static GaugeBuilder gauge(String name) { + return new GaugeBuilder().name(name); + } + + public static HistogramBuilder histogram(String name) { + return new HistogramBuilder().name(name); + } + + public static SummaryBuilder summary(String name) { + return new SummaryBuilder().name(name); + } + + public static InfoBuilder info(String name) { + return new InfoBuilder().name(name); + } + + public static StateSetBuilder stateSet(String name) { + return new StateSetBuilder().name(name); + } + + public static UnknownBuilder unknown(String name) { + return new UnknownBuilder().name(name); + } + + public MetricType getType() { + return type; + } + + public MetricMetadata getMetadata() { + return metadata; + } + + public Set getLabelNames() { + return labelNames; + } + + public String getPrometheusName() { + return metadata.getPrometheusName(); + } + + public abstract static class Builder> { + + @Nullable protected String name; + @Nullable protected String help; + @Nullable protected Unit unit; + protected final Set labelNames = new LinkedHashSet<>(); + + public T name(String name) { + this.name = name; + return self(); + } + + public T help(String help) { + if (help == null) { + throw new IllegalArgumentException("Missing required field: help is null"); + } + this.help = help; + return self(); + } + + public T unit(Unit unit) { + if (unit == null) { + throw new IllegalArgumentException("Missing required field: unit is null"); + } + this.unit = unit; + return self(); + } + + public T labelName(String labelName) { + this.labelNames.add(PrometheusNaming.prometheusName(labelName)); + return self(); + } + + public T labelNames(String... labelNames) { + for (String labelName : labelNames) { + labelName(labelName); + } + return self(); + } + + public T labelNames(Collection labelNames) { + for (String labelName : labelNames) { + labelName(labelName); + } + return self(); + } + + public MetricFamilyDescriptor build() { + return new MetricFamilyDescriptor(getType(), buildMetadata(), labelNames); + } + + protected MetricMetadata buildMetadata() { + if (name == null) { + throw new IllegalArgumentException("Missing required field: name is null"); + } + return MetricMetadataSupport.metricMetadata(name, help, unit); + } + + protected abstract MetricType getType(); + + protected abstract T self(); + } + + public static final class CounterBuilder extends Builder { + + @Override + protected MetricMetadata buildMetadata() { + if (name == null) { + throw new IllegalArgumentException("Missing required field: name is null"); + } + return MetricMetadataSupport.counterMetadata(name, help, unit); + } + + @Override + protected MetricType getType() { + return MetricType.COUNTER; + } + + @Override + protected CounterBuilder self() { + return this; + } + } + + public static final class GaugeBuilder extends Builder { + + @Override + protected MetricType getType() { + return MetricType.GAUGE; + } + + @Override + protected GaugeBuilder self() { + return this; + } + } + + public static final class HistogramBuilder extends Builder { + + @Override + protected MetricType getType() { + return MetricType.HISTOGRAM; + } + + @Override + protected HistogramBuilder self() { + return this; + } + } + + public static final class SummaryBuilder extends Builder { + + @Override + protected MetricType getType() { + return MetricType.SUMMARY; + } + + @Override + protected SummaryBuilder self() { + return this; + } + } + + public static final class InfoBuilder extends Builder { + + @Override + public InfoBuilder unit(Unit unit) { + if (unit == null) { + throw new IllegalArgumentException("Missing required field: unit is null"); + } + throw new IllegalArgumentException("Info metric cannot have a unit."); + } + + @Override + protected MetricMetadata buildMetadata() { + if (name == null) { + throw new IllegalArgumentException("Missing required field: name is null"); + } + return MetricMetadataSupport.infoMetadata(name, help); + } + + @Override + protected MetricType getType() { + return MetricType.INFO; + } + + @Override + protected InfoBuilder self() { + return this; + } + } + + public static final class StateSetBuilder extends Builder { + + @Override + public StateSetBuilder unit(Unit unit) { + if (unit == null) { + throw new IllegalArgumentException("Missing required field: unit is null"); + } + throw new IllegalArgumentException("State set metric cannot have a unit."); + } + + @Override + protected MetricType getType() { + return MetricType.STATESET; + } + + @Override + protected StateSetBuilder self() { + return this; + } + } + + public static final class UnknownBuilder extends Builder { + + @Override + protected MetricType getType() { + return MetricType.UNKNOWN; + } + + @Override + protected UnknownBuilder self() { + return this; + } + } +} diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/MetricMetadata.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/MetricMetadata.java index 74f6f55d6..3a44a2402 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/MetricMetadata.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/MetricMetadata.java @@ -1,9 +1,11 @@ package io.prometheus.metrics.model.snapshots; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.EscapingScheme; import javax.annotation.Nullable; /** Immutable container for metric metadata: name, help, unit. */ +@StableApi public final class MetricMetadata { /** diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/MetricMetadataSupport.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/MetricMetadataSupport.java new file mode 100644 index 000000000..7fa0df6f0 --- /dev/null +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/MetricMetadataSupport.java @@ -0,0 +1,52 @@ +package io.prometheus.metrics.model.snapshots; + +import javax.annotation.Nullable; + +final class MetricMetadataSupport { + + private MetricMetadataSupport() {} + + static MetricMetadata metricMetadata(String name, @Nullable String help, @Nullable Unit unit) { + return new MetricMetadata(name, help, unit); + } + + static MetricMetadata counterMetadata(String name, @Nullable String help, @Nullable Unit unit) { + return typedMetadata(name, help, unit, "_total", ".total"); + } + + static MetricMetadata infoMetadata(String name, @Nullable String help) { + return typedMetadata(name, help, null, "_info", ".info"); + } + + private static MetricMetadata typedMetadata( + String originalName, + @Nullable String help, + @Nullable Unit unit, + String suffix, + String dotSuffix) { + String baseName = stripSuffix(originalName, suffix, dotSuffix); + return new MetricMetadata( + appendUnitIfMissing(baseName, unit), + appendUnitIfMissing(originalName, unit), + originalName, + help, + unit); + } + + private static String appendUnitIfMissing(String name, @Nullable Unit unit) { + if (unit != null && !name.endsWith("_" + unit) && !name.endsWith("." + unit)) { + return name + "_" + unit; + } + return name; + } + + private static String stripSuffix(String name, String suffix, String dotSuffix) { + if (name.endsWith(suffix)) { + return name.substring(0, name.length() - suffix.length()); + } + if (name.endsWith(dotSuffix)) { + return name.substring(0, name.length() - dotSuffix.length()); + } + return name; + } +} diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/MetricSnapshot.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/MetricSnapshot.java index 4dac2e30e..5a2019c06 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/MetricSnapshot.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/MetricSnapshot.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.model.snapshots; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.EscapingScheme; import java.util.ArrayList; import java.util.Collection; @@ -9,6 +10,7 @@ import javax.annotation.Nullable; /** Base class for metric snapshots. */ +@StableApi public abstract class MetricSnapshot { private final MetricMetadata metadata; protected final List dataPoints; @@ -55,9 +57,9 @@ private static void validateLabels( public abstract static class Builder> { - @Nullable private String name; - @Nullable private String help; - @Nullable private Unit unit; + @Nullable protected String name; + @Nullable protected String help; + @Nullable protected Unit unit; /** * The name is required. If the name is missing or invalid, {@code build()} will throw an {@link @@ -85,7 +87,7 @@ protected MetricMetadata buildMetadata() { if (name == null) { throw new IllegalArgumentException("Missing required field: name is null"); } - return new MetricMetadata(name, help, unit); + return MetricMetadataSupport.metricMetadata(name, help, unit); } protected abstract T self(); diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/MetricSnapshots.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/MetricSnapshots.java index cdec0ddaf..c4d7101df 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/MetricSnapshots.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/MetricSnapshots.java @@ -4,6 +4,7 @@ import static java.util.Collections.unmodifiableList; import static java.util.Comparator.comparing; +import io.prometheus.metrics.annotations.StableApi; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -14,6 +15,7 @@ import java.util.stream.Stream; /** Immutable list of metric snapshots. */ +@StableApi public class MetricSnapshots implements Iterable { private final List snapshots; diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/NativeHistogramBucket.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/NativeHistogramBucket.java index 9e58af18f..8278bfa2f 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/NativeHistogramBucket.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/NativeHistogramBucket.java @@ -1,6 +1,9 @@ package io.prometheus.metrics.model.snapshots; +import io.prometheus.metrics.annotations.StableApi; + /** For iterating over {@link NativeHistogramBuckets}. */ +@StableApi public class NativeHistogramBucket { private final int bucketIndex; diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/NativeHistogramBuckets.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/NativeHistogramBuckets.java index 3b1214364..9468f41cb 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/NativeHistogramBuckets.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/NativeHistogramBuckets.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.model.snapshots; +import io.prometheus.metrics.annotations.StableApi; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -19,6 +20,7 @@ * upper bound = base^index *

*/ +@StableApi public class NativeHistogramBuckets implements Iterable { public static final NativeHistogramBuckets EMPTY = @@ -107,25 +109,16 @@ private static void sortAndValidate(int[] bucketIndexes, long[] counts) { validate(bucketIndexes, counts); } + /** + * Sorts bucketIndexes and counts in place using introspective quicksort. + * + *

Algorithm: 3-way quicksort with insertion sort for tiny partitions and heapsort fallback at + * the recursion depth limit. Parallel arrays are swapped in lockstep. + * + *

Complexity: O(n log n) average and worst case. + */ private static void sort(int[] bucketIndexes, long[] counts) { - // Bubblesort. Should be efficient here as in most cases bucketIndexes is already sorted. - int n = bucketIndexes.length; - for (int i = 0; i < n - 1; i++) { - for (int j = 0; j < n - i - 1; j++) { - if (bucketIndexes[j] > bucketIndexes[j + 1]) { - swap(j, j + 1, bucketIndexes, counts); - } - } - } - } - - private static void swap(int i, int j, int[] bucketIndexes, long[] counts) { - int tmpInt = bucketIndexes[j]; - bucketIndexes[j] = bucketIndexes[i]; - bucketIndexes[i] = tmpInt; - long tmpLong = counts[j]; - counts[j] = counts[i]; - counts[i] = tmpLong; + IntArraySorter.sort(bucketIndexes, counts); } private static void validate(int[] bucketIndexes, long[] counts) { @@ -166,4 +159,156 @@ public NativeHistogramBuckets build() { return NativeHistogramBuckets.of(bucketIndexes, counts); } } + + /** + * In-place introsort for {@code bucketIndexes} and parallel {@code counts}. + * + *

Uses 3-way quicksort partitioning for large ranges, insertion sort for tiny ranges, and a + * heapsort fallback at the recursion-depth limit to guarantee O(n log n) worst-case complexity. + */ + private static final class IntArraySorter { + + private static final int INSERTION_SORT_THRESHOLD = 24; + + private static void sort(int[] bucketIndexes, long[] counts) { + int right = bucketIndexes.length - 1; + if (right <= 0) { + return; + } + introSort(bucketIndexes, counts, 0, right, depthLimit(bucketIndexes.length)); + } + + private static void introSort( + int[] bucketIndexes, long[] counts, int left, int right, int depthLimit) { + while (left < right) { + if (right - left + 1 <= INSERTION_SORT_THRESHOLD) { + insertionSort(bucketIndexes, counts, left, right); + return; + } + if (depthLimit == 0) { + heapSort(bucketIndexes, counts, left, right); + return; + } + depthLimit--; + + int mid = left + ((right - left) >>> 1); + int pivotIndex = medianOf3(bucketIndexes, left, mid, right); + int pivot = bucketIndexes[pivotIndex]; + + int lt = left; + int i = left; + int gt = right; + while (i <= gt) { + int cmp = compare(bucketIndexes[i], pivot); + if (cmp < 0) { + swap(i, lt, bucketIndexes, counts); + i++; + lt++; + } else if (cmp > 0) { + swap(i, gt, bucketIndexes, counts); + gt--; + } else { + i++; + } + } + + if (lt - left < right - gt) { + introSort(bucketIndexes, counts, left, lt - 1, depthLimit); + left = gt + 1; + } else { + introSort(bucketIndexes, counts, gt + 1, right, depthLimit); + right = lt - 1; + } + } + } + + private static void insertionSort(int[] bucketIndexes, long[] counts, int left, int right) { + for (int i = left + 1; i <= right; i++) { + int bucketIndex = bucketIndexes[i]; + long count = counts[i]; + int j = i - 1; + while (j >= left && compare(bucketIndexes[j], bucketIndex) > 0) { + bucketIndexes[j + 1] = bucketIndexes[j]; + counts[j + 1] = counts[j]; + j--; + } + bucketIndexes[j + 1] = bucketIndex; + counts[j + 1] = count; + } + } + + private static void heapSort(int[] bucketIndexes, long[] counts, int left, int right) { + int size = right - left + 1; + for (int i = (size >>> 1) - 1; i >= 0; i--) { + siftDown(bucketIndexes, counts, left, i, size); + } + for (int end = size - 1; end > 0; end--) { + swap(left, left + end, bucketIndexes, counts); + siftDown(bucketIndexes, counts, left, 0, end); + } + } + + private static void siftDown(int[] bucketIndexes, long[] counts, int base, int root, int size) { + while (true) { + int child = (root << 1) + 1; + if (child >= size) { + return; + } + int rightChild = child + 1; + if (rightChild < size + && compare(bucketIndexes[base + child], bucketIndexes[base + rightChild]) < 0) { + child = rightChild; + } + if (compare(bucketIndexes[base + root], bucketIndexes[base + child]) >= 0) { + return; + } + swap(base + root, base + child, bucketIndexes, counts); + root = child; + } + } + + private static int depthLimit(int length) { + int result = 0; + while (length > 1) { + result++; + length >>>= 1; + } + return result << 1; + } + + private static int medianOf3(int[] bucketIndexes, int i, int j, int k) { + if (compare(bucketIndexes[i], bucketIndexes[j]) > 0) { + int tmp = i; + i = j; + j = tmp; + } + if (compare(bucketIndexes[j], bucketIndexes[k]) > 0) { + int tmp = j; + j = k; + k = tmp; + } + if (compare(bucketIndexes[i], bucketIndexes[j]) > 0) { + int tmp = i; + i = j; + j = tmp; + } + return j; + } + + private static int compare(int a, int b) { + return Integer.compare(a, b); + } + + private static void swap(int i, int j, int[] bucketIndexes, long[] counts) { + if (i == j) { + return; + } + int bucketIndex = bucketIndexes[i]; + bucketIndexes[i] = bucketIndexes[j]; + bucketIndexes[j] = bucketIndex; + long count = counts[i]; + counts[i] = counts[j]; + counts[j] = count; + } + } } diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/PrometheusNaming.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/PrometheusNaming.java index ea2653931..f8f281dfc 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/PrometheusNaming.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/PrometheusNaming.java @@ -4,6 +4,7 @@ import static java.lang.Character.MAX_LOW_SURROGATE; import static java.lang.Character.MIN_HIGH_SURROGATE; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.EscapingScheme; import java.nio.charset.StandardCharsets; import javax.annotation.Nullable; @@ -15,8 +16,20 @@ * replaced with underscores in Prometheus exposition formats. However, if metrics are exposed in * OpenTelemetry format the dots are retained. */ +@StableApi public class PrometheusNaming { + /** + * Reserved metric name suffixes. These suffixes are automatically appended by Prometheus + * exposition format writers for specific metric types: {@code _total} and {@code _created} for + * counters, {@code _info} for info metrics, and {@code _bucket} for histograms. Including these + * in a base metric name via {@link #sanitizeMetricName(String)} would cause confusion or + * double-suffixing, so they are stripped during sanitization. + */ + static final String[] RESERVED_METRIC_NAME_SUFFIXES = { + "_total", "_created", "_bucket", "_info", ".total", ".created", ".bucket", ".info" + }; + /** * Test if a metric name is valid. Any non-empty valid UTF-8 string is accepted. * @@ -35,7 +48,9 @@ public class PrometheusNaming { * format, this will be represented as two values: {@code processing_time_seconds_total} for the * counter value, and the optional {@code processing_time_seconds_created} timestamp. * - *

Use {@link #sanitizeMetricName(String)} to convert arbitrary Strings to valid metric names. + *

Use {@link #sanitizeMetricName(String)} for compatibility-preserving sanitization that + * strips reserved suffixes, or {@link #normalizeMetricName(String)} for permissive normalization + * that keeps the original suffixes intact. */ public static boolean isValidMetricName(String name) { return validateMetricName(name) == null; @@ -153,8 +168,22 @@ public static String prometheusName(String name) { } /** - * Convert an arbitrary string to a valid metric name. Since any non-empty valid UTF-8 string is a - * valid metric name, this simply returns the input unchanged. + * Convert an arbitrary string to a valid metric name. + * + *

Reserved metric name suffixes ({@code _total}, {@code _created}, {@code _bucket}, {@code + * _info} and their dot variants) are stripped. These suffixes are appended automatically by + * Prometheus exposition format writers, so including them in a base metric name would result in + * double-suffixing or unintended type inference. For example, a JMX attribute named {@code + * RequestTotal} would be sanitized from {@code kafka_consumer_request_total} to {@code + * kafka_consumer_request}, and the counter writer would add {@code _total} back at scrape time. + * + *

This behaviour was present in client_java 1.5.x and is restored here to fix a regression + * introduced in 1.6.0 that affected downstream tools (e.g. the JMX Exporter and the simpleclient + * bridge) which relied on {@code sanitizeMetricName} to strip these suffixes before passing names + * to the snapshot builders. + * + *

If you want permissive normalization that keeps reserved suffixes intact, use {@link + * #normalizeMetricName(String)} instead. * * @throws IllegalArgumentException if the input is empty */ @@ -162,7 +191,27 @@ public static String sanitizeMetricName(String metricName) { if (metricName.isEmpty()) { throw new IllegalArgumentException("Cannot convert an empty string to a valid metric name."); } - return metricName; + String sanitizedName = metricName; + boolean stripped = true; + while (stripped) { + stripped = false; + // When the name equals the suffix exactly, drop the leading separator character to avoid + // returning an empty string (e.g. "_total" → "total", ".info" → "info"). + for (String reservedSuffix : RESERVED_METRIC_NAME_SUFFIXES) { + if (sanitizedName.equals(reservedSuffix)) { + return reservedSuffix.substring(1); + } + } + for (String reservedSuffix : RESERVED_METRIC_NAME_SUFFIXES) { + if (sanitizedName.endsWith(reservedSuffix)) { + sanitizedName = + sanitizedName.substring(0, sanitizedName.length() - reservedSuffix.length()); + stripped = true; + break; // restart the outer loop to re-check all suffixes on the shortened name + } + } + } + return sanitizedName; } /** @@ -179,6 +228,37 @@ public static String sanitizeMetricName(String metricName, Unit unit) { return result; } + /** + * Convert an arbitrary string to a valid metric name without stripping reserved suffixes. + * + *

Any non-empty valid UTF-8 string is accepted and returned unchanged. This is the permissive + * normalization behavior introduced in 1.6.0. Use this method for new integrations that want to + * preserve the original metric name and rely on registration-time collision detection instead of + * suffix stripping. + * + * @throws IllegalArgumentException if the input is empty + */ + public static String normalizeMetricName(String metricName) { + if (metricName.isEmpty()) { + throw new IllegalArgumentException("Cannot convert an empty string to a valid metric name."); + } + return metricName; + } + + /** + * Like {@link #normalizeMetricName(String)}, but also makes sure that the unit is appended as a + * suffix if the unit is not {@code null}. + */ + public static String normalizeMetricName(String metricName, Unit unit) { + String result = normalizeMetricName(metricName); + if (unit != null) { + if (!result.endsWith("_" + unit) && !result.endsWith("." + unit)) { + result += "_" + unit; + } + } + return result; + } + /** * Convert an arbitrary string to a name where {@link #isValidLabelName(String) * isValidLabelName(name)} is true. diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/Quantile.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/Quantile.java index 1601920f0..8bc28ae95 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/Quantile.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/Quantile.java @@ -1,6 +1,9 @@ package io.prometheus.metrics.model.snapshots; +import io.prometheus.metrics.annotations.StableApi; + /** Immutable representation of a Quantile. */ +@StableApi public class Quantile { private final double quantile; diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/Quantiles.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/Quantiles.java index 34a9bc048..37d2686d1 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/Quantiles.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/Quantiles.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.model.snapshots; +import io.prometheus.metrics.annotations.StableApi; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -8,6 +9,7 @@ import java.util.List; /** Immutable list of quantiles. */ +@StableApi public class Quantiles implements Iterable { private final List quantiles; diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/SnapshotEscaper.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/SnapshotEscaper.java index c3336af17..b8c887f01 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/SnapshotEscaper.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/SnapshotEscaper.java @@ -113,6 +113,26 @@ public static String getOriginalMetadataName(MetricMetadata metadata, EscapingSc } } + public static String getLegacyGaugeName( + MetricMetadata metadata, String rawOriginalName, EscapingScheme scheme) { + String legacyGaugeBaseName = stripLegacyGaugeSuffix(rawOriginalName); + if (legacyGaugeBaseName != null) { + return PrometheusNaming.escapeName(legacyGaugeBaseName, scheme); + } + return getMetadataName(metadata, scheme); + } + + @Nullable + private static String stripLegacyGaugeSuffix(String rawOriginalName) { + if (rawOriginalName.endsWith(".created")) { + return rawOriginalName.substring(0, rawOriginalName.length() - ".created".length()); + } + if (rawOriginalName.endsWith(".total")) { + return rawOriginalName.substring(0, rawOriginalName.length() - ".total".length()); + } + return null; + } + public static Labels escapeLabels(Labels labels, EscapingScheme scheme) { Labels.Builder outLabelsBuilder = Labels.builder(); diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/StateSetSnapshot.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/StateSetSnapshot.java index 7ca7f36d1..d07308683 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/StateSetSnapshot.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/StateSetSnapshot.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.model.snapshots; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.EscapingScheme; import java.util.ArrayList; import java.util.Arrays; @@ -11,6 +12,7 @@ import javax.annotation.Nullable; /** Immutable snapshot of a StateSet metric. */ +@StableApi public final class StateSetSnapshot extends MetricSnapshot { /** @@ -164,25 +166,16 @@ public Stream stream() { return asList().stream(); } + /** + * Sorts names and values in place using introspective quicksort. + * + *

Algorithm: 3-way quicksort with insertion sort for tiny partitions and heapsort fallback + * at the recursion depth limit. Parallel arrays are swapped in lockstep. + * + *

Complexity: O(n log n) average and worst case. + */ private static void sort(String[] names, boolean[] values) { - // Bubblesort - int n = names.length; - for (int i = 0; i < n - 1; i++) { - for (int j = 0; j < n - i - 1; j++) { - if (names[j].compareTo(names[j + 1]) > 0) { - swap(j, j + 1, names, values); - } - } - } - } - - private static void swap(int i, int j, String[] names, boolean[] values) { - String tmpName = names[j]; - names[j] = names[i]; - names[i] = tmpName; - boolean tmpValue = values[j]; - values[j] = values[i]; - values[i] = tmpValue; + StringBooleanArraySorter.sort(names, values); } public static Builder builder() { @@ -268,4 +261,155 @@ protected Builder self() { return this; } } + + /** + * In-place introsort for state {@code names} and parallel boolean {@code values}. + * + *

Uses 3-way quicksort partitioning for large ranges, insertion sort for tiny ranges, and a + * heapsort fallback at the recursion-depth limit to guarantee O(n log n) worst-case complexity. + */ + private static final class StringBooleanArraySorter { + + private static final int INSERTION_SORT_THRESHOLD = 24; + + private static void sort(String[] names, boolean[] values) { + int right = names.length - 1; + if (right <= 0) { + return; + } + introSort(names, values, 0, right, depthLimit(names.length)); + } + + private static void introSort( + String[] names, boolean[] values, int left, int right, int depthLimit) { + while (left < right) { + if (right - left + 1 <= INSERTION_SORT_THRESHOLD) { + insertionSort(names, values, left, right); + return; + } + if (depthLimit == 0) { + heapSort(names, values, left, right); + return; + } + depthLimit--; + + int mid = left + ((right - left) >>> 1); + int pivotIndex = medianOf3(names, left, mid, right); + String pivot = names[pivotIndex]; + + int lt = left; + int i = left; + int gt = right; + while (i <= gt) { + int cmp = compare(names[i], pivot); + if (cmp < 0) { + swap(i, lt, names, values); + i++; + lt++; + } else if (cmp > 0) { + swap(i, gt, names, values); + gt--; + } else { + i++; + } + } + + if (lt - left < right - gt) { + introSort(names, values, left, lt - 1, depthLimit); + left = gt + 1; + } else { + introSort(names, values, gt + 1, right, depthLimit); + right = lt - 1; + } + } + } + + private static void insertionSort(String[] names, boolean[] values, int left, int right) { + for (int i = left + 1; i <= right; i++) { + String name = names[i]; + boolean value = values[i]; + int j = i - 1; + while (j >= left && compare(names[j], name) > 0) { + names[j + 1] = names[j]; + values[j + 1] = values[j]; + j--; + } + names[j + 1] = name; + values[j + 1] = value; + } + } + + private static void heapSort(String[] names, boolean[] values, int left, int right) { + int size = right - left + 1; + for (int i = (size >>> 1) - 1; i >= 0; i--) { + siftDown(names, values, left, i, size); + } + for (int end = size - 1; end > 0; end--) { + swap(left, left + end, names, values); + siftDown(names, values, left, 0, end); + } + } + + private static void siftDown(String[] names, boolean[] values, int base, int root, int size) { + while (true) { + int child = (root << 1) + 1; + if (child >= size) { + return; + } + int rightChild = child + 1; + if (rightChild < size && compare(names[base + child], names[base + rightChild]) < 0) { + child = rightChild; + } + if (compare(names[base + root], names[base + child]) >= 0) { + return; + } + swap(base + root, base + child, names, values); + root = child; + } + } + + private static int depthLimit(int length) { + int result = 0; + while (length > 1) { + result++; + length >>>= 1; + } + return result << 1; + } + + private static int medianOf3(String[] names, int i, int j, int k) { + if (compare(names[i], names[j]) > 0) { + int tmp = i; + i = j; + j = tmp; + } + if (compare(names[j], names[k]) > 0) { + int tmp = j; + j = k; + k = tmp; + } + if (compare(names[i], names[j]) > 0) { + int tmp = i; + i = j; + j = tmp; + } + return j; + } + + private static int compare(String left, String right) { + return left.compareTo(right); + } + + private static void swap(int i, int j, String[] names, boolean[] values) { + if (i == j) { + return; + } + String name = names[i]; + names[i] = names[j]; + names[j] = name; + boolean value = values[i]; + values[i] = values[j]; + values[j] = value; + } + } } diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/SummarySnapshot.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/SummarySnapshot.java index 1b8dbc2e9..e7203882c 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/SummarySnapshot.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/SummarySnapshot.java @@ -1,11 +1,13 @@ package io.prometheus.metrics.model.snapshots; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.EscapingScheme; import java.util.ArrayList; import java.util.Collection; import java.util.List; /** Immutable snapshot of a Summary metric. */ +@StableApi public final class SummarySnapshot extends MetricSnapshot { /** diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/Unit.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/Unit.java index 6e652af13..818f14416 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/Unit.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/Unit.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.model.snapshots; +import io.prometheus.metrics.annotations.StableApi; import java.util.Objects; /** @@ -12,6 +13,7 @@ *

Note that in Prometheus, units are largely based on SI base units (seconds, bytes, joules, * grams, meters, ratio, volts, amperes, and Celsius). */ +@StableApi public final class Unit { private final String name; diff --git a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/UnknownSnapshot.java b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/UnknownSnapshot.java index 09574d6cd..66e09abe0 100644 --- a/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/UnknownSnapshot.java +++ b/prometheus-metrics-model/src/main/java/io/prometheus/metrics/model/snapshots/UnknownSnapshot.java @@ -1,5 +1,6 @@ package io.prometheus.metrics.model.snapshots; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.EscapingScheme; import java.util.ArrayList; import java.util.Collection; @@ -7,6 +8,7 @@ import javax.annotation.Nullable; /** Immutable snapshot of an Unknown (Untyped) metric. */ +@StableApi public final class UnknownSnapshot extends MetricSnapshot { /** diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/registry/MultiCollectorNameFilterTest.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/registry/MultiCollectorNameFilterTest.java index 48be456a6..46ba39a2b 100644 --- a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/registry/MultiCollectorNameFilterTest.java +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/registry/MultiCollectorNameFilterTest.java @@ -13,6 +13,7 @@ import java.util.concurrent.atomic.AtomicBoolean; import org.junit.jupiter.api.Test; +@SuppressWarnings("deprecation") class MultiCollectorNameFilterTest { private static class Registry extends PrometheusRegistry { diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/registry/OpenTelemetryExporterRegistryCompatibilityTest.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/registry/OpenTelemetryExporterRegistryCompatibilityTest.java index 166b374b8..3142fabe8 100644 --- a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/registry/OpenTelemetryExporterRegistryCompatibilityTest.java +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/registry/OpenTelemetryExporterRegistryCompatibilityTest.java @@ -20,6 +20,7 @@ * scrape, and unregister continue to work for that usage pattern and that a shared registry with * both SDK-style and validated collectors behaves correctly. */ +@SuppressWarnings("deprecation") class OpenTelemetryExporterRegistryCompatibilityTest { /** diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/registry/PrometheusRegistryTest.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/registry/PrometheusRegistryTest.java index 6dabad653..5e33f0a44 100644 --- a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/registry/PrometheusRegistryTest.java +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/registry/PrometheusRegistryTest.java @@ -7,6 +7,7 @@ import io.prometheus.metrics.model.snapshots.CounterSnapshot; import io.prometheus.metrics.model.snapshots.GaugeSnapshot; +import io.prometheus.metrics.model.snapshots.MetricFamilyDescriptor; import io.prometheus.metrics.model.snapshots.MetricMetadata; import io.prometheus.metrics.model.snapshots.MetricSnapshot; import io.prometheus.metrics.model.snapshots.MetricSnapshots; @@ -16,6 +17,7 @@ import java.util.Set; import org.junit.jupiter.api.Test; +@SuppressWarnings("deprecation") class PrometheusRegistryTest { Collector noName = () -> GaugeSnapshot.builder().name("no_name_gauge").build(); @@ -81,7 +83,7 @@ public MetricSnapshots collect() { @Override public List getPrometheusNames() { - return Arrays.asList(gaugeA.getPrometheusName(), counterB.getPrometheusName()); + return Arrays.asList("gauge_a", "counter_b"); } }; @@ -459,6 +461,81 @@ public String getPrometheusName() { assertThatCode(() -> registry.register(legacyCollector2)).doesNotThrowAnyException(); } + @Test + void register_metricFamilyDescriptor_usedForValidation() { + PrometheusRegistry registry = new PrometheusRegistry(); + + Collector counter = + new Collector() { + @Override + public MetricSnapshot collect() { + return CounterSnapshot.builder().name("requests_total").build(); + } + + @Override + public MetricFamilyDescriptor getMetricFamilyDescriptor() { + return MetricFamilyDescriptor.counter("requests_total").labelName("path").build(); + } + }; + + Collector gauge = + new Collector() { + @Override + public MetricSnapshot collect() { + return GaugeSnapshot.builder().name("requests").build(); + } + + @Override + public MetricFamilyDescriptor getMetricFamilyDescriptor() { + return MetricFamilyDescriptor.gauge("requests").labelName("path").build(); + } + }; + + registry.register(counter); + + assertThatThrownBy(() -> registry.register(gauge)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessageContaining("Conflicting metric types"); + } + + @Test + void register_multiCollector_metricFamilyDescriptorsUsedForValidation() { + PrometheusRegistry registry = new PrometheusRegistry(); + + MultiCollector multiCollector = + new MultiCollector() { + @Override + public MetricSnapshots collect() { + return new MetricSnapshots(CounterSnapshot.builder().name("requests_total").build()); + } + + @Override + public List getMetricFamilyDescriptors() { + return asList( + MetricFamilyDescriptor.counter("requests_total").labelName("path").build()); + } + }; + + Collector duplicate = + new Collector() { + @Override + public MetricSnapshot collect() { + return CounterSnapshot.builder().name("requests_total").build(); + } + + @Override + public MetricFamilyDescriptor getMetricFamilyDescriptor() { + return MetricFamilyDescriptor.counter("requests_total").labelName("path").build(); + } + }; + + registry.register(multiCollector); + + assertThatThrownBy(() -> registry.register(duplicate)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessageContaining("identical label schema"); + } + @Test void register_multiCollector_withTypeValidation() { PrometheusRegistry registry = new PrometheusRegistry(); diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/ClassicHistogramBucketsTest.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/ClassicHistogramBucketsTest.java index d06c2ac70..574ed0720 100644 --- a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/ClassicHistogramBucketsTest.java +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/ClassicHistogramBucketsTest.java @@ -3,8 +3,11 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatExceptionOfType; +import java.util.HashMap; import java.util.Iterator; import java.util.List; +import java.util.Map; +import java.util.Random; import java.util.stream.Collectors; import org.junit.jupiter.api.Test; @@ -127,4 +130,109 @@ void compare() { List list = buckets.stream().collect(Collectors.toList()); assertThat(list.get(0)).isNotEqualByComparingTo(list.get(1)); } + + @Test + void testSortSmallInputMaintainsPairs() { + int size = 5; + double[] upperBounds = new double[size]; + long[] counts = new long[size]; + Map expectedCounts = new HashMap<>(); + for (int i = 0; i < size - 1; i++) { + upperBounds[i] = i + 0.5; + counts[i] = 100L + i; + expectedCounts.put(upperBounds[i], counts[i]); + } + upperBounds[size - 1] = Double.POSITIVE_INFINITY; + counts[size - 1] = 200L; + expectedCounts.put(upperBounds[size - 1], counts[size - 1]); + + Random random = new Random(10L); + for (int i = size - 1; i > 0; i--) { + int j = random.nextInt(i + 1); + double upperBound = upperBounds[i]; + upperBounds[i] = upperBounds[j]; + upperBounds[j] = upperBound; + long count = counts[i]; + counts[i] = counts[j]; + counts[j] = count; + } + + ClassicHistogramBuckets buckets = ClassicHistogramBuckets.of(upperBounds, counts); + for (int i = 1; i < buckets.size(); i++) { + assertThat(buckets.getUpperBound(i - 1)).isLessThan(buckets.getUpperBound(i)); + } + for (int i = 0; i < buckets.size(); i++) { + assertThat(buckets.getCount(i)).isEqualTo(expectedCounts.get(buckets.getUpperBound(i))); + } + } + + @Test + void testSortMediumInputMaintainsPairs() { + int size = 25; + double[] upperBounds = new double[size]; + long[] counts = new long[size]; + Map expectedCounts = new HashMap<>(); + for (int i = 0; i < size - 1; i++) { + upperBounds[i] = i + 0.125; + counts[i] = 1000L + i; + expectedCounts.put(upperBounds[i], counts[i]); + } + upperBounds[size - 1] = Double.POSITIVE_INFINITY; + counts[size - 1] = 2000L; + expectedCounts.put(upperBounds[size - 1], counts[size - 1]); + + Random random = new Random(11L); + for (int i = size - 1; i > 0; i--) { + int j = random.nextInt(i + 1); + double upperBound = upperBounds[i]; + upperBounds[i] = upperBounds[j]; + upperBounds[j] = upperBound; + long count = counts[i]; + counts[i] = counts[j]; + counts[j] = count; + } + + ClassicHistogramBuckets buckets = ClassicHistogramBuckets.of(upperBounds, counts); + for (int i = 1; i < buckets.size(); i++) { + assertThat(buckets.getUpperBound(i - 1)).isLessThan(buckets.getUpperBound(i)); + } + for (int i = 0; i < buckets.size(); i++) { + assertThat(buckets.getCount(i)).isEqualTo(expectedCounts.get(buckets.getUpperBound(i))); + } + } + + @Test + void testSortLargeInputMaintainsPairs() { + int size = 64; + double[] upperBounds = new double[size]; + long[] counts = new long[size]; + Map expectedCounts = new HashMap<>(); + for (int i = 0; i < size - 1; i++) { + upperBounds[i] = i + 0.125; + counts[i] = 1000L + i; + expectedCounts.put(upperBounds[i], counts[i]); + } + upperBounds[size - 1] = Double.POSITIVE_INFINITY; + counts[size - 1] = 2000L; + expectedCounts.put(upperBounds[size - 1], counts[size - 1]); + + Random random = new Random(1L); + for (int i = size - 1; i > 0; i--) { + int j = random.nextInt(i + 1); + double upperBound = upperBounds[i]; + upperBounds[i] = upperBounds[j]; + upperBounds[j] = upperBound; + long count = counts[i]; + counts[i] = counts[j]; + counts[j] = count; + } + + ClassicHistogramBuckets buckets = ClassicHistogramBuckets.of(upperBounds, counts); + for (int i = 1; i < buckets.size(); i++) { + assertThat(buckets.getUpperBound(i - 1)).isLessThan(buckets.getUpperBound(i)); + } + for (int i = 0; i < buckets.size(); i++) { + assertThat(buckets.getCount(i)).isEqualTo(expectedCounts.get(buckets.getUpperBound(i))); + } + } } diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/CounterSnapshotTest.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/CounterSnapshotTest.java index 16a324323..af6060e65 100644 --- a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/CounterSnapshotTest.java +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/CounterSnapshotTest.java @@ -75,6 +75,7 @@ void testMinimalGoodCase() { .dataPoint(CounterDataPointSnapshot.builder().value(1.0).build()) .build(); SnapshotTestUtil.assertMetadata(snapshot, "events", null, null); + SnapshotTestUtil.assertDerivedMetadata(snapshot, "events", "events", "events"); assertThat(snapshot.getDataPoints()).hasSize(1); CounterDataPointSnapshot data = snapshot.getDataPoints().get(0); assertThat((Iterable) data.getLabels()).isEmpty(); @@ -93,7 +94,20 @@ void testEmptyCounter() { @Test void testTotalSuffixPresent() { CounterSnapshot snapshot = CounterSnapshot.builder().name("test_total").build(); - assertThat(snapshot.getMetadata().getPrometheusName()).isEqualTo("test_total"); + // Counter snapshots derive the internal metadata name without the _total suffix; the exposition + // base name keeps the literal original name that will still be used at the wire level. + assertThat(snapshot.getMetadata().getPrometheusName()).isEqualTo("test"); + SnapshotTestUtil.assertDerivedMetadata(snapshot, "test", "test_total", "test_total"); + } + + @Test + void testCounterUnitDerivedFromTypedBuilder() { + CounterSnapshot snapshot = + CounterSnapshot.builder().name("test_total").unit(Unit.SECONDS).build(); + + SnapshotTestUtil.assertMetadata(snapshot, "test_seconds", null, "seconds"); + SnapshotTestUtil.assertDerivedMetadata( + snapshot, "test_seconds", "test_total_seconds", "test_total"); } @Test diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/GaugeSnapshotTest.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/GaugeSnapshotTest.java index 7bd965913..6a68ebd88 100644 --- a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/GaugeSnapshotTest.java +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/GaugeSnapshotTest.java @@ -87,14 +87,16 @@ void testEmptyGauge() { @Test void testTotalSuffixPresent() { - CounterSnapshot snapshot = CounterSnapshot.builder().name("test_total").build(); + GaugeSnapshot snapshot = GaugeSnapshot.builder().name("test_total").build(); assertThat(snapshot.getMetadata().getPrometheusName()).isEqualTo("test_total"); + SnapshotTestUtil.assertDerivedMetadata(snapshot, "test_total", "test_total", "test_total"); } @Test void testTotalSuffixPresentDot() { - CounterSnapshot snapshot = CounterSnapshot.builder().name("test.total").build(); + GaugeSnapshot snapshot = GaugeSnapshot.builder().name("test.total").build(); assertThat(snapshot.getMetadata().getPrometheusName()).isEqualTo("test_total"); + SnapshotTestUtil.assertDerivedMetadata(snapshot, "test.total", "test.total", "test.total"); } @Test diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/InfoSnapshotTest.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/InfoSnapshotTest.java index 20353ea3a..065041bc7 100644 --- a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/InfoSnapshotTest.java +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/InfoSnapshotTest.java @@ -19,7 +19,7 @@ void testCompleteGoodCase() { .labels(Labels.of("instance_id", "127.0.0.1:9100", "service_name", "gateway")) .build()) .build(); - assertThat(snapshot.getMetadata().getName()).isEqualTo("target"); + SnapshotTestUtil.assertDerivedMetadata(snapshot, "target", "target", "target"); assertThat(snapshot.getMetadata().getHelp()).isEqualTo("Target info"); assertThat(snapshot.getMetadata().hasUnit()).isFalse(); assertThat(snapshot.getDataPoints().size()).isOne(); @@ -62,12 +62,14 @@ void testDataImmutable() { @Test void testNameMayIncludeSuffix() { InfoSnapshot snapshot = InfoSnapshot.builder().name("jvm_info").build(); - assertThat(snapshot.getMetadata().getPrometheusName()).isEqualTo("jvm_info"); + assertThat(snapshot.getMetadata().getPrometheusName()).isEqualTo("jvm"); + SnapshotTestUtil.assertDerivedMetadata(snapshot, "jvm", "jvm_info", "jvm_info"); } @Test void testNameMayIncludeSuffixDot() { InfoSnapshot snapshot = InfoSnapshot.builder().name("jvm.info").build(); - assertThat(snapshot.getMetadata().getPrometheusName()).isEqualTo("jvm_info"); + assertThat(snapshot.getMetadata().getPrometheusName()).isEqualTo("jvm"); + SnapshotTestUtil.assertDerivedMetadata(snapshot, "jvm", "jvm.info", "jvm.info"); } } diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/LabelsTest.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/LabelsTest.java index 3dc8f639f..fcc881d25 100644 --- a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/LabelsTest.java +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/LabelsTest.java @@ -3,6 +3,9 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatExceptionOfType; +import java.util.HashMap; +import java.util.Map; +import java.util.Random; import org.assertj.core.api.IterableAssert; import org.junit.jupiter.api.Test; @@ -129,4 +132,100 @@ void testDuplicateName() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> Labels.of("key_one", "v1", "key.one", "v2")); } + + @Test + void testSortSmallInputMaintainsPairs() { + int size = 5; + String[] names = new String[size]; + String[] values = new String[size]; + Map expectedValues = new HashMap<>(); + for (int i = 0; i < size; i++) { + names[i] = i % 2 == 0 ? "even_" + i : "odd." + i; + values[i] = "value-" + i; + expectedValues.put(names[i], values[i]); + } + + Random random = new Random(14L); + for (int i = size - 1; i > 0; i--) { + int j = random.nextInt(i + 1); + String name = names[i]; + names[i] = names[j]; + names[j] = name; + String value = values[i]; + values[i] = values[j]; + values[j] = value; + } + + Labels labels = Labels.of(names, values); + for (int i = 1; i < labels.size(); i++) { + assertThat(labels.getPrometheusName(i - 1)).isLessThan(labels.getPrometheusName(i)); + } + for (int i = 0; i < labels.size(); i++) { + assertThat(labels.getValue(i)).isEqualTo(expectedValues.get(labels.getName(i))); + } + } + + @Test + void testSortMediumInputMaintainsPairs() { + int size = 25; + String[] names = new String[size]; + String[] values = new String[size]; + Map expectedValues = new HashMap<>(); + for (int i = 0; i < size; i++) { + names[i] = i % 2 == 0 ? "even_" + i : "odd." + i; + values[i] = "value-" + i; + expectedValues.put(names[i], values[i]); + } + + Random random = new Random(15L); + for (int i = size - 1; i > 0; i--) { + int j = random.nextInt(i + 1); + String name = names[i]; + names[i] = names[j]; + names[j] = name; + String value = values[i]; + values[i] = values[j]; + values[j] = value; + } + + Labels labels = Labels.of(names, values); + for (int i = 1; i < labels.size(); i++) { + assertThat(labels.getPrometheusName(i - 1)).isLessThan(labels.getPrometheusName(i)); + } + for (int i = 0; i < labels.size(); i++) { + assertThat(labels.getValue(i)).isEqualTo(expectedValues.get(labels.getName(i))); + } + } + + @Test + void testSortLargeInputMaintainsPairs() { + int size = 64; + String[] names = new String[size]; + String[] values = new String[size]; + Map expectedValues = new HashMap<>(); + for (int i = 0; i < size; i++) { + names[i] = i % 2 == 0 ? "even_" + i : "odd." + i; + values[i] = "value-" + i; + expectedValues.put(names[i], values[i]); + } + + Random random = new Random(3L); + for (int i = size - 1; i > 0; i--) { + int j = random.nextInt(i + 1); + String name = names[i]; + names[i] = names[j]; + names[j] = name; + String value = values[i]; + values[i] = values[j]; + values[j] = value; + } + + Labels labels = Labels.of(names, values); + for (int i = 1; i < labels.size(); i++) { + assertThat(labels.getPrometheusName(i - 1)).isLessThan(labels.getPrometheusName(i)); + } + for (int i = 0; i < labels.size(); i++) { + assertThat(labels.getValue(i)).isEqualTo(expectedValues.get(labels.getName(i))); + } + } } diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/MetricFamilyDescriptorTest.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/MetricFamilyDescriptorTest.java new file mode 100644 index 000000000..eca3ad163 --- /dev/null +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/MetricFamilyDescriptorTest.java @@ -0,0 +1,149 @@ +package io.prometheus.metrics.model.snapshots; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +import io.prometheus.metrics.model.registry.MetricType; +import java.util.Arrays; +import org.junit.jupiter.api.Test; + +class MetricFamilyDescriptorTest { + + @Test + void counterDescriptorDerivesMetadata() { + MetricFamilyDescriptor descriptor = + MetricFamilyDescriptor.counter("events_total") + .help("help") + .unit(Unit.SECONDS) + .labelNames(Arrays.asList("method.name", "status")) + .build(); + + assertThat(descriptor.getType()).isEqualTo(MetricType.COUNTER); + assertThat(descriptor.getPrometheusName()).isEqualTo("events_seconds"); + assertThat(descriptor.getLabelNames()).containsExactly("method_name", "status"); + assertThat(descriptor.getMetadata().getName()).isEqualTo("events_seconds"); + assertThat(descriptor.getMetadata().getExpositionBaseName()).isEqualTo("events_total_seconds"); + assertThat(descriptor.getMetadata().getOriginalName()).isEqualTo("events_total"); + } + + @Test + void infoDescriptorDerivesMetadata() { + MetricFamilyDescriptor descriptor = + MetricFamilyDescriptor.info("jvm_info").help("JVM info").labelName("vendor").build(); + + assertThat(descriptor.getType()).isEqualTo(MetricType.INFO); + assertThat(descriptor.getPrometheusName()).isEqualTo("jvm"); + assertThat(descriptor.getLabelNames()).containsExactly("vendor"); + assertThat(descriptor.getMetadata().getName()).isEqualTo("jvm"); + assertThat(descriptor.getMetadata().getExpositionBaseName()).isEqualTo("jvm_info"); + assertThat(descriptor.getMetadata().getOriginalName()).isEqualTo("jvm_info"); + } + + @Test + void gaugeDescriptorKeepsLiteralName() { + MetricFamilyDescriptor descriptor = MetricFamilyDescriptor.gauge("test_total").build(); + + assertThat(descriptor.getType()).isEqualTo(MetricType.GAUGE); + assertThat(descriptor.getPrometheusName()).isEqualTo("test_total"); + assertThat(descriptor.getMetadata().getExpositionBaseName()).isEqualTo("test_total"); + assertThat(descriptor.getMetadata().getOriginalName()).isEqualTo("test_total"); + } + + @Test + void histogramDescriptorKeepsLiteralName() { + MetricFamilyDescriptor descriptor = + MetricFamilyDescriptor.histogram("request_duration_seconds") + .help("Request duration") + .labelName("method") + .build(); + + assertThat(descriptor.getType()).isEqualTo(MetricType.HISTOGRAM); + assertThat(descriptor.getPrometheusName()).isEqualTo("request_duration_seconds"); + assertThat(descriptor.getLabelNames()).containsExactly("method"); + } + + @Test + void summaryDescriptorKeepsLiteralName() { + MetricFamilyDescriptor descriptor = + MetricFamilyDescriptor.summary("request_size_bytes") + .help("Request size") + .labelName("method") + .build(); + + assertThat(descriptor.getType()).isEqualTo(MetricType.SUMMARY); + assertThat(descriptor.getPrometheusName()).isEqualTo("request_size_bytes"); + assertThat(descriptor.getLabelNames()).containsExactly("method"); + } + + @Test + void stateSetDescriptorKeepsLiteralName() { + MetricFamilyDescriptor descriptor = + MetricFamilyDescriptor.stateSet("feature_flags").help("Flags").labelName("service").build(); + + assertThat(descriptor.getType()).isEqualTo(MetricType.STATESET); + assertThat(descriptor.getPrometheusName()).isEqualTo("feature_flags"); + assertThat(descriptor.getLabelNames()).containsExactly("service"); + } + + @Test + void unknownDescriptorKeepsLiteralName() { + MetricFamilyDescriptor descriptor = + MetricFamilyDescriptor.unknown("vendor_metric").help("Vendor metric").build(); + + assertThat(descriptor.getType()).isEqualTo(MetricType.UNKNOWN); + assertThat(descriptor.getPrometheusName()).isEqualTo("vendor_metric"); + } + + @Test + void genericFactoryUsesTypedBuilderSemanticsForAllKinds() { + MetricFamilyDescriptor counter = + MetricFamilyDescriptor.of(MetricType.COUNTER, "http_requests_total").build(); + MetricFamilyDescriptor gauge = + MetricFamilyDescriptor.of(MetricType.GAUGE, "queue_depth").build(); + MetricFamilyDescriptor histogram = + MetricFamilyDescriptor.of(MetricType.HISTOGRAM, "request_duration_seconds").build(); + MetricFamilyDescriptor summary = + MetricFamilyDescriptor.of(MetricType.SUMMARY, "request_size_bytes").build(); + MetricFamilyDescriptor info = MetricFamilyDescriptor.of(MetricType.INFO, "build_info").build(); + MetricFamilyDescriptor stateSet = + MetricFamilyDescriptor.of(MetricType.STATESET, "feature_flags").build(); + MetricFamilyDescriptor unknown = + MetricFamilyDescriptor.of(MetricType.UNKNOWN, "vendor_metric").build(); + + assertThat(counter.getPrometheusName()).isEqualTo("http_requests"); + assertThat(gauge.getPrometheusName()).isEqualTo("queue_depth"); + assertThat(histogram.getPrometheusName()).isEqualTo("request_duration_seconds"); + assertThat(summary.getPrometheusName()).isEqualTo("request_size_bytes"); + assertThat(info.getPrometheusName()).isEqualTo("build"); + assertThat(stateSet.getPrometheusName()).isEqualTo("feature_flags"); + assertThat(unknown.getPrometheusName()).isEqualTo("vendor_metric"); + } + + @Test + void infoDescriptorRejectsUnit() { + assertThatThrownBy(() -> MetricFamilyDescriptor.info("jvm_info").unit(Unit.SECONDS)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Info metric cannot have a unit."); + } + + @Test + void buildersRejectNullHelp() { + assertThatThrownBy(() -> MetricFamilyDescriptor.counter("events_total").help(null)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Missing required field: help is null"); + } + + @Test + void buildersRejectNullUnit() { + assertThatThrownBy(() -> MetricFamilyDescriptor.counter("events_total").unit(null)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Missing required field: unit is null"); + } + + @Test + void stateSetDescriptorRejectsUnit() { + assertThatThrownBy(() -> MetricFamilyDescriptor.stateSet("feature_flags").unit(Unit.SECONDS)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("State set metric cannot have a unit."); + } +} diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/MetricMetadataTest.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/MetricMetadataTest.java index 8a4731ac8..5781eb146 100644 --- a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/MetricMetadataTest.java +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/MetricMetadataTest.java @@ -35,26 +35,30 @@ void testSanitizationIllegalCharacters() { @Test void testNameWithTotalSuffix() { + // sanitizeMetricName strips the reserved _total suffix. MetricMetadata metadata = new MetricMetadata(sanitizeMetricName("my_events_total")); - assertThat(metadata.getName()).isEqualTo("my_events_total"); + assertThat(metadata.getName()).isEqualTo("my_events"); } @Test void testNameWithInfoSuffix() { + // sanitizeMetricName strips the reserved _info suffix. MetricMetadata metadata = new MetricMetadata(sanitizeMetricName("target_info")); - assertThat(metadata.getName()).isEqualTo("target_info"); + assertThat(metadata.getName()).isEqualTo("target"); } @Test void testNameWithCreatedSuffix() { + // sanitizeMetricName strips the reserved _created suffix. MetricMetadata metadata = new MetricMetadata(sanitizeMetricName("my_events_created")); - assertThat(metadata.getName()).isEqualTo("my_events_created"); + assertThat(metadata.getName()).isEqualTo("my_events"); } @Test void testNameWithBucketSuffix() { + // sanitizeMetricName strips the reserved _bucket suffix. MetricMetadata metadata = new MetricMetadata(sanitizeMetricName("my_histogram_bucket")); - assertThat(metadata.getName()).isEqualTo("my_histogram_bucket"); + assertThat(metadata.getName()).isEqualTo("my_histogram"); } @Test diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/NativeHistogramBucketsTest.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/NativeHistogramBucketsTest.java index ed52a7d1a..5bc19a6f5 100644 --- a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/NativeHistogramBucketsTest.java +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/NativeHistogramBucketsTest.java @@ -3,7 +3,10 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatExceptionOfType; +import java.util.HashMap; import java.util.Iterator; +import java.util.Map; +import java.util.Random; import org.junit.jupiter.api.Test; class NativeHistogramBucketsTest { @@ -54,4 +57,100 @@ void testImmutable() { iterator.next(); assertThatExceptionOfType(UnsupportedOperationException.class).isThrownBy(iterator::remove); } + + @Test + void testSortSmallInputMaintainsPairs() { + int size = 5; + int[] bucketIndexes = new int[size]; + long[] counts = new long[size]; + Map expectedCounts = new HashMap<>(); + for (int i = 0; i < size; i++) { + bucketIndexes[i] = (i * 3) - 5; + counts[i] = 100L + i; + expectedCounts.put(bucketIndexes[i], counts[i]); + } + + Random random = new Random(12L); + for (int i = size - 1; i > 0; i--) { + int j = random.nextInt(i + 1); + int bucketIndex = bucketIndexes[i]; + bucketIndexes[i] = bucketIndexes[j]; + bucketIndexes[j] = bucketIndex; + long count = counts[i]; + counts[i] = counts[j]; + counts[j] = count; + } + + NativeHistogramBuckets buckets = NativeHistogramBuckets.of(bucketIndexes, counts); + for (int i = 1; i < buckets.size(); i++) { + assertThat(buckets.getBucketIndex(i - 1)).isLessThan(buckets.getBucketIndex(i)); + } + for (int i = 0; i < buckets.size(); i++) { + assertThat(buckets.getCount(i)).isEqualTo(expectedCounts.get(buckets.getBucketIndex(i))); + } + } + + @Test + void testSortMediumInputMaintainsPairs() { + int size = 25; + int[] bucketIndexes = new int[size]; + long[] counts = new long[size]; + Map expectedCounts = new HashMap<>(); + for (int i = 0; i < size; i++) { + bucketIndexes[i] = (i * 3) - 25; + counts[i] = 1000L + i; + expectedCounts.put(bucketIndexes[i], counts[i]); + } + + Random random = new Random(13L); + for (int i = size - 1; i > 0; i--) { + int j = random.nextInt(i + 1); + int bucketIndex = bucketIndexes[i]; + bucketIndexes[i] = bucketIndexes[j]; + bucketIndexes[j] = bucketIndex; + long count = counts[i]; + counts[i] = counts[j]; + counts[j] = count; + } + + NativeHistogramBuckets buckets = NativeHistogramBuckets.of(bucketIndexes, counts); + for (int i = 1; i < buckets.size(); i++) { + assertThat(buckets.getBucketIndex(i - 1)).isLessThan(buckets.getBucketIndex(i)); + } + for (int i = 0; i < buckets.size(); i++) { + assertThat(buckets.getCount(i)).isEqualTo(expectedCounts.get(buckets.getBucketIndex(i))); + } + } + + @Test + void testSortLargeInputMaintainsPairs() { + int size = 64; + int[] bucketIndexes = new int[size]; + long[] counts = new long[size]; + Map expectedCounts = new HashMap<>(); + for (int i = 0; i < size; i++) { + bucketIndexes[i] = (i * 3) - 50; + counts[i] = 1000L + i; + expectedCounts.put(bucketIndexes[i], counts[i]); + } + + Random random = new Random(2L); + for (int i = size - 1; i > 0; i--) { + int j = random.nextInt(i + 1); + int bucketIndex = bucketIndexes[i]; + bucketIndexes[i] = bucketIndexes[j]; + bucketIndexes[j] = bucketIndex; + long count = counts[i]; + counts[i] = counts[j]; + counts[j] = count; + } + + NativeHistogramBuckets buckets = NativeHistogramBuckets.of(bucketIndexes, counts); + for (int i = 1; i < buckets.size(); i++) { + assertThat(buckets.getBucketIndex(i - 1)).isLessThan(buckets.getBucketIndex(i)); + } + for (int i = 0; i < buckets.size(); i++) { + assertThat(buckets.getCount(i)).isEqualTo(expectedCounts.get(buckets.getBucketIndex(i))); + } + } } diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/PrometheusNamingTest.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/PrometheusNamingTest.java index dcebd14d8..ee6d2d027 100644 --- a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/PrometheusNamingTest.java +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/PrometheusNamingTest.java @@ -2,6 +2,7 @@ import static io.prometheus.metrics.model.snapshots.PrometheusNaming.escapeName; import static io.prometheus.metrics.model.snapshots.PrometheusNaming.isValidLabelName; +import static io.prometheus.metrics.model.snapshots.PrometheusNaming.normalizeMetricName; import static io.prometheus.metrics.model.snapshots.PrometheusNaming.prometheusName; import static io.prometheus.metrics.model.snapshots.PrometheusNaming.sanitizeLabelName; import static io.prometheus.metrics.model.snapshots.PrometheusNaming.sanitizeMetricName; @@ -22,27 +23,79 @@ class PrometheusNamingTest { @Test void testSanitizeMetricName() { - assertThat(sanitizeMetricName("my_counter_total")).isEqualTo("my_counter_total"); - assertThat(sanitizeMetricName("jvm.info")).isEqualTo("jvm.info"); - assertThat(sanitizeMetricName("jvm_info")).isEqualTo("jvm_info"); + // Reserved suffixes are stripped to avoid confusion with Prometheus type conventions. + assertThat(sanitizeMetricName("my_counter_total")).isEqualTo("my_counter"); + assertThat(sanitizeMetricName("jvm.info")).isEqualTo("jvm"); + assertThat(sanitizeMetricName("jvm_info")).isEqualTo("jvm"); assertThat(sanitizeMetricName("a.b")).isEqualTo("a.b"); - assertThat(sanitizeMetricName("_total")).isEqualTo("_total"); + // "_total" / ".total" corner cases: the suffix is the entire name, so the separator + // character is dropped to avoid returning an empty string. + assertThat(sanitizeMetricName("_total")).isEqualTo("total"); + assertThat(sanitizeMetricName(".total")).isEqualTo("total"); assertThat(sanitizeMetricName("total")).isEqualTo("total"); - assertThat(sanitizeMetricName("my_events_created")).isEqualTo("my_events_created"); - assertThat(sanitizeMetricName("my_histogram_bucket")).isEqualTo("my_histogram_bucket"); + assertThat(sanitizeMetricName("my_events_created")).isEqualTo("my_events"); + assertThat(sanitizeMetricName("my_histogram_bucket")).isEqualTo("my_histogram"); + } + + /** + * Regression test: reserved suffixes must be stripped even when the raw name comes from an + * external system (e.g. JMX Exporter converting a JMX attribute named {@code "Total"} into a + * Prometheus name {@code kafka_consumer_request_total}). + * + *

Without stripping, an UNKNOWN metric would be stored under {@code + * kafka_consumer_request_total} instead of {@code kafka_consumer_request}, breaking registry + * lookups by the expected base name and potentially triggering unintended counter-type inference + * in tools that check for the {@code _total} suffix. + */ + @Test + void testSanitizeMetricNameStripsReservedSuffixForDownstreamTools() { + // A JMX attribute "Total" produces "kafka_consumer_request_total" as the raw name. + // sanitizeMetricName must strip "_total" so that the metric is stored and looked up under + // "kafka_consumer_request", not "kafka_consumer_request_total". + assertThat(sanitizeMetricName("kafka_consumer_request_total")) + .isEqualTo("kafka_consumer_request"); + // Dot variant is stripped too. + assertThat(sanitizeMetricName("kafka_consumer_request.total")) + .isEqualTo("kafka_consumer_request"); + // Multiple chained reserved suffixes are stripped iteratively. + assertThat(sanitizeMetricName("events_total_created")).isEqualTo("events"); } @Test void testSanitizeMetricNameWithUnit() { assertThat(prometheusName(sanitizeMetricName("def", Unit.RATIO))) .isEqualTo("def_" + Unit.RATIO); + // _total is stripped first, then the unit is appended. assertThat(prometheusName(sanitizeMetricName("my_counter_total", Unit.RATIO))) - .isEqualTo("my_counter_total_" + Unit.RATIO); - assertThat(sanitizeMetricName("jvm.info", Unit.RATIO)).isEqualTo("jvm.info_" + Unit.RATIO); - assertThat(sanitizeMetricName("_total", Unit.RATIO)).isEqualTo("_total_" + Unit.RATIO); + .isEqualTo("my_counter_" + Unit.RATIO); + assertThat(sanitizeMetricName("jvm.info", Unit.RATIO)).isEqualTo("jvm_" + Unit.RATIO); + assertThat(sanitizeMetricName("_total", Unit.RATIO)).isEqualTo("total_" + Unit.RATIO); assertThat(sanitizeMetricName("total", Unit.RATIO)).isEqualTo("total_" + Unit.RATIO); } + @Test + void testNormalizeMetricName() { + assertThat(normalizeMetricName("my_counter_total")).isEqualTo("my_counter_total"); + assertThat(normalizeMetricName("jvm.info")).isEqualTo("jvm.info"); + assertThat(normalizeMetricName("jvm_info")).isEqualTo("jvm_info"); + assertThat(normalizeMetricName("a.b")).isEqualTo("a.b"); + assertThat(normalizeMetricName("_total")).isEqualTo("_total"); + assertThat(normalizeMetricName(".total")).isEqualTo(".total"); + assertThat(normalizeMetricName("my_events_created")).isEqualTo("my_events_created"); + assertThat(normalizeMetricName("my_histogram_bucket")).isEqualTo("my_histogram_bucket"); + } + + @Test + void testNormalizeMetricNameWithUnit() { + assertThat(prometheusName(normalizeMetricName("def", Unit.RATIO))) + .isEqualTo("def_" + Unit.RATIO); + assertThat(prometheusName(normalizeMetricName("my_counter_total", Unit.RATIO))) + .isEqualTo("my_counter_total_" + Unit.RATIO); + assertThat(normalizeMetricName("jvm.info", Unit.RATIO)).isEqualTo("jvm.info_" + Unit.RATIO); + assertThat(normalizeMetricName("_total", Unit.RATIO)).isEqualTo("_total_" + Unit.RATIO); + assertThat(normalizeMetricName("total", Unit.RATIO)).isEqualTo("total_" + Unit.RATIO); + } + @Test void testSanitizeLabelName() { assertThat(prometheusName(sanitizeLabelName("0abc.def"))).isEqualTo("_abc_def"); diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/SnapshotTestUtil.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/SnapshotTestUtil.java index 8a8a7f93b..de75eeaeb 100644 --- a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/SnapshotTestUtil.java +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/SnapshotTestUtil.java @@ -14,4 +14,11 @@ public static void assertMetadata( assertThat(snapshot.getMetadata().getUnit()).isNull(); } } + + public static void assertDerivedMetadata( + MetricSnapshot snapshot, String name, String expositionBaseName, String originalName) { + assertThat(snapshot.getMetadata().getName()).isEqualTo(name); + assertThat(snapshot.getMetadata().getExpositionBaseName()).isEqualTo(expositionBaseName); + assertThat(snapshot.getMetadata().getOriginalName()).isEqualTo(originalName); + } } diff --git a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/StateSetSnapshotTest.java b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/StateSetSnapshotTest.java index 02d16e64f..57696cfd1 100644 --- a/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/StateSetSnapshotTest.java +++ b/prometheus-metrics-model/src/test/java/io/prometheus/metrics/model/snapshots/StateSetSnapshotTest.java @@ -4,6 +4,9 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import java.util.Iterator; +import java.util.Map; +import java.util.Random; +import java.util.TreeMap; import java.util.concurrent.TimeUnit; import org.junit.jupiter.api.Test; @@ -167,4 +170,103 @@ void testLabelsUnique() { .build()) .build()); } + + @Test + void testSortSmallInputMaintainsPairs() { + int size = 5; + String[] names = new String[size]; + boolean[] values = new boolean[size]; + Map expectedValues = new TreeMap<>(); + for (int i = 0; i < size; i++) { + names[i] = "state_" + i; + values[i] = i % 3 == 0; + expectedValues.put(names[i], values[i]); + } + + Random random = new Random(16L); + for (int i = size - 1; i > 0; i--) { + int j = random.nextInt(i + 1); + String name = names[i]; + names[i] = names[j]; + names[j] = name; + boolean value = values[i]; + values[i] = values[j]; + values[j] = value; + } + + StateSetSnapshot.StateSetDataPointSnapshot snapshot = + new StateSetSnapshot.StateSetDataPointSnapshot(names, values, Labels.EMPTY); + for (int i = 1; i < snapshot.size(); i++) { + assertThat(snapshot.getName(i - 1)).isLessThan(snapshot.getName(i)); + } + for (int i = 0; i < snapshot.size(); i++) { + assertThat(snapshot.isTrue(i)).isEqualTo(expectedValues.get(snapshot.getName(i))); + } + } + + @Test + void testSortMediumInputMaintainsPairs() { + int size = 25; + String[] names = new String[size]; + boolean[] values = new boolean[size]; + Map expectedValues = new TreeMap<>(); + for (int i = 0; i < size; i++) { + names[i] = "state_" + i; + values[i] = i % 3 == 0; + expectedValues.put(names[i], values[i]); + } + + Random random = new Random(17L); + for (int i = size - 1; i > 0; i--) { + int j = random.nextInt(i + 1); + String name = names[i]; + names[i] = names[j]; + names[j] = name; + boolean value = values[i]; + values[i] = values[j]; + values[j] = value; + } + + StateSetSnapshot.StateSetDataPointSnapshot snapshot = + new StateSetSnapshot.StateSetDataPointSnapshot(names, values, Labels.EMPTY); + for (int i = 1; i < snapshot.size(); i++) { + assertThat(snapshot.getName(i - 1)).isLessThan(snapshot.getName(i)); + } + for (int i = 0; i < snapshot.size(); i++) { + assertThat(snapshot.isTrue(i)).isEqualTo(expectedValues.get(snapshot.getName(i))); + } + } + + @Test + void testSortLargeInputMaintainsPairs() { + int size = 64; + String[] names = new String[size]; + boolean[] values = new boolean[size]; + Map expectedValues = new TreeMap<>(); + for (int i = 0; i < size; i++) { + names[i] = "state_" + i; + values[i] = i % 3 == 0; + expectedValues.put(names[i], values[i]); + } + + Random random = new Random(4L); + for (int i = size - 1; i > 0; i--) { + int j = random.nextInt(i + 1); + String name = names[i]; + names[i] = names[j]; + names[j] = name; + boolean value = values[i]; + values[i] = values[j]; + values[j] = value; + } + + StateSetSnapshot.StateSetDataPointSnapshot snapshot = + new StateSetSnapshot.StateSetDataPointSnapshot(names, values, Labels.EMPTY); + for (int i = 1; i < snapshot.size(); i++) { + assertThat(snapshot.getName(i - 1)).isLessThan(snapshot.getName(i)); + } + for (int i = 0; i < snapshot.size(); i++) { + assertThat(snapshot.isTrue(i)).isEqualTo(expectedValues.get(snapshot.getName(i))); + } + } } diff --git a/prometheus-metrics-otel-support/pom.xml b/prometheus-metrics-otel-support/pom.xml index 4e2e80f23..2ff51c3a8 100644 --- a/prometheus-metrics-otel-support/pom.xml +++ b/prometheus-metrics-otel-support/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT prometheus-metrics-otel-support diff --git a/prometheus-metrics-parent/pom.xml b/prometheus-metrics-parent/pom.xml index 099e6eb2a..cb4efda88 100644 --- a/prometheus-metrics-parent/pom.xml +++ b/prometheus-metrics-parent/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java_parent - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT Prometheus Metrics Library Parent http://github.com/prometheus/client_java diff --git a/prometheus-metrics-simpleclient-bridge/pom.xml b/prometheus-metrics-simpleclient-bridge/pom.xml index 02e768c82..d03cb0e17 100644 --- a/prometheus-metrics-simpleclient-bridge/pom.xml +++ b/prometheus-metrics-simpleclient-bridge/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT prometheus-metrics-simpleclient-bridge @@ -21,6 +21,12 @@ + + io.prometheus + prometheus-metrics-annotations + ${project.version} + true + io.prometheus prometheus-metrics-model diff --git a/prometheus-metrics-simpleclient-bridge/src/main/java/io/prometheus/metrics/simpleclient/bridge/SimpleclientCollector.java b/prometheus-metrics-simpleclient-bridge/src/main/java/io/prometheus/metrics/simpleclient/bridge/SimpleclientCollector.java index 3a96453e7..b2d724997 100644 --- a/prometheus-metrics-simpleclient-bridge/src/main/java/io/prometheus/metrics/simpleclient/bridge/SimpleclientCollector.java +++ b/prometheus-metrics-simpleclient-bridge/src/main/java/io/prometheus/metrics/simpleclient/bridge/SimpleclientCollector.java @@ -5,6 +5,7 @@ import io.prometheus.client.Collector; import io.prometheus.client.CollectorRegistry; +import io.prometheus.metrics.annotations.StableApi; import io.prometheus.metrics.config.PrometheusProperties; import io.prometheus.metrics.model.registry.MultiCollector; import io.prometheus.metrics.model.registry.PrometheusRegistry; @@ -54,6 +55,7 @@ * .register(prometheusRegistry); * }

*/ +@StableApi public class SimpleclientCollector implements MultiCollector { private final CollectorRegistry simpleclientRegistry; diff --git a/prometheus-metrics-tracer/pom.xml b/prometheus-metrics-tracer/pom.xml index 45cd014b1..2c8d75808 100644 --- a/prometheus-metrics-tracer/pom.xml +++ b/prometheus-metrics-tracer/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT prometheus-metrics-tracer diff --git a/prometheus-metrics-tracer/prometheus-metrics-tracer-common/pom.xml b/prometheus-metrics-tracer/prometheus-metrics-tracer-common/pom.xml index 88ed86387..a35152e6f 100644 --- a/prometheus-metrics-tracer/prometheus-metrics-tracer-common/pom.xml +++ b/prometheus-metrics-tracer/prometheus-metrics-tracer-common/pom.xml @@ -5,7 +5,7 @@ io.prometheus prometheus-metrics-tracer - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT prometheus-metrics-tracer-common @@ -20,4 +20,13 @@ io.prometheus.metrics.tracer.common + + + io.prometheus + prometheus-metrics-annotations + ${project.version} + true + + + diff --git a/prometheus-metrics-tracer/prometheus-metrics-tracer-common/src/main/java/io/prometheus/metrics/tracer/common/SpanContext.java b/prometheus-metrics-tracer/prometheus-metrics-tracer-common/src/main/java/io/prometheus/metrics/tracer/common/SpanContext.java index f2c171a10..4da3b13ea 100644 --- a/prometheus-metrics-tracer/prometheus-metrics-tracer-common/src/main/java/io/prometheus/metrics/tracer/common/SpanContext.java +++ b/prometheus-metrics-tracer/prometheus-metrics-tracer-common/src/main/java/io/prometheus/metrics/tracer/common/SpanContext.java @@ -1,7 +1,9 @@ package io.prometheus.metrics.tracer.common; +import io.prometheus.metrics.annotations.StableApi; import javax.annotation.Nullable; +@StableApi public interface SpanContext { String EXEMPLAR_ATTRIBUTE_NAME = "exemplar"; diff --git a/prometheus-metrics-tracer/prometheus-metrics-tracer-initializer/pom.xml b/prometheus-metrics-tracer/prometheus-metrics-tracer-initializer/pom.xml index 58b760b5d..7e0200859 100644 --- a/prometheus-metrics-tracer/prometheus-metrics-tracer-initializer/pom.xml +++ b/prometheus-metrics-tracer/prometheus-metrics-tracer-initializer/pom.xml @@ -5,7 +5,7 @@ io.prometheus prometheus-metrics-tracer - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT prometheus-metrics-tracer-initializer diff --git a/prometheus-metrics-tracer/prometheus-metrics-tracer-otel-agent/pom.xml b/prometheus-metrics-tracer/prometheus-metrics-tracer-otel-agent/pom.xml index 4ac2c1ba0..2ee1d4387 100644 --- a/prometheus-metrics-tracer/prometheus-metrics-tracer-otel-agent/pom.xml +++ b/prometheus-metrics-tracer/prometheus-metrics-tracer-otel-agent/pom.xml @@ -5,7 +5,7 @@ io.prometheus prometheus-metrics-tracer - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT prometheus-metrics-tracer-otel-agent diff --git a/prometheus-metrics-tracer/prometheus-metrics-tracer-otel/pom.xml b/prometheus-metrics-tracer/prometheus-metrics-tracer-otel/pom.xml index 85e9904e1..88ea4c15f 100644 --- a/prometheus-metrics-tracer/prometheus-metrics-tracer-otel/pom.xml +++ b/prometheus-metrics-tracer/prometheus-metrics-tracer-otel/pom.xml @@ -5,7 +5,7 @@ io.prometheus prometheus-metrics-tracer - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT prometheus-metrics-tracer-otel diff --git a/simpleclient-archive/integration_tests/it_common/pom.xml b/simpleclient-archive/integration_tests/it_common/pom.xml index 51eb5f59d..8d36995da 100644 --- a/simpleclient-archive/integration_tests/it_common/pom.xml +++ b/simpleclient-archive/integration_tests/it_common/pom.xml @@ -5,7 +5,7 @@ io.prometheus integration_tests - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT it_common diff --git a/simpleclient-archive/integration_tests/it_exemplars_otel_agent/pom.xml b/simpleclient-archive/integration_tests/it_exemplars_otel_agent/pom.xml index 8aec8bd5c..51dffdad4 100644 --- a/simpleclient-archive/integration_tests/it_exemplars_otel_agent/pom.xml +++ b/simpleclient-archive/integration_tests/it_exemplars_otel_agent/pom.xml @@ -5,7 +5,7 @@ io.prometheus integration_tests - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT it_exemplars_otel_agent diff --git a/simpleclient-archive/integration_tests/it_exemplars_otel_sdk/pom.xml b/simpleclient-archive/integration_tests/it_exemplars_otel_sdk/pom.xml index 466cc5d5c..22366c400 100644 --- a/simpleclient-archive/integration_tests/it_exemplars_otel_sdk/pom.xml +++ b/simpleclient-archive/integration_tests/it_exemplars_otel_sdk/pom.xml @@ -5,7 +5,7 @@ io.prometheus integration_tests - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT it_exemplars_otel_sdk diff --git a/simpleclient-archive/integration_tests/it_java_versions/pom.xml b/simpleclient-archive/integration_tests/it_java_versions/pom.xml index 176da7fce..e21fd9978 100644 --- a/simpleclient-archive/integration_tests/it_java_versions/pom.xml +++ b/simpleclient-archive/integration_tests/it_java_versions/pom.xml @@ -5,7 +5,7 @@ io.prometheus integration_tests - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT it_java_versions diff --git a/simpleclient-archive/integration_tests/it_log4j2/pom.xml b/simpleclient-archive/integration_tests/it_log4j2/pom.xml index 96edefa0e..0a94b3ff0 100644 --- a/simpleclient-archive/integration_tests/it_log4j2/pom.xml +++ b/simpleclient-archive/integration_tests/it_log4j2/pom.xml @@ -5,7 +5,7 @@ io.prometheus integration_tests - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT it_log4j2 diff --git a/simpleclient-archive/integration_tests/it_pushgateway/pom.xml b/simpleclient-archive/integration_tests/it_pushgateway/pom.xml index 0721f44c0..ae6b461f5 100644 --- a/simpleclient-archive/integration_tests/it_pushgateway/pom.xml +++ b/simpleclient-archive/integration_tests/it_pushgateway/pom.xml @@ -5,7 +5,7 @@ io.prometheus integration_tests - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT it_pushgateway diff --git a/simpleclient-archive/integration_tests/it_servlet_jakarta_exporter_webxml/pom.xml b/simpleclient-archive/integration_tests/it_servlet_jakarta_exporter_webxml/pom.xml index 7a84717d4..6422b0258 100644 --- a/simpleclient-archive/integration_tests/it_servlet_jakarta_exporter_webxml/pom.xml +++ b/simpleclient-archive/integration_tests/it_servlet_jakarta_exporter_webxml/pom.xml @@ -5,7 +5,7 @@ io.prometheus integration_tests - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT it_servlet_jakarta_exporter_webxml diff --git a/simpleclient-archive/integration_tests/pom.xml b/simpleclient-archive/integration_tests/pom.xml index 99437d966..a78d07a85 100644 --- a/simpleclient-archive/integration_tests/pom.xml +++ b/simpleclient-archive/integration_tests/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT integration_tests diff --git a/simpleclient-archive/simpleclient_graphite_bridge/pom.xml b/simpleclient-archive/simpleclient_graphite_bridge/pom.xml index b574b65cd..6871e0eff 100644 --- a/simpleclient-archive/simpleclient_graphite_bridge/pom.xml +++ b/simpleclient-archive/simpleclient_graphite_bridge/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT simpleclient_graphite_bridge diff --git a/simpleclient-archive/simpleclient_hibernate/pom.xml b/simpleclient-archive/simpleclient_hibernate/pom.xml index 2fe43d5dd..3fa2539b1 100644 --- a/simpleclient-archive/simpleclient_hibernate/pom.xml +++ b/simpleclient-archive/simpleclient_hibernate/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT simpleclient_hibernate diff --git a/simpleclient-archive/simpleclient_httpserver/pom.xml b/simpleclient-archive/simpleclient_httpserver/pom.xml index e1cb56c3a..aeef05632 100644 --- a/simpleclient-archive/simpleclient_httpserver/pom.xml +++ b/simpleclient-archive/simpleclient_httpserver/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT simpleclient_httpserver diff --git a/simpleclient-archive/simpleclient_jetty/pom.xml b/simpleclient-archive/simpleclient_jetty/pom.xml index 064092058..c5504fc5c 100644 --- a/simpleclient-archive/simpleclient_jetty/pom.xml +++ b/simpleclient-archive/simpleclient_jetty/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT simpleclient_jetty diff --git a/simpleclient-archive/simpleclient_jetty_jdk8/pom.xml b/simpleclient-archive/simpleclient_jetty_jdk8/pom.xml index 85585419a..dfe56befe 100644 --- a/simpleclient-archive/simpleclient_jetty_jdk8/pom.xml +++ b/simpleclient-archive/simpleclient_jetty_jdk8/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT simpleclient_jetty_jdk8 diff --git a/simpleclient-archive/simpleclient_log4j/pom.xml b/simpleclient-archive/simpleclient_log4j/pom.xml index b8801d0be..7e9b361fd 100644 --- a/simpleclient-archive/simpleclient_log4j/pom.xml +++ b/simpleclient-archive/simpleclient_log4j/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT simpleclient_log4j diff --git a/simpleclient-archive/simpleclient_log4j2/pom.xml b/simpleclient-archive/simpleclient_log4j2/pom.xml index a2da1c053..8dff97852 100644 --- a/simpleclient-archive/simpleclient_log4j2/pom.xml +++ b/simpleclient-archive/simpleclient_log4j2/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT simpleclient_log4j2 diff --git a/simpleclient-archive/simpleclient_logback/pom.xml b/simpleclient-archive/simpleclient_logback/pom.xml index 3be6176fd..49f2de0dc 100644 --- a/simpleclient-archive/simpleclient_logback/pom.xml +++ b/simpleclient-archive/simpleclient_logback/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT simpleclient_logback diff --git a/simpleclient-archive/simpleclient_servlet/pom.xml b/simpleclient-archive/simpleclient_servlet/pom.xml index da14e616a..5e6840878 100644 --- a/simpleclient-archive/simpleclient_servlet/pom.xml +++ b/simpleclient-archive/simpleclient_servlet/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT simpleclient_servlet diff --git a/simpleclient-archive/simpleclient_servlet_common/pom.xml b/simpleclient-archive/simpleclient_servlet_common/pom.xml index 435e2f117..765d94d74 100644 --- a/simpleclient-archive/simpleclient_servlet_common/pom.xml +++ b/simpleclient-archive/simpleclient_servlet_common/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT simpleclient_servlet_common diff --git a/simpleclient-archive/simpleclient_servlet_jakarta/pom.xml b/simpleclient-archive/simpleclient_servlet_jakarta/pom.xml index 73ddf43c0..20421012a 100644 --- a/simpleclient-archive/simpleclient_servlet_jakarta/pom.xml +++ b/simpleclient-archive/simpleclient_servlet_jakarta/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT simpleclient_servlet_jakarta diff --git a/simpleclient-archive/simpleclient_spring_web/pom.xml b/simpleclient-archive/simpleclient_spring_web/pom.xml index 3a57bd747..2aa939ae2 100644 --- a/simpleclient-archive/simpleclient_spring_web/pom.xml +++ b/simpleclient-archive/simpleclient_spring_web/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT simpleclient_spring_web diff --git a/simpleclient-archive/simpleclient_vertx/pom.xml b/simpleclient-archive/simpleclient_vertx/pom.xml index beee61aa6..9389fd24c 100644 --- a/simpleclient-archive/simpleclient_vertx/pom.xml +++ b/simpleclient-archive/simpleclient_vertx/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT simpleclient_vertx diff --git a/simpleclient-archive/simpleclient_vertx4/pom.xml b/simpleclient-archive/simpleclient_vertx4/pom.xml index 634d1ad42..79b2f31e6 100644 --- a/simpleclient-archive/simpleclient_vertx4/pom.xml +++ b/simpleclient-archive/simpleclient_vertx4/pom.xml @@ -5,7 +5,7 @@ io.prometheus client_java - 1.6.2-SNAPSHOT + 1.7.1-SNAPSHOT simpleclient_vertx4