diff --git a/src/srun/libsrun/allocate.c b/src/srun/libsrun/allocate.c index 4fabd66a719ca483c354c69afcbef90a3cea810c..0d5fc520f6eb0aa99e0712134c8c96c6fad2d7b2 100644 --- a/src/srun/libsrun/allocate.c +++ b/src/srun/libsrun/allocate.c @@ -207,6 +207,16 @@ static bool _retry(void) slurm_strerror(ESLURM_NODES_BUSY)); error_exit = immediate_exit; return false; + } else if ((errno == SLURM_PROTOCOL_AUTHENTICATION_ERROR) || + (errno == SLURM_UNEXPECTED_MSG_ERROR) || + (errno == SLURM_PROTOCOL_INSANE_MSG_LENGTH)) { + static int external_msg_count = 0; + error("Srun communication socket apparently being written to " + "by something other than Slurm"); + if (external_msg_count++ < 4) + return true; + error("Unable to allocate resources: %m"); + return false; } else { error("Unable to allocate resources: %m"); return false;