warnIfLegacyServerpodWithMultipleInstances function

Future<void> warnIfLegacyServerpodWithMultipleInstances({
  1. required Client cloudApiClient,
  2. required String projectId,
  3. required CommandLogger logger,
  4. required String? serverpodVersionConstraint,
})

When the project cannot resolve to Serverpod VersionConstants.serverpodMultiInstanceSafeMinVersion+ and the capsule is scaled beyond a single instance, logs a warning. Failures reading compute are ignored (debug log only).

Implementation

Future<void> warnIfLegacyServerpodWithMultipleInstances({
  required final Client cloudApiClient,
  required final String projectId,
  required final CommandLogger logger,
  required final String? serverpodVersionConstraint,
}) async {
  if (!serverpodConstraintPrecludesMultiInstanceSafeRelease(
    serverpodVersionConstraint,
  )) {
    return;
  }
  try {
    final compute = await cloudApiClient.compute.readCompute(
      cloudCapsuleId: projectId,
    );
    if (!computeUsesMoreThanOneInstance(compute)) {
      return;
    }
    logger.warning(
      'Multiple server instances are enabled, but your Serverpod constraint does not allow it. '
      'Upgrade to Serverpod ${VersionConstants.serverpodMultiInstanceSafeMinVersion} '
      'or later to reduce the risk of disruption during scaling and deployment.',
      newParagraph: true,
    );
  } on Exception catch (e) {
    logger.debug(
      'Could not read compute configuration for legacy Serverpod scaling '
      'warning: $e',
    );
  }
}