Skip to content

fix(core): prevent OpenTelemetry resource schema conflicts [backport to release/service/v0.11] - #4036

Draft
opentdf-automation[bot] wants to merge 6 commits into
release/service/v0.11from
backport-3769-to-release/service/v0.11
Draft

fix(core): prevent OpenTelemetry resource schema conflicts [backport to release/service/v0.11]#4036
opentdf-automation[bot] wants to merge 6 commits into
release/service/v0.11from
backport-3769-to-release/service/v0.11

Conversation

@opentdf-automation

@opentdf-automation opentdf-automation Bot commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

Description

Backport of #3769 to release/service/v0.11.

Backport adjustments

@opentdf-automation

Copy link
Copy Markdown
Contributor Author

Please cherry-pick the changes locally and resolve any conflicts.

git fetch origin backport-3769-to-release/service/v0.11
git worktree add --checkout .worktree/backport-3769-to-release/service/v0.11 backport-3769-to-release/service/v0.11
cd .worktree/backport-3769-to-release/service/v0.11
git reset --hard HEAD^
git cherry-pick -x 4a0c41c9e7ca14291b4bed4e02a0a0cae59f2444
git push --force-with-lease

@opentdf-automation
opentdf-automation Bot force-pushed the backport-3769-to-release/service/v0.11 branch from 2ad146e to 49d5fe3 Compare September 10, 2026 20:36
@coderabbitai

coderabbitai Bot commented Sep 10, 2026

Copy link
Copy Markdown

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: ASSERTIVE

Plan: Advanced

Run ID: c2f856f6-a8d1-4044-9c7f-bd0049732369

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

Dependency Review

The following issues were found:

  • ❌ 6 vulnerable package(s)
  • ✅ 0 package(s) with incompatible licenses
  • ✅ 0 package(s) with invalid SPDX license definitions
  • ✅ 0 package(s) with unknown licenses.

View full job summary

@github-actions

Copy link
Copy Markdown
Contributor

X-Test Failure Report

Signed-off-by: jakedoublev <jake.vanvorhis@virtru.com>
@github-actions

Copy link
Copy Markdown
Contributor

@github-actions

Copy link
Copy Markdown
Contributor
Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 190.68516ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 98.116876ms

Benchmark Statistics

Name № Requests Avg Duration Min Duration Max Duration

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 409.93117ms
Throughput 243.94 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 41.64672711s
Average Latency 415.048515ms
Throughput 120.06 requests/second

NANOTDF Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 29.667206806s
Average Latency 295.556125ms
Throughput 168.54 requests/second

@github-actions

Copy link
Copy Markdown
Contributor
Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 187.771324ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 99.937539ms

Benchmark Statistics

Name № Requests Avg Duration Min Duration Max Duration

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 387.237128ms
Throughput 258.24 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 40.336208033s
Average Latency 401.657308ms
Throughput 123.96 requests/second

NANOTDF Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 28.967402472s
Average Latency 288.454921ms
Throughput 172.61 requests/second

@github-actions

Copy link
Copy Markdown
Contributor
Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 188.915162ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 110.602072ms

Benchmark Statistics

Name № Requests Avg Duration Min Duration Max Duration

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 392.289708ms
Throughput 254.91 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 42.152711324s
Average Latency 418.351912ms
Throughput 118.62 requests/second

NANOTDF Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 29.186244447s
Average Latency 290.846012ms
Throughput 171.31 requests/second

dependabot Bot and others added 2 commits September 10, 2026 15:25
)

