Plugin Metrics: Eliminate data race in plugin metrics middleware (#99396)
fix: eliminate data race in plugin metrics middleware
A data race was detected when multiple goroutines accessed the `MetricsMiddleware`
simultaneously. The race occurred because a single `MetricsMiddleware` instance
was being shared across goroutines while its `BaseHandler` field was being
modified during middleware chain setup.
Fix by creating a new `MetricsMiddleware` instance for each middleware chain,
while safely sharing the thread-safe Prometheus metrics and plugin registry.
This maintains proper metrics collection while eliminating the mutable shared
state that caused the race condition.
Original error was detected here:
```
WARNING: DATA RACE
Read at 0x00c0039c0790 by goroutine 4486:
github.com/grafana/grafana-plugin-sdk-go/backend.(*ErrorSourceMiddleware).CallResource()
/Users/clord/src/grafana/irm-devstack/.devenv/state/go/pkg/mod/github.com/grafana/grafana-plugin-sdk-go@v0.261.0/backend/error_source_middleware.go:93 +0x40
github.com/grafana/grafana-plugin-sdk-go/backend.BaseHandler.CallResource()
...
```
(cherry picked from commit e74cf72d99)
Co-authored-by: Christopher Lord <christopher.lord@grafana.com>
MSSQL: Correctly type `UDPConnectionLimit` (#99011)
* Correctly type UDPConnectionLimit
* Update tests
* Handle legacy case
(cherry picked from commit cc09f38421)
Co-authored-by: Andreas Christou <andreas.christou@grafana.com>
* feat: update to Go 1.23.5
* chore: make drone
* chore: make update-workspace
* CI: Force re-build
* build: update mariadb connection
The new Alpine base that the Golang images are built on no longer trust the CA of MySQL.
This is a backport of: https://github.com/grafana/grafana/pull/98857
(cherry picked from commit e1bb8ccb79)
* Azure Monitor: Add a feature flag to toggle user auth for Azure Monitor only (#96858)
* Azure Monitor: Add a feature flag to toggle user auth for Azure Monitor only
* Fix condition for userIdentityEnabled
* Re-add removed test
* Remove unused prop
* Refactor onAuthTypeChange in AzureCredentialsForm
* Add frontend unit tests
* Lint
(cherry picked from commit b898a4540d)
# Conflicts:
# docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md
# packages/grafana-data/src/types/featureToggles.gen.ts
# pkg/services/featuremgmt/registry.go
# pkg/services/featuremgmt/toggles_gen.csv
# pkg/services/featuremgmt/toggles_gen.go
# pkg/services/featuremgmt/toggles_gen.json
* Update test
* Fix lint
---------
Co-authored-by: Adam Yeats <16296989+adamyeats@users.noreply.github.com>
* Azure/GCM: Improve error display (#96921)
Improve handling of errors
(cherry picked from commit 9f75a448d4)
* Update import and var name
---------
Co-authored-by: Andreas Christou <andreas.christou@grafana.com>
Unified Storage: Use tls preferred when grafana db using ssl (#97378)
When unified storage is using the grafana db (default case for on-prem), if the db is using ssl then set tls=preferred. This fixes an on-prem bug in 11.3.1.
(cherry picked from commit 9642eedce6)
Co-authored-by: owensmallwood <owen.smallwood@grafana.com>
* Alerting: Update state manager to have immutable state in cache (#95985)
* create a new state and set at the end
* propagate labels datasource_uid and ref_id from current state if it's error
* copy the state when apply to all
(cherry picked from commit 420db99d16)
* Remove unused states variables
---------
Co-authored-by: Yuri Tseretyan <yuriy.tseretyan@grafana.com>
Alerting: Fix per-receiver RBAC for receivers with long names (#95084)
* Implement uidToResourceID
* add middleware
* Move uidToResourceID to alerting package
* Only hash uid if it's too long
* Use hashed uid in access control
* Move ReceiverUidToResourceId to ScopeProvider
* resolve uid in middleware only if param exists
* Tests
* Linting
---------
Co-authored-by: Yuri Tseretyan <yuriy.tseretyan@grafana.com>
(cherry picked from commit 4aad44e848)
Co-authored-by: Matthew Jacobson <matthew.jacobson@grafana.com>
Alerting: Fix saving advanced mode toggle state in the alert rule editor (#95924)
(cherry picked from commit 4ce1abc6f9)
Co-authored-by: Alexander Akhmetov <me@alx.cx>
Unified Storage: Use ssl_mode instead of sslmode (#95658)
change unistore to use ssl_mode instead of sslmode
(cherry picked from commit 76b43267c8)
Co-authored-by: Georges Chaudy <chaudyg@gmail.com>
Migration: Remove table aliasing in delete statement to make it work for mariadb (#95226)
Migration: remove table aliasing in delete statement to make it work in mariadb
(cherry picked from commit 6f7528f896)
Co-authored-by: Karl Persson <kalle.persson@grafana.com>
Service Accounts: Run service account creation in transaction (#94744)
* run service account creation DB queries in transaction
* extract the signed in user from the context
* undo unneeded change
* don't error out if a user is not found
* Update pkg/services/serviceaccounts/manager/service.go
Co-authored-by: Misi <mgyongyosi@users.noreply.github.com>
* Update pkg/services/serviceaccounts/manager/service.go
Co-authored-by: Karl Persson <kalle.persson@grafana.com>
---------
Co-authored-by: Misi <mgyongyosi@users.noreply.github.com>
Co-authored-by: Karl Persson <kalle.persson@grafana.com>
(cherry picked from commit ca1fd028a2)
Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
Folders: Add admin permissions upon creation of a folder w. SA (#95072)
* add admin permissions upon creation of a folder w. SA
* Update pkg/services/folder/folderimpl/folder.go
Co-authored-by: Karl Persson <kalle.persson@grafana.com>
* Grant service account permissions for creation of dashboards
* Grant service account admin permissions upon creating a datasource
* fetch user using the userservice with the userid
* Revert "fetch user using the userservice with the userid"
This reverts commit 23cba78752.
* revert back to original datasource creation
---------
Co-authored-by: Karl Persson <kalle.persson@grafana.com>
(cherry picked from commit 9ab064bfc5)
Co-authored-by: Eric Leijonmarck <eric.leijonmarck@gmail.com>
Auth: Increase name_id and session_id length to 1024 in user_external_session (#95352)
Increase name_id and session_id length to 1024
(cherry picked from commit b8b7c7901c)
Co-authored-by: Misi <mgyongyosi@users.noreply.github.com>
Azure: Fix duplicated traces in multi-resource trace query (#95156)
Use first resource as base resource for query
(cherry picked from commit 8bb7475e4f)
Co-authored-by: Andreas Christou <andreas.christou@grafana.com>
Chore: Fix population of details when converting from errutil errors to K8s error (#94996)
(cherry picked from commit 672d5f92f2)
Co-authored-by: Yuri Tseretyan <yuriy.tseretyan@grafana.com>
Alerting: Fix time-interval conversion to return bad request if payload is incorrect (#94995)
(cherry picked from commit 00bb3215cb)
Co-authored-by: Yuri Tseretyan <yuriy.tseretyan@grafana.com>
GCM: Time field naming (#94548)
* Name time field correctly
* Update tests
* Lint
(cherry picked from commit 7c79f8f7a5)
Co-authored-by: Andreas Christou <andreas.christou@grafana.com>
CI: Support more version formats in publishing (#94575)
* cleanup dead code
* add tests and rewrite publish grafanacom steps to reuse
* add pkg/build tests; don't upload CDN assets on grafana releases
(cherry picked from commit 7a2edd35d5)