Skip to content

Conversation

@poffdeluxe
Copy link
Contributor

Backports the following commits to 7.x:

…ed on workpad (elastic#81863)

* Update renderer handlers when element is changed

* Update handlers before render

* Add canvas functional test for filters

* Update snapshot and remove log

Co-authored-by: Kibana Machine <[email protected]>
# Conflicts:
#	x-pack/plugins/canvas/canvas_plugin_src/renderers/filters/dropdown_filter/component/dropdown_filter.tsx
@poffdeluxe poffdeluxe added the backport This PR is a backport of another PR label Nov 6, 2020
@kibanamachine
Copy link
Contributor

💛 Build succeeded, but was flaky


Test Failures

Chrome UI Functional Tests.test/functional/apps/discover/_discover·js.discover app discover app refresh interval should refetch when autofresh is enabled

Link to Jenkins

Standard Out

Failed Tests Reporter:
  - Test has not failed recently on tracked branches

[00:00:00]       │
[00:00:00]         └-: discover app
[00:00:00]           └-> "before all" hook
[00:00:00]           └-> "before all" hook
[00:04:26]           └-: discover app
[00:04:26]             └-> "before all" hook
[00:04:26]             └-> "before all" hook
[00:04:26]               │ debg replacing kibana config doc: {"defaultIndex":"logstash-*"}
[00:04:26]               │ debg load kibana index with default index pattern
[00:04:26]               │ info [discover] Loading "mappings.json"
[00:04:26]               │ info [discover] Loading "data.json.gz"
[00:04:27]               │ info [o.e.c.m.MetadataDeleteIndexService] [kibana-ci-immutable-ubuntu-16-tests-xxl-1604681583408314206] [.kibana_1/RMXcF2gBQkuHIs2TwbLang] deleting index
[00:04:27]               │ info [o.e.c.m.MetadataDeleteIndexService] [kibana-ci-immutable-ubuntu-16-tests-xxl-1604681583408314206] [.kibana_2/XZ7mWC35QVWj0kI3OofbkQ] deleting index
[00:04:27]               │ info [discover] Deleted existing index [".kibana_2",".kibana_1"]
[00:04:27]               │ info [o.e.c.m.MetadataCreateIndexService] [kibana-ci-immutable-ubuntu-16-tests-xxl-1604681583408314206] [.kibana] creating index, cause [api], templates [], shards [1]/[1]
[00:04:27]               │ info [discover] Created index ".kibana"
[00:04:27]               │ debg [discover] ".kibana" settings {"index":{"number_of_replicas":"1","number_of_shards":"1"}}
[00:04:27]               │ info [discover] Indexed 2 docs into ".kibana"
[00:04:27]               │ info [o.e.c.m.MetadataMappingService] [kibana-ci-immutable-ubuntu-16-tests-xxl-1604681583408314206] [.kibana/_dhLnKuoRsuF8VXy1eoeow] update_mapping [_doc]
[00:04:27]               │ debg Migrating saved objects
[00:04:27]               │ proc [kibana]   log   [17:18:22.831] [info][savedobjects-service] Creating index .kibana_2.
[00:04:27]               │ info [o.e.c.m.MetadataCreateIndexService] [kibana-ci-immutable-ubuntu-16-tests-xxl-1604681583408314206] [.kibana_2] creating index, cause [api], templates [], shards [1]/[1]
[00:04:27]               │ info [o.e.c.r.a.AllocationService] [kibana-ci-immutable-ubuntu-16-tests-xxl-1604681583408314206] updating number_of_replicas to [0] for indices [.kibana_2]
[00:04:27]               │ proc [kibana]   log   [17:18:22.896] [info][savedobjects-service] Reindexing .kibana to .kibana_1
[00:04:27]               │ info [o.e.c.m.MetadataCreateIndexService] [kibana-ci-immutable-ubuntu-16-tests-xxl-1604681583408314206] [.kibana_1] creating index, cause [api], templates [], shards [1]/[1]
[00:04:27]               │ info [o.e.c.r.a.AllocationService] [kibana-ci-immutable-ubuntu-16-tests-xxl-1604681583408314206] updating number_of_replicas to [0] for indices [.kibana_1]
[00:04:27]               │ info [o.e.t.LoggingTaskListener] [kibana-ci-immutable-ubuntu-16-tests-xxl-1604681583408314206] 1902 finished with response BulkByScrollResponse[took=24.7ms,timed_out=false,sliceId=null,updated=0,created=2,deleted=0,batches=1,versionConflicts=0,noops=0,retries=0,throttledUntil=0s,bulk_failures=[],search_failures=[]]
[00:04:27]               │ info [o.e.c.m.MetadataDeleteIndexService] [kibana-ci-immutable-ubuntu-16-tests-xxl-1604681583408314206] [.kibana/_dhLnKuoRsuF8VXy1eoeow] deleting index
[00:04:27]               │ proc [kibana]   log   [17:18:23.241] [info][savedobjects-service] Migrating .kibana_1 saved objects to .kibana_2
[00:04:27]               │ info [o.e.c.m.MetadataMappingService] [kibana-ci-immutable-ubuntu-16-tests-xxl-1604681583408314206] [.kibana_2/7zi1czjwRlSxGrgPgEdjGA] update_mapping [_doc]
[00:04:27]               │ info [o.e.c.m.MetadataMappingService] [kibana-ci-immutable-ubuntu-16-tests-xxl-1604681583408314206] [.kibana_2/7zi1czjwRlSxGrgPgEdjGA] update_mapping [_doc]
[00:04:27]               │ proc [kibana]   log   [17:18:23.328] [info][savedobjects-service] Pointing alias .kibana to .kibana_2.
[00:04:27]               │ proc [kibana]   log   [17:18:23.364] [info][savedobjects-service] Finished in 536ms.
[00:04:27]               │ debg applying update to kibana config: {"accessibility:disableAnimations":true,"dateFormat:tz":"UTC"}
[00:04:27]               │ info [o.e.c.m.MetadataMappingService] [kibana-ci-immutable-ubuntu-16-tests-xxl-1604681583408314206] [.kibana_2/7zi1czjwRlSxGrgPgEdjGA] update_mapping [_doc]
[00:04:29]               │ info [logstash_functional] Loading "mappings.json"
[00:04:29]               │ info [logstash_functional] Loading "data.json.gz"
[00:04:29]               │ info [logstash_functional] Skipped restore for existing index "logstash-2015.09.22"
[00:04:29]               │ info [logstash_functional] Skipped restore for existing index "logstash-2015.09.20"
[00:04:29]               │ info [logstash_functional] Skipped restore for existing index "logstash-2015.09.21"
[00:04:30]               │ debg discover
[00:04:30]               │ debg navigating to discover url: http://localhost:61161/app/discover#/
[00:04:30]               │ debg navigate to: http://localhost:61161/app/discover#/
[00:04:30]               │ debg browser[INFO] http://localhost:61161/app/discover?_t=1604683106074#/ 341 Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'unsafe-eval' 'self'". Either the 'unsafe-inline' keyword, a hash ('sha256-P5polb1UreUSOe5V/Pv7tc+yeZuJXiOi/3fqhGsU7BE='), or a nonce ('nonce-...') is required to enable inline execution.
[00:04:30]               │
[00:04:30]               │ debg browser[INFO] http://localhost:61161/bootstrap.js 42:19 "^ A single error about an inline script not firing due to content security policy is expected!"
[00:04:30]               │ debg ... sleep(700) start
[00:04:31]               │ debg ... sleep(700) end
[00:04:31]               │ debg returned from get, calling refresh
[00:04:31]               │ERROR browser[SEVERE] http://localhost:61161/36361/bundles/plugin/newsfeed/newsfeed.plugin.js 0:20624 TypeError: Failed to fetch
[00:04:31]               │          at _callee3$ (http://localhost:61161/36361/bundles/core/core.entry.js:6:44690)
[00:04:31]               │          at l (http://localhost:61161/36361/bundles/kbn-ui-shared-deps/kbn-ui-shared-deps.js:321:1751401)
[00:04:31]               │          at Generator._invoke (http://localhost:61161/36361/bundles/kbn-ui-shared-deps/kbn-ui-shared-deps.js:321:1751154)
[00:04:31]               │          at Generator.forEach.e.<computed> [as throw] (http://localhost:61161/36361/bundles/kbn-ui-shared-deps/kbn-ui-shared-deps.js:321:1751758)
[00:04:31]               │          at fetch_asyncGeneratorStep (http://localhost:61161/36361/bundles/core/core.entry.js:6:38998)
[00:04:31]               │          at _throw (http://localhost:61161/36361/bundles/core/core.entry.js:6:39406)
[00:04:31]               │ debg browser[INFO] http://localhost:61161/app/discover?_t=1604683106074#/ 341 Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'unsafe-eval' 'self'". Either the 'unsafe-inline' keyword, a hash ('sha256-P5polb1UreUSOe5V/Pv7tc+yeZuJXiOi/3fqhGsU7BE='), or a nonce ('nonce-...') is required to enable inline execution.
[00:04:31]               │
[00:04:31]               │ debg browser[INFO] http://localhost:61161/bootstrap.js 42:19 "^ A single error about an inline script not firing due to content security policy is expected!"
[00:04:31]               │ debg currentUrl = http://localhost:61161/app/discover#/
[00:04:31]               │          appUrl = http://localhost:61161/app/discover#/
[00:04:31]               │ debg TestSubjects.find(kibanaChrome)
[00:04:31]               │ debg Find.findByCssSelector('[data-test-subj="kibanaChrome"]') with timeout=60000
[00:04:31]               │ debg ... sleep(501) start
[00:04:32]               │ debg ... sleep(501) end
[00:04:32]               │ debg in navigateTo url = http://localhost:61161/app/discover#/?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-15m,to:now))&_a=(columns:!(_source),filters:!(),index:%27logstash-*%27,interval:auto,query:(language:kuery,query:%27%27),sort:!())
[00:04:32]               │ debg --- retry.try error: URL changed, waiting for it to settle
[00:04:33]               │ debg ... sleep(501) start
[00:04:33]               │ debg ... sleep(501) end
[00:04:33]               │ debg in navigateTo url = http://localhost:61161/app/discover#/?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-15m,to:now))&_a=(columns:!(_source),filters:!(),index:%27logstash-*%27,interval:auto,query:(language:kuery,query:%27%27),sort:!())
[00:04:33]               │ debg TestSubjects.exists(statusPageContainer)
[00:04:33]               │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="statusPageContainer"]') with timeout=2500
[00:04:36]               │ debg --- retry.tryForTime error: [data-test-subj="statusPageContainer"] is not displayed
[00:04:36]               │ debg Setting absolute range to Sep 19, 2015 @ 06:31:44.000 to Sep 23, 2015 @ 18:31:44.000
[00:04:36]               │ debg TestSubjects.exists(superDatePickerToggleQuickMenuButton)
[00:04:36]               │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="superDatePickerToggleQuickMenuButton"]') with timeout=20000
[00:04:36]               │ debg TestSubjects.exists(superDatePickerShowDatesButton)
[00:04:36]               │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="superDatePickerShowDatesButton"]') with timeout=2500
[00:04:36]               │ debg TestSubjects.click(superDatePickerShowDatesButton)
[00:04:36]               │ debg Find.clickByCssSelector('[data-test-subj="superDatePickerShowDatesButton"]') with timeout=10000
[00:04:36]               │ debg Find.findByCssSelector('[data-test-subj="superDatePickerShowDatesButton"]') with timeout=10000
[00:04:36]               │ debg TestSubjects.exists(superDatePickerstartDatePopoverButton)
[00:04:36]               │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="superDatePickerstartDatePopoverButton"]') with timeout=2500
[00:04:36]               │ debg TestSubjects.click(superDatePickerendDatePopoverButton)
[00:04:36]               │ debg Find.clickByCssSelector('[data-test-subj="superDatePickerendDatePopoverButton"]') with timeout=10000
[00:04:36]               │ debg Find.findByCssSelector('[data-test-subj="superDatePickerendDatePopoverButton"]') with timeout=10000
[00:04:36]               │ debg Find.findByCssSelector('div.euiPopover__panel-isOpen') with timeout=10000
[00:04:36]               │ debg TestSubjects.click(superDatePickerAbsoluteTab)
[00:04:36]               │ debg Find.clickByCssSelector('[data-test-subj="superDatePickerAbsoluteTab"]') with timeout=10000
[00:04:36]               │ debg Find.findByCssSelector('[data-test-subj="superDatePickerAbsoluteTab"]') with timeout=10000
[00:04:37]               │ debg TestSubjects.click(superDatePickerAbsoluteDateInput)
[00:04:37]               │ debg Find.clickByCssSelector('[data-test-subj="superDatePickerAbsoluteDateInput"]') with timeout=10000
[00:04:37]               │ debg Find.findByCssSelector('[data-test-subj="superDatePickerAbsoluteDateInput"]') with timeout=10000
[00:04:37]               │ debg TestSubjects.setValue(superDatePickerAbsoluteDateInput, Sep 23, 2015 @ 18:31:44.000)
[00:04:37]               │ debg TestSubjects.click(superDatePickerAbsoluteDateInput)
[00:04:37]               │ debg Find.clickByCssSelector('[data-test-subj="superDatePickerAbsoluteDateInput"]') with timeout=10000
[00:04:37]               │ debg Find.findByCssSelector('[data-test-subj="superDatePickerAbsoluteDateInput"]') with timeout=10000
[00:04:37]               │ debg TestSubjects.click(superDatePickerstartDatePopoverButton)
[00:04:37]               │ debg Find.clickByCssSelector('[data-test-subj="superDatePickerstartDatePopoverButton"]') with timeout=10000
[00:04:37]               │ debg Find.findByCssSelector('[data-test-subj="superDatePickerstartDatePopoverButton"]') with timeout=10000
[00:04:37]               │ debg Find.waitForElementStale with timeout=10000
[00:04:37]               │ debg Find.findByCssSelector('div.euiPopover__panel-isOpen') with timeout=10000
[00:04:37]               │ debg TestSubjects.click(superDatePickerAbsoluteTab)
[00:04:37]               │ debg Find.clickByCssSelector('[data-test-subj="superDatePickerAbsoluteTab"]') with timeout=10000
[00:04:37]               │ debg Find.findByCssSelector('[data-test-subj="superDatePickerAbsoluteTab"]') with timeout=10000
[00:04:38]               │ debg TestSubjects.click(superDatePickerAbsoluteDateInput)
[00:04:38]               │ debg Find.clickByCssSelector('[data-test-subj="superDatePickerAbsoluteDateInput"]') with timeout=10000
[00:04:38]               │ debg Find.findByCssSelector('[data-test-subj="superDatePickerAbsoluteDateInput"]') with timeout=10000
[00:04:38]               │ debg TestSubjects.setValue(superDatePickerAbsoluteDateInput, Sep 19, 2015 @ 06:31:44.000)
[00:04:38]               │ debg TestSubjects.click(superDatePickerAbsoluteDateInput)
[00:04:38]               │ debg Find.clickByCssSelector('[data-test-subj="superDatePickerAbsoluteDateInput"]') with timeout=10000
[00:04:38]               │ debg Find.findByCssSelector('[data-test-subj="superDatePickerAbsoluteDateInput"]') with timeout=10000
[00:04:38]               │ debg TestSubjects.exists(superDatePickerApplyTimeButton)
[00:04:38]               │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="superDatePickerApplyTimeButton"]') with timeout=2500
[00:04:41]               │ debg --- retry.tryForTime error: [data-test-subj="superDatePickerApplyTimeButton"] is not displayed
[00:04:41]               │ debg TestSubjects.click(querySubmitButton)
[00:04:41]               │ debg Find.clickByCssSelector('[data-test-subj="querySubmitButton"]') with timeout=10000
[00:04:41]               │ debg Find.findByCssSelector('[data-test-subj="querySubmitButton"]') with timeout=10000
[00:04:41]               │ debg Find.waitForElementStale with timeout=10000
[00:04:41]               │ debg TestSubjects.exists(globalLoadingIndicator-hidden)
[00:04:41]               │ debg Find.existsByCssSelector('[data-test-subj="globalLoadingIndicator-hidden"]') with timeout=100000
[00:07:33]             └-: refresh interval
[00:07:33]               └-> "before all" hook
[00:07:33]               └-> should refetch when autofresh is enabled
[00:07:33]                 └-> "before each" hook: global before each
[00:07:33]                 │ debg setting menu open state [name=QuickSelectTime Menu] [state=open]
[00:07:33]                 │ debg TestSubjects.exists(superDatePickerQuickMenu)
[00:07:33]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="superDatePickerQuickMenu"]') with timeout=1000
[00:07:34]                 │ debg --- retry.tryForTime error: [data-test-subj="superDatePickerQuickMenu"] is not displayed
[00:07:34]                 │ debg TestSubjects.click(superDatePickerToggleQuickMenuButton)
[00:07:34]                 │ debg Find.clickByCssSelector('[data-test-subj="superDatePickerToggleQuickMenuButton"]') with timeout=10000
[00:07:34]                 │ debg Find.findByCssSelector('[data-test-subj="superDatePickerToggleQuickMenuButton"]') with timeout=10000
[00:07:35]                 │ debg TestSubjects.exists(superDatePickerQuickMenu)
[00:07:35]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="superDatePickerQuickMenu"]') with timeout=10000
[00:07:35]                 │ debg TestSubjects.setValue(superDatePickerRefreshIntervalInput, 5)
[00:07:35]                 │ debg TestSubjects.click(superDatePickerRefreshIntervalInput)
[00:07:35]                 │ debg Find.clickByCssSelector('[data-test-subj="superDatePickerRefreshIntervalInput"]') with timeout=10000
[00:07:35]                 │ debg Find.findByCssSelector('[data-test-subj="superDatePickerRefreshIntervalInput"]') with timeout=10000
[00:07:35]                 │ debg setting menu open state [name=QuickSelectTime Menu] [state=open]
[00:07:35]                 │ debg TestSubjects.exists(superDatePickerQuickMenu)
[00:07:35]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="superDatePickerQuickMenu"]') with timeout=1000
[00:07:35]                 │ debg TestSubjects.getAttribute(superDatePickerRefreshIntervalInput, value, tryTimeout=120000, findTimeout=10000)
[00:07:35]                 │ debg TestSubjects.find(superDatePickerRefreshIntervalInput)
[00:07:35]                 │ debg Find.findByCssSelector('[data-test-subj="superDatePickerRefreshIntervalInput"]') with timeout=10000
[00:07:35]                 │ debg TestSubjects.find(superDatePickerRefreshIntervalUnitsSelect)
[00:07:35]                 │ debg Find.findByCssSelector('[data-test-subj="superDatePickerRefreshIntervalUnitsSelect"]') with timeout=10000
[00:07:35]                 │ debg Find.allDescendantDisplayedByCssSelector('option')
[00:07:35]                 │ debg TestSubjects.getVisibleText(superDatePickerToggleRefreshButton)
[00:07:35]                 │ debg TestSubjects.find(superDatePickerToggleRefreshButton)
[00:07:35]                 │ debg Find.findByCssSelector('[data-test-subj="superDatePickerToggleRefreshButton"]') with timeout=10000
[00:07:35]                 │ debg start auto refresh
[00:07:35]                 │ debg TestSubjects.click(superDatePickerToggleRefreshButton)
[00:07:35]                 │ debg Find.clickByCssSelector('[data-test-subj="superDatePickerToggleRefreshButton"]') with timeout=10000
[00:07:35]                 │ debg Find.findByCssSelector('[data-test-subj="superDatePickerToggleRefreshButton"]') with timeout=10000
[00:07:35]                 │ debg setting menu open state [name=QuickSelectTime Menu] [state=closed]
[00:07:35]                 │ debg TestSubjects.exists(superDatePickerQuickMenu)
[00:07:35]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="superDatePickerQuickMenu"]') with timeout=1000
[00:07:35]                 │ debg TestSubjects.click(superDatePickerToggleQuickMenuButton)
[00:07:35]                 │ debg Find.clickByCssSelector('[data-test-subj="superDatePickerToggleQuickMenuButton"]') with timeout=10000
[00:07:35]                 │ debg Find.findByCssSelector('[data-test-subj="superDatePickerToggleQuickMenuButton"]') with timeout=10000
[00:07:36]                 │ debg Find.waitForDeletedByCssSelector('[data-test-subj="superDatePickerQuickMenu"]') with timeout=10000
[00:07:37]                 │ debg Inspector.open
[00:07:37]                 │ debg TestSubjects.exists(inspectorPanel)
[00:07:37]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="inspectorPanel"]') with timeout=2500
[00:07:39]                 │ debg --- retry.tryForTime error: [data-test-subj="inspectorPanel"] is not displayed
[00:07:40]                 │ debg TestSubjects.click(openInspectorButton)
[00:07:40]                 │ debg Find.clickByCssSelector('[data-test-subj="openInspectorButton"]') with timeout=10000
[00:07:40]                 │ debg Find.findByCssSelector('[data-test-subj="openInspectorButton"]') with timeout=10000
[00:07:40]                 │ debg TestSubjects.exists(inspectorPanel)
[00:07:40]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="inspectorPanel"]') with timeout=2500
[00:07:40]                 │ debg TestSubjects.find(inspectorPanel)
[00:07:40]                 │ debg Find.findByCssSelector('[data-test-subj="inspectorPanel"]') with timeout=10000
[00:07:41]                 │ warn WebElementWrapper.getAttribute: stale element reference: element is not attached to the page document
[00:07:41]                 │        (Session info: headless chrome=86.0.4240.111)
[00:07:41]                 │ debg finding element 'By(css selector, tbody)' again, 2 attempts left
[00:07:42]                 │ info Taking screenshot "/dev/shm/workspace/parallel/16/kibana/test/functional/screenshots/failure/discover app discover app refresh interval should refetch when autofresh is enabled.png"
[00:07:42]                 │ info Current URL is: http://localhost:61161/app/discover#/?_g=(filters:!(),refreshInterval:(pause:!f,value:5000),time:(from:%272015-09-18T06:31:44.000Z%27,to:%272015-09-23T18:31:44.000Z%27))&_a=(columns:!(_source),filters:!(),index:%27logstash-*%27,interval:auto,query:(language:kuery,query:%27%27),sort:!(!(%27@timestamp%27,desc)))
[00:07:42]                 │ info Saving page source to: /dev/shm/workspace/parallel/16/kibana/test/functional/failure_debug/html/discover app discover app refresh interval should refetch when autofresh is enabled.html
[00:07:42]                 └- ✖ fail: discover app discover app refresh interval should refetch when autofresh is enabled
[00:07:42]                 │      TypeError: Cannot read property 'includes' of undefined
[00:07:42]                 │       at filter (test/functional/apps/discover/_discover.js:333:18)
[00:07:42]                 │       at Array.filter (<anonymous>)
[00:07:42]                 │       at getRequestTimestamp (test/functional/apps/discover/_discover.js:332:49)
[00:07:42]                 │       at process._tickCallback (internal/process/next_tick.js:68:7)
[00:07:42]                 │ 
[00:07:42]                 │ 

Stack Trace

TypeError: Cannot read property 'includes' of undefined
    at filter (test/functional/apps/discover/_discover.js:333:18)
    at Array.filter (<anonymous>)
    at getRequestTimestamp (test/functional/apps/discover/_discover.js:332:49)
    at process._tickCallback (internal/process/next_tick.js:68:7)

Metrics [docs]

async chunks size

id before after diff
canvas 1.3MB 1.3MB -294.0B

page load bundle size

id before after diff
canvas 907.8KB 907.9KB +88.0B

To update your PR or re-run it, just comment with:
@elasticmachine merge upstream

@poffdeluxe poffdeluxe merged commit 3b4a32c into elastic:7.x Nov 11, 2020
@poffdeluxe poffdeluxe deleted the backport/7.x/pr-81863 branch November 11, 2020 17:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport This PR is a backport of another PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants