* migrate API keys to SA at startup
* send metrics with api key migration stats
* address feedback
* run API keys migration in a server lock
* update logging
* Create base components
* Create measurement service
* Add container for list
* Use measurement to render virtualized log lines
* Match rendered styles in 2d context for measuring
* Improve virtualization initialization and handle resize
* Introduce log line processing
* Virtualization: fix measurement of lines with line endings
* Virtualization: include scrollbar width in calculation
* Remove logs
* Virtualization: optimize text measurement
* Add support for forceEscape
* Log line: properly style wrapped/unwrapped lines
* Virtualization: handle possible overflows
* Improve overflow handling
* LogList: remove scroll position ref
* Remove logs
* Remove log
* Add top/bottom navigation buttons
* Add timestamp to pre-processing
* Add showtime support
* Fix imports
* Chore: simplify dedup
* Show level
* Refactor measurement and measure level and timestamp
* Virtualization: skip unnecessary measurements
* Improve measurements to minimize overflow chance
* Introduce logline colors
* Update palette
* Remove pretiffying
* Add comment
* Remove unused variable
* Add color for info level
* Fix dependencies
* Refactor overflow to account for smaller estimations
* Debounce resizing
* Fix imports
* Further optimize height calculation
* Remove outline
* Unused import
* Use less under/overflow method
* Respond to height changes
* Refactor size adjustment to account for layout changes
* Add Logs Panel support
* Add margin bottom to log lines
* Remove unused option
* LogList: container div should never be null
Bad API design
* Log List: make app not undefined and update containerElement usages
* New Logs Panel: Create as new visualization (#99427)
* Logs Panel: clean up old panel
* Logs Panel New: create as new visualization
* Plugin: mark as alpha
* Logs panel new: hold container in a state variable
* Logs panel: fix no data state
* Create newLogsPanel feature flag
* Logs: use new feature flag
* Prettier
* Add new panel to code owners
* Logs Navigation: add translations
* Address betterer issues
* Fix import
* Extract translations
* Update virtualization.ts
* Virtualization: add DOM fallback for text measurement
* Run gen-cue
* plugins_integration_test: add logs-new to expected plugins
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()
...
```
* TimeRangePicker: allow to customize quick ranges per dashboard
* TimeRangePicker: show selected custom time range using its name
* rangeutil: add tests for describeTextRange + quickRanges
* Fix up tests, and add an extra case for hidden time ranges
* Don't construct an object to find options, add findRangeInOptions util
* fix type errors detected by TypeScript
---------
Co-authored-by: joshhunt <josh@trtr.co>
This PR adds `backend.ErrorSourceDownstream` values to all `backend.DataResponse`
values where it's certain that the error wasn't the result of the
InfluxDB datasource plugin.
* update generated iam client
* update API
* with meta api
* regenerate client
* with identify ref
---------
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* create new generated iam api client and use in query library
* update betterer
* use new createBaseQuery method
* update CODEOWNERS
* fix unit tests
* use shared type
* update comment
* fix test
* Return max depth folder reached instead of a generic error
* Unit test error function
* Lint
* Update pkg/api/apierrors/folder.go
Co-authored-by: Jean-Philippe Quéméner <JohnnyQQQQ@users.noreply.github.com>
---------
Co-authored-by: Jean-Philippe Quéméner <JohnnyQQQQ@users.noreply.github.com>
* Alerting: Call RLock() before reading sendAlertsTo map
* defer unlocking
* drive-tru fix for another lock
* less time holding the lock in SyncAndApplyConfigFromDatabase
* Upgrade grafana-app-sdk to 0.31.0
What
This commit upgrades the app SDK to 0.31.0 and re-generates codegen files.
It doesn't touch alerting schemas, because those are quite old and
should be upgraded separately.
This commit slightly alters the schemas for the investigations app,
because the codegen is not happy with the current syntax, for some
reason (probably has to do with CUE upgrades in `cog`).
Why
To make sure we use up-to-date SDK version and remove the workaround for
the `defencoding=none` bug that required us to clean up generated CRD
files.
Signed-off-by: Igor Suleymanov <igor.suleymanov@grafana.com>
* Revert changes to golden file for store tests
Signed-off-by: Igor Suleymanov <igor.suleymanov@grafana.com>
---------
Signed-off-by: Igor Suleymanov <igor.suleymanov@grafana.com>