diff --git a/CHANGELOG.md b/CHANGELOG.md index 5da9c54b89..bb4cab98ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ CHANGELOG 3.16.0 ------ +**CHANGES** +- The validator `ClusterNameValidator` now enforces cluster names to be limited to 40 characters when using `ExternalSlurmdbd`, + consistent with the existing limit for `Database`. This prevents runtime failures caused by MySQL's table name length limit. + **BUG FIXES** - Fix sporadic S3 bucket (with name parallelcluster-*-v1-do-not-delete) creation failure when multiple create-cluster commands are running simultaneously in the same region. diff --git a/cli/src/pcluster/validators/cluster_validators.py b/cli/src/pcluster/validators/cluster_validators.py index c99a430627..58c863b729 100644 --- a/cli/src/pcluster/validators/cluster_validators.py +++ b/cli/src/pcluster/validators/cluster_validators.py @@ -89,7 +89,9 @@ class ClusterNameValidator(Validator): """Cluster name validator.""" def _validate(self, name, scheduling): - if scheduling.scheduler == "slurm" and scheduling.settings.database is not None: + if scheduling.scheduler == "slurm" and ( + scheduling.settings.database is not None or scheduling.settings.external_slurmdbd is not None + ): if not re.match(PCLUSTER_NAME_REGEX % (PCLUSTER_NAME_MAX_LENGTH_SLURM_ACCOUNTING - 1), name): self._add_failure( ( diff --git a/cli/tests/pcluster/validators/test_cluster_validators.py b/cli/tests/pcluster/validators/test_cluster_validators.py index c1ec976ccb..68c1cd48ef 100644 --- a/cli/tests/pcluster/validators/test_cluster_validators.py +++ b/cli/tests/pcluster/validators/test_cluster_validators.py @@ -192,6 +192,26 @@ def test_cluster_name_validator(cluster_name, scheduling, should_trigger_error): ), False, ), + ( + "ClusterNameWith40------------------Chars", + SlurmScheduling( + queues=None, + settings=SlurmSettings( + external_slurmdbd=ExternalSlurmdbd(host="test.slurmdbd.host", port=6819), + ), + ), + False, + ), + ( + "ClusterNameWith41-------------------Chars", + SlurmScheduling( + queues=None, + settings=SlurmSettings( + external_slurmdbd=ExternalSlurmdbd(host="test.slurmdbd.host", port=6819), + ), + ), + True, + ), ], ) def test_cluster_name_validator_slurm_accounting(cluster_name, scheduling, should_trigger_error):