.changelog-archive/CHANGELOG.10.md
res being accessed after it becomes nil in promql_query.go. #85959, @adamyeatsauto refresh option when saving a dashboard. #85921, @bfmateiadvancedDataSourcePicker feature toggle. #81790, @Sergej-Vlasov} when { is inserted automatically. #80113, @harrymaurya05serve_from_sub_path setting. #80062, @simPod@grafana/lezer-logql to 0.2.3 containing fix for ip label name. #82378, @ivanahuckova:. #82327, @ivanahuckovahttpClientProvider. #81814, @svennergr/_mapping requests. #80970, @svennergr__source is log message field. #80804, @ivanahuckovaWe're adding a between the response of the ID token HD parameter and the list of allowed domains. This feature can be disabled through the configuration toggle validate_hd . Anyone using the legacy Google OAuth configuration should disable this validation if the ID Token response doesn't have the HD parameter. Issue #83726
If you use an automated provisioning (eg, Terraform) for custom roles, and have provisioned a role that includes permission with action alert.instances:read and some scope, you will need to update the permission in your provisioning files by removing the scope. Issue #82202
The following breaking change occurs only when feature flag nestedFolders is enabled.
If the folder title contains the symbol / (forward-slash) the notifications created from the rules that are placed in that folder will contain an escape sequence for that symbol in the label grafana_folder.
For example, the folder title is Grafana / Folder. Currently the label grafana_folder will contain the title as it is. If PR is merged - the label value will be Grafana \/ Folder.
This can break notifications if notification policies have matches that match that label and folder. Issue #81214
PanelContext.onSplitOpen is removed. In the context of Explore, plugins should use field.getLinks to get a list of data link models. Issue #80087
The unstable alert rule API has been changed and now expects a folder UID instead of the folder title as namespace path parameter.
I addition to this, the responses that used to return the folder title now return <folder parent UID>/<folder title> to uniquely identify them.
Any consumers of the specific API should be appropriately adapted. Issue #74600
httpClientProvider. #81929, @svennergrWe're adding a between the response of the ID token HD parameter and the list of allowed domains. This feature can be disabled through the configuration toggle validate_hd . Anyone using the legacy Google OAuth configuration should disable this validation if the ID Token response doesn't have the HD parameter. Issue #83725
To resolve a technical issue within the Grafana release package management process, we are releasing both Grafana 10.3.0 and Grafana 10.3.1 simultaneously. The 10.3.1 release contains no breaking or functional changes from 10.3.0. Please refer to the What’s New post for Grafana 10.3.0 for details on new features and changes in this release.
<!-- 10.3.1 END --> <!-- 10.3.0 START -->To resolve a technical issue within the Grafana release package management process, we are releasing both Grafana 10.3.0 and Grafana 10.3.1 simultaneously. The 10.3.1 release contains no breaking or functional changes from 10.3.0. Please refer to the What’s New post for Grafana 10.3.0 for details on new features and changes in this release.
Users who have InfluxDB datasource configured with SQL querying language must update their database information. They have to enter their bucket name into the database field. Issue #79579
Removes NamespaceID from responses of all GET routes underneath the path /api/ruler/grafana/api/v1/rules - 3 affected endpoints. All affected routes are not in the publicly documented or stable marked portion of the ngalert API. This only breaks clients who are directly using the unstable portion of the API. Such clients should use NamespaceUID rather than NamespaceID to identify namespaces. Issue #79359
/_mapping requests. #87711, @svennergrmax_attempts to 1 by default. #79095, @gotjosh!~ in Search tab. #78315, @fabrizio-grafanaIs and Is Not) to InfluxQL Query Builder. #77923, @btasker>= and <= comparison operators to IQL Query Builder. #77917, @btaskerextract fields transformation. #77569, @oscarkilhedRadioButtonGroup to be able to chose between 'Browse' or 'List' view. #77561, @eledobleefeshowContextToggle in DataSourceWithLogsContextSupport. #77232, @matyaxAdd field from calculation. #77029, @mdvictoruseCachingService feature toggle by default. #76845, @mmandrusdashgpt by default and mark it as preview. #78348, @ivanortegaalbastatusMessage. #77438, @fabrizio-grafana}. #77365, @fabrizio-grafanaIn panels using the extract fields transformation, where one of the extracted names collides with one of the already existing fields, the extracted field will be renamed. Issue #77569
For the existing backend mode users who have table visualization might see some inconsistencies on their panels. We have updated the table column naming. This will potentially affect field transformations and/or field overrides. To resolve this either:
For the existing backend mode users who have Transformations with the time field, might see their transformations are not working. Those panels that have broken transformations will fail to render. This is because we changed the field key. See related PR: https://github.com/grafana/grafana/pull/69865
To resolve this either:
Time field againtime field as Time for transformation in panel.json or dashboard.json Issue #76641The following data source permission endpoints have been removed:
GET /datasources/:datasourceId/permissionsPOST /api/datasources/:datasourceId/permissionsDELETE /datasources/:datasourceId/permissionsPOST /datasources/:datasourceId/enable-permissionsPOST /datasources/:datasourceId/disable-permissionsPlease use the following endpoints instead:
GET /api/access-control/datasources/:uid for listing data source permissionsPOST /api/access-control/datasources/:uid/users/:id, POST /api/access-control/datasources/:uid/teams/:id and POST /api/access-control/datasources/:uid/buildInRoles/:id for adding or removing data source permissionsIf you are using Terraform Grafana provider to manage data source permissions, you will need to upgrade your provider to version 2.6.0 or newer to ensure that data source permission provisioning keeps working.
Since Grafana 10.2.3 we're deprecating the showContextToggle data source method. To signal support of Logs Context, it is enough to implement the DataSourceWithLogsContextSupport interface.
Which issue(s) does this PR fix?:
Fixes https://github.com/grafana/grafana/issues/66819 Related with https://github.com/grafana/grafana/issues/73568 and https://github.com/grafana/grafana/issues/73565
Special notes for your reviewer:
There should be no function change with this deprecation. Issue #77232
dashgpt by default and mark it as preview. #78349, @ivanortegaalbaFor the existing backend mode users who have table visualization might see some inconsistencies on their panels. We have updated the table column naming. This will potentially affect field transformations and/or field overrides. To resolve this either:
None role for 10.2. #76343, @eleijonmarcksort query param for teams search endpoint. #75622, @gamabsort query param for user and org user, search endpoints. #75229, @gamabWithContextualAttributes to pass log params based on the given context. #74428, @svennergruseForm to children. #73831, @javiruiz01keep and drop operations. #73636, @ivanahuckovaid field to Elastic responses to allow permalinking. #73382, @svennergr$__auto range variable for metric queries. #72690, @ivanahuckovaunstable package to grafana-ui. #72660, @eledobleefeThe deprecated /playlists/{uid}/dashboards API endpoint has been removed. Dashboard information can be retrieved from the /dashboard/... APIs. Issue #75503
The PUT /api/folders/:uid endpoint no more supports modifying the folder's UID. Issue #74684
This is a breaking change as we're removing support for Intersection (although it is replaced with an option that is nearly the same). Issue #74675
Correlations created before 10.1.0 do not have an organization id assigned and are treated as global. In some rare cases, it may lead to confusing behavior described in #72259. Organization id is now added when a correlation is created. Any existing correlations without organization id will be kept intact and work as before for backward compatibility during the deprecation period that is set to 6 months after handling organization id is released. After that time, correlations without org_id (or org_id = 0 in the database) will stop showing up in Grafana.
To migrate existing correlations to handle organization id correctly:
Starting with 10.2, parentRowIndex is deprecated. It will be removed in a future release. From 10.2, sub-tables are supported by adding FieldType.nestedFrames to the field that contains the nested data in your dataframe. Issue #71953
max_attempts to 1 by default. #79102, @gotjoshkeep_firing_for field from external rulers. #75257, @rwwivdistinct operation. #74003, @svennergrSelect arrow within a Drawer no longer causes it to close. #73634, @ashharrison90step values to also allow e.g. ms values. #73335, @svennergrkind, attribute and identifier fields for better search performance. #71933, @IevaVasiljevaNew folder into a drawer. #69706, @ashharrison90__series.name) and field naming (__field.name) . #69621, @torkelodecolorize logql operation. #68972, @ivanahuckovaSkip to content link. #68065, @ashharrison90$__timezone template variable. #66785, @VictorColombserviceTags and tags to be empty for trace results. #73197, @aangeliscNew dashboard page has the correct breadcrumb hierarchy. #69758, @ashharrison90skip_org_role_sync with Env variables. #68364, @eleijonmarckThis change impacts all instances that use external authentication providers to manage users and organization role assignments.
From Grafana 10.1, it will no longer be possible to manually update organization roles (Viewer, Editor and Admin) that are managed by an external auth provider. We are making this change to clearly separate between roles managed by an external auth provider and manually assigned roles, which increases security and clarity around role management.
If you prefer to manually set user organization roles, use skip_org_role_sync option in the Grafana configuration file of your OAuth provider.
Refer to the release notes of Grafana 9.5 for context on the previous work done to build up to this change. Issue #72204
This change impacts GitHub OAuth, Gitlab OAuth, Okta OAuth and Generic OAuth
Currently if no organization role mapping is found for a user when connecting via OAuth, Grafana doesn’t update the user’s organization role.
With Grafana 10.1, on every login, if the role_attribute_path property does not return a role, then the user is assigned the role specified by the auto_assign_org_role option.
To avoid overriding manually set roles, enable the skip_org_role_sync option in the Grafana configuration for your OAuth provider. Issue #70766
InfluxDB backend parser returns incompatible data with frontend. The data was being parsed by frontend and we moving towards migrating InfluxDB fully backend. One caveat is Frontend is generating data frames with fields Time and Value. The backend parser, however, generates time and value. This is causing issues and inconsistencies for the features (i.e. transformations) relying on those. In order to have a unique approach we choose to support what most of the users already have. Existing Transformations that depend on time fields have to be updated to use Time fields. Issue #69865
For accessibility reasons tooltip or aria-label are now required properties for IconButton. In order to continue to use IconButton, you must ensure all IconButton components have a corresponding tooltip or aria-label text. The tooltip text will also be used as the aria-label if you didn't set one separately. In case you add an aria-label the IconButton will not show a tooltip. Issue #69699
The implementation for template macro ${__series.name} was not always correct, resulting in an interpolation that was very different from the series name displayed in the visualization. We have now fixed this issue so that it does show the same name. Depending on how ${__series.name} is used this could result in a minor breaking change. Issue #69621
The data source template variable type has changed the way it represents its options. The text field still represents the data source name, but the value has been changed to the uid of the data source. This allows dashboards to declare the currently selected option by uid, however it changes how a datasource template variable value will be rendered by default. If the name of the data source is expected, the variable syntax will have to be changed to specify the text format.
For example, given a data source variable (datasourceVariable), the following string:
${datasourceVariable}
Name: ${datasourceVariable:text}
UID: ${datasourceVariable:raw}
was previously interpolated as:
grafanacloud-k8smonitoring-prom
Name: grafanacloud-k8smonitoring-prom
UID: grafanacloud-k8smonitoring-prom
After these changes, it's interpolated as:
d7bbe725-9e48-4af8-a0cb-6cb255d873a3
Name: grafanacloud-k8smonitoring-prom
UID: d7bbe725-9e48-4af8-a0cb-6cb255d873a3
Any dashboards that are relying on the data source name being returned by ${datasourceVariable} will have to update all their usages to ${datasourceVariable:text} in order to get the previous behavior.
Affected use cases:
${datasourceVariable} to display the data source name in text panel or in the panel title.${datasourceVariable} to use the data source name as part of the query content.Unaffected use cases:
${datasourceVariable} to choose which data source to use for a query (through its data source picker) will not be affected since it can use both the name and the uid Issue #69259We are changing the logic that creates uid in LogRowModel. Previously, for uid we used id field from log's data frame. Unfortunately, when users run multiple queries that returned duplicate logs data, uid was not unique which was causing bugs. To make uid unique across multiple queries that return duplicate logs data, we are now prepending uid with refId of query that produced the log line. We recommend not to rely on LogRowModel uid and instead use dataFrame id field. Issue #68569
The deprecated support for monitoring Grafana frontend using Sentry javascript agent has been removed in this release. If you have frontend logging enabled and are sending telemetry to Sentry by setting sentry_dsn configuration property, this will no longer work. Otherwise, if frontend logging is enabled, it will now automatically use Grafana Faro agent. Issue #67493
The query parameter of Explore's SplitOpen function is deprecated (passed in mapInternalLinkToExplore). Please use the queries parameter instead, which allows passing multiple queries to SplitOpen function. To pass a single query to SplitOpen function, set the queries parameter to an array containing that single query.
Fixes: https://github.com/grafana/grafana/issues/62567 Issue #71484
Starting with 10.0, changing the folder UID is deprecated. It will be removed in a future release. Please avoid using it because it can result in folder losing its permissions. Issue #68543
max_attempts to 1 by default. #79101, @gotjoshserviceTags and tags to be empty for trace results. #73196, @aangeliscextractFields throwing Error if one value is undefined or null. #71267, @svennergrbefore and after texts in log context. #70802, @svennergrgrafana-cli or grafana-server; the grafana command should be used instead. #66976, @kminehartto: now dashboards. #62932, @leeoniyainstant queries. #67271, @svennergrThe deprecated plugin:build command in the Grafana Toolkit have been removed in this release. The replacement create-plugin tool is recommended for plugin development. Issue #67485
The deprecated package:build, node-version-check and toolkit:build commands in the Grafana Toolkit have been removed in this release. Issue #67475
The deprecated plugin:github-publish command in the Grafana Toolkit have been removed in this release. Issue #67471
The /query-history/migrate endpoint has been removed and query history entries will not be automatically migrated when switching from local storage to remote storage. Issue #67470
The deprecated plugin:ci-build, plugin:ci-package, plugin:ci-report, plugin:update-circleci and plugin:bundle-managed commands in the Grafana Toolkit have been removed in this release. Issue #67212
The data-format used by the Loki data source for metric (graph producing) queries was changed to be compliant with the recommended Grafana format. The change is very small, we do not expect it to cause problems: for instant-queries the dataframe-type changed from timeseries-multi to numeric-multi, the dataframe-name attribute is not used anymore. If you are affected by this, you can revert back to the old format by setting the feature flag lokiMetricDataplane to false. We recommend migrating to the new format, because the feature-flag will be removed at some point in the future. Issue #67137
The deprecated plugin:sign command in the Grafana Toolkit have been removed in this release. The replacement sign-plugin tool is recommended for plugin signing. Issue #67130
The deprecated plugin:test and plugin:dev commands in the Grafana Toolkit have been removed in this release. Issue #67125
The type signature of the testDatasource() method on the DataSourceWithBackend class has changed, the returned Promise is now typed stricter, which is probably going to cause type-errors while building plugins against the latest Grafana versions.
// Before
abstract testDatasource(): Promise<any>;
// After
abstract testDatasource(): Promise<TestDataSourceResponse>;
Issue #67014
Grafana requires an Elasticsearch version of 7.16 or newer. If you use an older Elasticsearch version, you will get warnings in the query editor and on the datasource configuration page. Issue #66928
The deprecated plugin:create and component:create commands in the Grafana Toolkit have been removed in this release. The replacement create-plugin tool is recommended for scaffolding new plugins and a migration guide for moving from the toolkit is available here. Issue #66729
We've removed some now unused properties from the NavModel interface. Issue #66548
default named retention policies won't be used to query. Users who have a default named retention policy in their influxdb database, have to rename it to something else. Having default named retention policy is not breaking anything. We will make sure to use the actual default retention policy under the hood. To change the hardcoded retention policy in the dashboard.json, users must they select the right retention policy from dropdown and save the panel/dashboard. Issue #66466
We removed previously deprecated components from @grafana/data : getLogLevel, getLogLevelFromKey, addLogLevelToSeries, LogsParser, LogsParsers, calculateFieldStats, calculateLogsLabelStats, calculateStats, getParser, sortInAscendingOrder, sortInDescendingOrder, sortLogsResult, sortLogRows, checkLogsError, escapeUnescapedString. Issue #66271
We removed previously deprecated components from @grafana/ui : LogLabels, LogMessageAnsi, LogRows, getLogRowStyles. Issue #66268
We removed previously deprecated DataSourceWithLogsVolumeSupport that was replaced with DataSourceWithSupplementaryQueriesSupport. Both APIs are for internal use only. Issue #66266
Additional functions (map/filter/forEach/iterator) have been added to the root Vector interface. Any code using vectors will continue to work unchanged, but in the rare case that you have implemented Vector directly, it be missing these functions. The easiest fix is to extend FunctionalVector.
The ArrayVector class now extends the native JavaScript Array and gains all of its prototype/instance methods as a result. Issue #66187
We've removed the ability for functions to be passed as children to the Dropdown component. Previously, this was used to access the isOpen state of the dropdown. This can be now be achieved with the onVisibleChange prop.
Before:
return (
<Dropdown overlay={MenuActions} placement="bottom-end">
{(isOpen) =>
<ToolbarButton iconOnly icon="plus" isOpen={isOpen} aria-label="New" />
}
</Dropdown>
);
After:
const [isOpen, setIsOpen] = useState(false);
...
return (
<Dropdown overlay={MenuActions} placement="bottom-end" onVisibleChange={setIsOpen}>
<ToolbarButton iconOnly icon="plus" isOpen={isOpen} aria-label="New" />
</Dropdown>
);
Issue #65467
(relevant for plugin developers) The deprecated internal dashboardId is now removed from the request context. For usage tracking use the dashboardUid Issue #64786
Grafana has been upgraded to React 18 and now leverages the new React client rendering API. Plugin authors in particular should be aware, as there could be unintended side effects due to the changes around automatic batching of state updates and consistent useEffect timings. Be sure to test your plugins and reference the React 18 upgrade docs here: https://react.dev/blog/2022/03/08/react-18-upgrade-guide Issue #64428
For Elasticsearch annotation queries we are deprecating index field. Possibility to customise index for newly created annotations has already been removed in version 2.6.0 and since then we supported updating of index only for queries that customised index before 2.6.0. For users who would like to specify index for annotation queries we recommend to create a new Elasticsearch data source with specified index, and use that data source for annotations. Issue #67046
Scripts, systemd unit files and etc should stop using the grafana-cli and grafana-server programs, and instead use the grafana program. Uses of grafana-server should become grafana server, and uses of grafana-cli should become grafana cli. Issue #66976
The database field has been deprecated in the Elasticsearch datasource provisioning files, please use the index field in jsonData instead. Issue #66828
plugin:build. #67485, @academopackage:build, node-version-check and toolkit:build commands. #67475, @academoplugin:github-publish command. #67471, @academoplugin:ci-build plugin:ci-package plugin:ci-report and related files. #67212, @academoplugin:sign command. #67130, @academoplugin:dev and plugin:test. #67125, @academo