diff --git a/NEWS b/NEWS
index cde7dbcd4a746cef0ef31d235ae6986fc00e3d21..72482e094b97559ee6f2ec3213177af0d0cc8adc 100644
--- a/NEWS
+++ b/NEWS
@@ -76,6 +76,8 @@ documents those changes that are of interest to users and administrators.
  -- Fix invalid reads of size 1 due to non null-terminated string reads.
  -- Add extra debug2 logs to identify why BadConstraints reason is set.
  -- cons_res/job_test - prevent a job from overallocating a node memory.
+ -- cons_res/job_test - fix to consider a node's current allocated memory when
+    testing a job's memory request.
 
 * Changes in Slurm 18.08.6-2
 ============================
diff --git a/src/plugins/select/cons_res/job_test.c b/src/plugins/select/cons_res/job_test.c
index e19c79a3b08e9da7db07f6e2de1636500aa1977a..304a2c1b220a30ee88b5f8caf755c6d1f73888dc 100644
--- a/src/plugins/select/cons_res/job_test.c
+++ b/src/plugins/select/cons_res/job_test.c
@@ -3910,9 +3910,32 @@ alloc_job:
 		} else if (save_mem)		/* Memory per node */
 			needed_mem = save_mem;
 		else {				/* Allocate all node memory */
+			needed_mem = avail_mem;
+			if (!test_only && (node_usage[i].alloc_memory > 0)) {
+				if (select_debug_flags & DEBUG_FLAG_SELECT_TYPE)
+					info("%s: node %s has already alloc_memory=%"PRIu64". %pJ can't allocate all node memory",
+					     __func__,
+					     select_node_record[i].
+					     node_ptr->name,
+					     node_usage[i].alloc_memory,
+					     job_ptr);
+				error_code = SLURM_ERROR;
+				break;
+			}
 			if ((j == 0) || (lowest_mem > avail_mem))
 				lowest_mem = avail_mem;
-			needed_mem = avail_mem;
+		}
+		if (!test_only && save_mem) {
+			if (node_usage[i].alloc_memory > avail_mem) {
+				error("%s: node %s memory is already overallocated (%"PRIu64" > %"PRIu64"). %pJ can't allocate any node memory",
+				      __func__,
+				      select_node_record[i].node_ptr->name,
+				      node_usage[i].alloc_memory, avail_mem,
+				      job_ptr);
+				error_code = SLURM_ERROR;
+				break;
+			}
+			avail_mem -= node_usage[i].alloc_memory;
 		}
 		if (needed_mem > avail_mem) {
 			if (select_debug_flags & DEBUG_FLAG_SELECT_TYPE)