Bumps
[golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action)
from 8.0.0 to 9.2.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/golangci/golangci-lint-action/releases">golangci/golangci-lint-action's
releases</a>.</em></p>
<blockquote>
<h2>v9.2.0</h2>
<!-- raw HTML omitted -->
<h2>What's Changed</h2>
<h3>Changes</h3>
<ul>
<li>feat: add version-file option by <a
href="https://github.com/ldez"><code>@​ldez</code></a> in <a
href="https://redirect.github.com/golangci/golangci-lint-action/pull/1320">golangci/golangci-lint-action#1320</a></li>
<li>chore: move samples into fixtures by <a
href="https://github.com/ldez"><code>@​ldez</code></a> in <a
href="https://redirect.github.com/golangci/golangci-lint-action/pull/1321">golangci/golangci-lint-action#1321</a></li>
</ul>
<h3>Dependencies</h3>
<ul>
<li>build(deps-dev): bump the dev-dependencies group with 2 updates by
<a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/golangci/golangci-lint-action/pull/1317">golangci/golangci-lint-action#1317</a></li>
<li>build(deps): bump actions/checkout from 5 to 6 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/golangci/golangci-lint-action/pull/1318">golangci/golangci-lint-action#1318</a></li>
<li>build(deps-dev): bump the dev-dependencies group with 3 updates by
<a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/golangci/golangci-lint-action/pull/1323">golangci/golangci-lint-action#1323</a></li>
<li>build(deps): bump yaml from 2.8.1 to 2.8.2 in the dependencies group
by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/golangci/golangci-lint-action/pull/1324">golangci/golangci-lint-action#1324</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/golangci/golangci-lint-action/compare/v9.1.0...v9.2.0">https://github.com/golangci/golangci-lint-action/compare/v9.1.0...v9.2.0</a></p>
<h2>v9.1.0</h2>
<!-- raw HTML omitted -->
<h2>What's Changed</h2>
<h3>Changes</h3>
<ul>
<li>feat: automatic module directories by <a
href="https://github.com/ldez"><code>@​ldez</code></a> in <a
href="https://redirect.github.com/golangci/golangci-lint-action/pull/1315">golangci/golangci-lint-action#1315</a></li>
</ul>
<h3>Documentation</h3>
<ul>
<li>docs: organize options by <a
href="https://github.com/ldez"><code>@​ldez</code></a> in <a
href="https://redirect.github.com/golangci/golangci-lint-action/pull/1314">golangci/golangci-lint-action#1314</a></li>
</ul>
<h3>Dependencies</h3>
<ul>
<li>build(deps-dev): bump the dev-dependencies group with 2 updates by
<a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/golangci/golangci-lint-action/pull/1307">golangci/golangci-lint-action#1307</a></li>
<li>build(deps-dev): bump js-yaml from 4.1.0 to 4.1.1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/golangci/golangci-lint-action/pull/1309">golangci/golangci-lint-action#1309</a></li>
<li>build(deps-dev): bump the dev-dependencies group with 2 updates by
<a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/golangci/golangci-lint-action/pull/1310">golangci/golangci-lint-action#1310</a></li>
<li>build(deps): bump the dependencies group with 2 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/golangci/golangci-lint-action/pull/1311">golangci/golangci-lint-action#1311</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/golangci/golangci-lint-action/compare/v9.0.0...v9.1.0">https://github.com/golangci/golangci-lint-action/compare/v9.0.0...v9.1.0</a></p>
<h2>v9.0.0</h2>
<p>In the scope of this release, we change Nodejs runtime from node20 to
node24 (<a
href="https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/">https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/</a>).</p>
<h2>What's Changed</h2>
<h3>Changes</h3>
<ul>
<li>feat: add install-only option by <a
href="https://github.com/ldez"><code>@​ldez</code></a> in <a
href="https://redirect.github.com/golangci/golangci-lint-action/pull/1305">golangci/golangci-lint-action#1305</a></li>
<li>feat: support Module Plugin System by <a
href="https://github.com/ldez"><code>@​ldez</code></a> in <a
href="https://redirect.github.com/golangci/golangci-lint-action/pull/1306">golangci/golangci-lint-action#1306</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/golangci/golangci-lint-action/compare/v8.0.0...v9.0.0">https://github.com/golangci/golangci-lint-action/compare/v8.0.0...v9.0.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/golangci/golangci-lint-action/commit/1e7e51e771db61008b38414a730f564565cf7c20"><code>1e7e51e</code></a>
build(deps): bump yaml from 2.8.1 to 2.8.2 in the dependencies group (<a
href="https://redirect.github.com/golangci/golangci-lint-action/issues/1324">#1324</a>)</li>
<li><a
href="https://github.com/golangci/golangci-lint-action/commit/5256ff0c0a28a49774a7304d8e3c609d402d00be"><code>5256ff0</code></a>
build(deps-dev): bump the dev-dependencies group with 3 updates (<a
href="https://redirect.github.com/golangci/golangci-lint-action/issues/1323">#1323</a>)</li>
<li><a
href="https://github.com/golangci/golangci-lint-action/commit/13fed6f9113a193550868ae0b2ad583e9fe7f811"><code>13fed6f</code></a>
chore: update workflows</li>
<li><a
href="https://github.com/golangci/golangci-lint-action/commit/7afe8ff8631b3f19e5fff3457847f75327ededbc"><code>7afe8ff</code></a>
chore: update workflows</li>
<li><a
href="https://github.com/golangci/golangci-lint-action/commit/5a9289952f648d2ca431c4fb972d46f239f3d84f"><code>5a92899</code></a>
chore: move samples into fixtures (<a
href="https://redirect.github.com/golangci/golangci-lint-action/issues/1321">#1321</a>)</li>
<li><a
href="https://github.com/golangci/golangci-lint-action/commit/aa6fad0ea02e00c7c9e34e4ce5c63572b250d70c"><code>aa6fad0</code></a>
feat: add version-file option (<a
href="https://redirect.github.com/golangci/golangci-lint-action/issues/1320">#1320</a>)</li>
<li><a
href="https://github.com/golangci/golangci-lint-action/commit/a6071aaacb11b27c22bb795a84223812526187b5"><code>a6071aa</code></a>
build(deps): bump actions/checkout from 5 to 6 (<a
href="https://redirect.github.com/golangci/golangci-lint-action/issues/1318">#1318</a>)</li>
<li><a
href="https://github.com/golangci/golangci-lint-action/commit/6e36c8460ff73f9b5a168b4f556dc6bb34aa0d86"><code>6e36c84</code></a>
build(deps-dev): bump the dev-dependencies group with 2 updates (<a
href="https://redirect.github.com/golangci/golangci-lint-action/issues/1317">#1317</a>)</li>
<li><a
href="https://github.com/golangci/golangci-lint-action/commit/e7fa5ac41e1cf5b7d48e45e42232ce7ada589601"><code>e7fa5ac</code></a>
feat: automatic module directories (<a
href="https://redirect.github.com/golangci/golangci-lint-action/issues/1315">#1315</a>)</li>
<li><a
href="https://github.com/golangci/golangci-lint-action/commit/f3ae99f5f564eecb7524e0e89b9fd098650b67d7"><code>f3ae99f</code></a>
docs: organize options (<a
href="https://redirect.github.com/golangci/golangci-lint-action/issues/1314">#1314</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/golangci/golangci-lint-action/compare/4afd733a84b1f43292c63897423277bb7f4313a9...1e7e51e771db61008b38414a730f564565cf7c20">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=golangci/golangci-lint-action&package-manager=github_actions&previous-version=8.0.0&new-version=9.2.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

You can trigger a rebase of this PR by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

> **Note**
> Automatic rebases have been disabled on this pull request as it has
been open for over 30 days.

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Fixes flaky lint failures in CI that are a network error, not a real
lint finding:

```
[../../.golangci.yaml] validate: compile schema: failing loading
"https://golangci-lint.run/jsonschema/golangci.v2.8.jsonschema.json":
context deadline exceeded (Client.Timeout exceeded while awaiting headers)
Error: Command failed: /home/runner/golangci-lint-2.8.0-linux-amd64/golangci-lint config verify
```

**Root cause:** `golangci/golangci-lint-action` defaults `verify: true`,
which runs `golangci-lint config verify`. In golangci-lint **v2.8.0**
(what we pinned), `config verify` downloads the config JSONSchema over
HTTPS with a **2-second client timeout**, so any slow response from
`golangci-lint.run` fails the job. Known upstream complaint:
golangci/golangci-lint#4864

**Upstream fix landed in v2.12.0:** `pkg/commands/config_verify.go`
switched from an HTTP loader to `jsonsch.NewEmbedLoader()`, so the
schema is compiled into the binary via `go:embed`.

| version | schema source |
| --- | --- |
| v2.8.0 | remote URL, 2s timeout |
| v2.9.0, v2.11.0 | remote URL |
| **v2.12.0+** | **embedded** |

This bumps all three `2.8.0` pins to `2.13.2` (current latest):

- `.github/workflows/checks.yaml` — `golangci-lint-action` `version:` in
the `go` matrix job
- `.github/workflows/checks.yaml` — `go install
...golangci-lint@v2.13.2` in the proto-generate job
- `Makefile` — `toolcheck` install hint and
`required_golangci_lint_version` (still a minimum, not an exact pin)

The action's `verify` input stays at its `true` default. Bumping already
removes the network call, so disabling verification would needlessly
give up validation of `.golangci.yaml`. No `.golangci.yaml` changes are
needed — the existing config validates cleanly under v2.13.2.

Ticket: [DSPX-4607](https://virtru.atlassian.net/browse/DSPX-4607)

- `make lint` is never invoked in CI — the only lint gate is the
`golangci-lint-action` step in the `go` matrix, which uses
`only-new-issues: true`.
- v2.13.x surfaces **351 pre-existing findings** repo-wide that v2.8.0
did not (lib/fixtures 26, sdk 10, service 163, examples 9, otdfctl 134,
tests-bdd 9). These are deliberately **out of scope** here;
`only-new-issues: true` means they only block a PR that touches those
lines. Follow-up work is enumerated in DSPX-4607, grouped by fix type
(unused `//nolint:sloglint` directives, `sloglint` snake_case keys,
`goconst`, `canonicalheader` on DPoP headers, `staticcheck`
QF1012/SA1019, and a `gomodguard` → `gomodguard_v2` migration).
- v2.12.0 deprecated `gomodguard` in favor of `gomodguard_v2`. It emits
a warning and still runs, so it is not a blocker.

- [ ] I have added or updated unit tests
- [ ] I have added or updated integration tests (if appropriate)
- [ ] I have added or updated documentation

CI-only change; no product code touched, so no test or doc updates
apply.

**Local**

```sh
make toolcheck                                        # passes with v2.13.2

golangci-lint config verify -c .golangci.yaml         # exit 0

HTTPS_PROXY=http://127.0.0.1:9 HTTP_PROXY=http://127.0.0.1:9 \
  golangci-lint config verify -c .golangci.yaml       # exit 0 on v2.13.2; fails on v2.8.0
```

**CI**

Verified ahead of this PR with a `workflow_dispatch` run of
`checks.yaml` on this branch:
https://github.com/opentdf/platform/actions/runs/33771514702

```
Installed golangci-lint into /home/runner/golangci-lint-2.13.2-linux-amd64/golangci-lint in 650ms
Running [.../golangci-lint config verify] in [.../lib/fixtures] ...
Running [.../golangci-lint run --path-mode=abs] in [.../lib/fixtures] ...
```

`config verify` completed with no schema fetch and no error. That
dispatch run did then fail `lib/fixtures` on the pre-existing findings,
but only because the log shows `Not fetching patch for showing only new
issues because it's not a pull request context: event name is
workflow_dispatch` — `only-new-issues` was inert so everything got
reported. On this PR it filters to changed lines, and since no Go code
changes here, the `go` matrix should be clean.

[DSPX-4607]:
https://virtru.atlassian.net/browse/DSPX-4607?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

- **Chores**
- Updated the required golangci-lint version to 2.13.2 across automated
checks and local tooling.
- Improved lint configuration verification reliability by using a
version that embeds the configuration schema.
- Updated installation guidance and minimum-version validation
accordingly.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Signed-off-by: Dave Mihalcik <dmihalcik@virtru.com>
@github-actions

Copy link
Copy Markdown
Contributor
Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 196.23803ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 114.670822ms

Benchmark Statistics

Name № Requests Avg Duration Min Duration Max Duration

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 388.541569ms
Throughput 257.37 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 42.074018895s
Average Latency 419.234467ms
Throughput 118.84 requests/second

NANOTDF Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 30.18378384s
Average Latency 300.968657ms
Throughput 165.65 requests/second

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants