diff --git a/_multibuild b/_multibuild
index fcc7b97..e9bd620 100644
--- a/_multibuild
+++ b/_multibuild
@@ -1,3 +1,4 @@
- test
+ test-py38
+ test-py39
diff --git a/distributed-2021.09.1-gh.tar.gz b/distributed-2021.09.1-gh.tar.gz
deleted file mode 100644
index 94f02e8..0000000
--- a/distributed-2021.09.1-gh.tar.gz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:4406a1f11092d0607aa9ed7e2220812cc4a35e6a29d86d974a3f24b7412d453d
-size 1481730
diff --git a/distributed-2022.01.0-gh.tar.gz b/distributed-2022.01.0-gh.tar.gz
new file mode 100644
index 0000000..cad8e8e
--- /dev/null
+++ b/distributed-2022.01.0-gh.tar.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:473912e1ffba7c485022430adb8fffe3d47924240150d4417b180cb757a1d7d6
+size 1563248
diff --git a/python-distributed.changes b/python-distributed.changes
index 8ce31ac..edc5137 100644
--- a/python-distributed.changes
+++ b/python-distributed.changes
@@ -1,3 +1,42 @@
+-------------------------------------------------------------------
+Thu Jan 20 16:09:54 UTC 2022 - Ben Greiner
+
+- Update to version 2022.1.0
+ * full changelog at
+ https://distributed.readthedocs.io/en/latest/changelog.html
+ * New Features:
+ - Task group stacked area chart (GH#5320) Ian Rose
+ - Support configuring TLS min/max version (GH#5594) Jim
+ Crist-Harif
+ - Use asyncio for TCP/TLS comms (GH#5450) Jim Crist-Harif
+- Enhancement release notes for 2021.12.0
+ * Support pytest fixures and parametrize with gen_test (GH#5532)
+ Fábio Rosado
+ * Allow idempotent scheduler plugins to be registered via the RPC
+ (GH#5545) Jacob Tomlinson
+ * AMM logging (GH#5530) crusaderky
+ * Raise error if asyncssh isn’t installed when using SSHCluster
+ (GH#5535) Fábio Rosado
+ * Allow None in UCX configuration schema (GH#5534) Fábio Rosado
+ * Add distributed.comm.ucx.create-cuda-context config (GH#5526)
+ Peter Andreas Entschev
+- Security release note for 2021.10.0:
+ * This release fixed a potential security vulnerability relating
+ to single-machine Dask clusters. Clusters started with
+ dask.distributed.LocalCluster or dask.distributed.Client()
+ (which defaults to using LocalCluster) would mistakenly
+ configure their respective Dask workers to listen on external
+ interfaces (typically with a randomly selected high port)
+ rather than only on localhost. A Dask cluster created using
+ this method AND running on a machine that has these ports
+ exposed could be used by a sophisticated attacker to enable
+ remote code execution. Users running on machines with standard
+ firewalls in place should not be affected. This vulnerability
+ is documented in CVE-2021-42343, and is fixed in this release
+ (GH#5427). Thanks to Jean-Pierre van Riel for discovering and
+ reporting the issue.
+- Skip python310: Not supported yet -- gh#dask/distributed#5350
+
-------------------------------------------------------------------
Wed Sep 22 12:55:39 UTC 2021 - Ben Greiner
diff --git a/python-distributed.spec b/python-distributed.spec
index 10c5028..9ed6a18 100644
--- a/python-distributed.spec
+++ b/python-distributed.spec
@@ -1,7 +1,7 @@
#
# spec file
#
-# Copyright (c) 2021 SUSE LLC
+# Copyright (c) 2022 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -16,14 +16,32 @@
#
-%global flavor @BUILD_FLAVOR@%{nil}
-%if "%{flavor}" == "test"
-%define psuffix -test
-%bcond_without test
-%else
%define psuffix %{nil}
+%global flavor @BUILD_FLAVOR@%{nil}
+%if "%{flavor}" == "test-py38"
+%define psuffix -test-py38
+%define skip_python39 1
+%define skip_python310 1
+%bcond_without test
+%endif
+%if "%{flavor}" == "test-py39"
+%define psuffix -test-py39
+%define skip_python38 1
+%define skip_python310 1
+%bcond_without test
+%endif
+%if "%{flavor}" == "test-py310"
+%define psuffix -test-py310"
+%define skip_python38 1
+%define skip_python39 1
+%bcond_without test
+%endif
+%if "%{flavor}" == ""
+# https://github.com/dask/distributed/issues/5350
+%define skip_python310 1
%bcond_with test
%endif
+
%ifarch %{ix86} %{arm}
# cython optimizations not supported on 32-bit: https://github.com/dask/dask/issues/7489
%bcond_with cythonize
@@ -33,13 +51,13 @@
%if %{with cythonize}
%define cythonize --with-cython
%endif
+
%{?!python_module:%define python_module() python3-%{**}}
-%define skip_python2 1
-%define skip_python36 1
-%define ghversiontag 2021.09.1
+%define skip_python2 1
+%define ghversiontag 2022.01.0
Name: python-distributed%{psuffix}
# Note: please always update together with python-dask
-Version: 2021.9.1
+Version: 2022.1.0
Release: 0
Summary: Library for distributed computing with Python
License: BSD-3-Clause
@@ -56,6 +74,7 @@ Requires: python-click >= 6.6
Requires: python-cloudpickle >= 1.5.0
Requires: python-dask = %{version}
Requires: python-msgpack
+Requires: python-packaging >= 20.0
Requires: python-psutil >= 5.0
Requires: python-sortedcontainers
Requires: python-tblib
@@ -82,7 +101,7 @@ BuildRequires: %{python_module ipython}
BuildRequires: %{python_module jupyter_client}
BuildRequires: %{python_module msgpack}
BuildRequires: %{python_module psutil}
-BuildRequires: %{python_module pytest-asyncio}
+BuildRequires: %{python_module pytest-asyncio >= 0.17.2}
BuildRequires: %{python_module pytest-rerunfailures}
BuildRequires: %{python_module pytest-timeout}
BuildRequires: %{python_module pytest}
@@ -121,26 +140,20 @@ sed -i '/addopts/ {s/--durations=20//; s/--color=yes//}' setup.cfg
%if %{with test}
%check
-# many tests from multiple files are broken by new pytest-asyncio
-# (see https://github.com/dask/distributed/pull/4212 and https://github.com/pytest-dev/pytest-asyncio/issues/168)
-%if %{pkg_vcmp python3-pytest-asyncio >= 0.14}
-donttest+=" or (test_client and test_get_client_functions_spawn_clusters)"
-donttest+=" or (test_preload and test_web_preload)"
-donttest+=" or (test_semaphore and test_access_semaphore_by_name)"
-donttest+=" or (test_semaphore and test_close_async)"
-donttest+=" or (test_semaphore and test_oversubscribing_leases)"
-donttest+=" or (test_semaphore and test_release_once_too_many_resilience)"
-donttest+=" or (test_semaphore and test_release_simple)"
-donttest+=" or (test_semaphore and test_threadpoolworkers_pick_correct_ioloop)"
-donttest+=" or (test_worker and test_worker_client_closes_if_created_on_worker_last_worker_alive)"
-donttest+=" or (test_worker and test_worker_client_closes_if_created_on_worker_one_worker)"
-%endif
-# randomly fail even with old asyncio -- too slow for obs (?)
+# randomly fail server-side -- too slow for obs (?)
donttest+=" or (test_asyncprocess and test_exit_callback)"
-donttest+=" or (test_worker and test_fail_write_to_disk)"
-# rebalance fails on the server, but not when building locally
+donttest+=" or (test_nanny and test_throttle_outgoing_connections)"
donttest+=" or (test_scheduler and test_rebalance)"
donttest+=" or (test_tls_functional and test_rebalance)"
+donttest+=" or (test_worker and test_close_gracefully)"
+donttest+=" or (test_worker and test_fail_write_to_disk)"
+donttest+=" or (test_worker and test_remove_replicas_while_computing)"
+donttest+=" or (test_worker and test_worker_reconnects_mid_compute)"
+if [[ $(getconf LONG_BIT) -eq 32 ]]; then
+ # OverflowError
+ donttest+=" or (test_ensure_spilled_immediately)"
+ donttest+=" or (test_value_raises_during_spilling)"
+fi
%pytest_arch distributed/tests -r sfER -m "not avoid_ci" -k "not (${donttest:4})" --reruns 3 --reruns-delay 3
%endif