From 3be753a2c50be49b87cddcd61d805b8e128d2235 Mon Sep 17 00:00:00 2001 From: Henrik Bengtsson Date: Sun, 19 Jan 2025 15:04:42 -0800 Subject: [PATCH] CGroups: Add more mixed-CGroups v1 & v2 tests [#125] --- DESCRIPTION | 2 +- NEWS.md | 7 +++++++ .../mixed-cgroups/piavpn-cgroups.tar.gz | Bin 0 -> 15323 bytes inst/test-data/mixed-cgroups/piavpn.R | 6 ++++++ 4 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 inst/test-data/mixed-cgroups/piavpn-cgroups.tar.gz create mode 100644 inst/test-data/mixed-cgroups/piavpn.R diff --git a/DESCRIPTION b/DESCRIPTION index f156175..b98542d 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,5 +1,5 @@ Package: parallelly -Version: 1.41.0-9008 +Version: 1.41.0-9009 Title: Enhancing the 'parallel' Package Imports: parallel, diff --git a/NEWS.md b/NEWS.md index 634c594..6e85cbf 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,12 @@ # Version (development version) +## New Features + + * Now `availableCores()` and `availableWorkers()` support also when + both CGroups v1 and CGroups v2 are enabled on the + machine. Previously, such configurations were completely ignored. + + ## Bug Fixes * Call `isNodeAlive()` and `killNode()` on cluster nodes running on diff --git a/inst/test-data/mixed-cgroups/piavpn-cgroups.tar.gz b/inst/test-data/mixed-cgroups/piavpn-cgroups.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..1ba1211258415a20af06ced1683925a3b2210baf GIT binary patch literal 15323 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