RELEASE NOTES FOR SLURM VERSION 20.02

IMPORTANT NOTES:
If using the slurmdbd (Slurm DataBase Daemon) you must update this first.

NOTE: If using a backup DBD you must start the primary first to do any
database conversion, the backup will not start until this has happened.

The 20.02 slurmdbd will work with Slurm daemons of version 18.08 and above.
You will not need to update all clusters at the same time, but it is very
important to update slurmdbd first and having it running before updating
any other clusters making use of it.

Slurm can be upgraded from version 18.08 or 19.05 to version 20.02 without loss
of jobs or other state information. Upgrading directly from an earlier version
of Slurm will result in loss of state information.

If using SPANK plugins that use the Slurm APIs, they should be recompiled when
upgrading Slurm to a new major release.

NOTE: Slurmctld is now set to fatal in case of computing node configured with
      CPUs == #Sockets. CPUs has to be either total number of cores or threads.

HIGHLIGHTS
==========
 -- Drop slurm.spec-legacy from distribution.
 -- Removed the smap command.
 -- Exclusive behavior of a node includes all GRES on a node as well
    as the cpus.
 -- Use python3 instead of python for internal build/test scripts.
    The slurm.spec file has been updated to depend on python3 as well.
 -- Added new NodeSet configuration option to help simplify partition
    configuration sections for heterogeneous / condo-style clusters.
 -- Added slurm.conf option MaxDBDMsgs to control how many messages will be
    stored in the slurmctld before throwing them away when the slurmdbd is down.
 -- The checkpoint plugin interface and all associated API calls have been
    removed.
 -- slurm_init_job_desc_msg() initializes mail_type as uint16_t. This allows
    mail_type to be set to NONE with scontrol.
 -- Add new slurm_spank_log() function to print messages back to the user from
    within a SPANK plugin without prepending "error: " from slurm_error().
 -- Enforce having partition name and nodelist=ALL when creating reservations
    with flags=PART_NODES.
 -- SPANK - removed never-implemented slurm_spank_slurmd_init() interface. This
    hook has always been accessible through slurm_spank_init() in the
    S_CTX_SLURMD context instead.
 -- sbcast - add new BcastAddr option to NodeName lines to allow sbcast traffic
    to flow over an alternate network path.
 -- Added auth/jwt plugin, and 'scontrol token' subcommand.
 -- PMIx - improve performance of proc map generation.
 -- Deprecate kill_invalid_depend in SchedulerParameters and move it to a new
    option called DependencyParameters.
 -- Enable job dependencies for any job on any cluster in the same federation.
 -- Allow clusters to be added automatically to db at startup of ctld.
 -- Add AccountingStorageExternalHost slurm.conf parameter.
 -- The "ConditionPathExists" condition in slurmd.service has been disabled by
    default to permit simpler installation of a "configless" Slurm cluster.
 -- In SchedulerParameters remove deprecated max_job_bf and replace with
    bf_max_job_test.
 -- Disable sbatch, salloc, srun --reboot for non-admins.
 -- SPANK - added support for S_JOB_GID in the job script context with
    spank_get_item().
 -- Prolog/Epilog - add SLURM_JOB_GID environment variable.

SPECIAL NOTES FOR CRAY SYSTEMS
==============================
 -- burst_buffer/datawarp - the OtherTimeout configuration option will now
    apply to the stage-in "setup" and stage-out "dws_post_run" calls in to
    dw_wlm_cli. (The StageInTimeout and StageOutTimeout were previously
    used here by mistake.)
 -- burst_buffer/datawarp - add a set of % symbols that will be replaced by
    job details. E.g., %d will be filled in with the WorkDir for the job.

CONFIGURATION FILE CHANGES (see man appropriate man page for details)
=====================================================================
 -- The mpi/openmpi plugin has been removed as it does nothing.
    MpiDefault=openmpi will be translated to the functionally-equivalent
    MpiDefault=none.

COMMAND CHANGES (see man pages for details)
===========================================
 -- Display StepId=<jobid>.batch instead of StepId=<jobid>.4294967294 in output
    of "scontrol show step". (slurm_sprint_job_step_info())
 -- MPMD in srun will now defer PATH resolution for the commands to launch to
    slurmstepd. Previously it would handle resolution client-side, but with
    a non-standard approach that walked PATH in reverse.
 -- squeue - added "--me" option, equivalent to --user=$USER.
 -- The LicensesUsed line has been removed from 'scontrol show config'.
    Please see the 'scontrol show licenses' command as an alternative.
 -- sbatch - adjusted backoff times for "--wait" option to reduce load on
    slurmctld. This results in a steady-state delay of 32s between queries,
    instead of the prior 10s delay.
