From b83005fb65c50ce66f0360c9338f0888d5f0a257 Mon Sep 17 00:00:00 2001
From: Danny Auble <da@llnl.gov>
Date: Tue, 4 May 2010 19:20:57 +0000
Subject: [PATCH] fix for sorting associations correctly now that ids can be
 replayed on different clusters

---
 src/common/slurmdb_defs.c | 22 +++++++++++++---------
 1 file changed, 13 insertions(+), 9 deletions(-)

diff --git a/src/common/slurmdb_defs.c b/src/common/slurmdb_defs.c
index c397a482cff..da1a6dd69f4 100644
--- a/src/common/slurmdb_defs.c
+++ b/src/common/slurmdb_defs.c
@@ -922,7 +922,7 @@ extern List slurmdb_get_hierarchical_sorted_assoc_list(List assoc_list)
 extern List slurmdb_get_acct_hierarchical_rec_list(List assoc_list)
 {
 	slurmdb_hierarchical_rec_t *par_arch_rec = NULL;
-	slurmdb_hierarchical_rec_t *last_slurmdb_parent = NULL;
+	slurmdb_hierarchical_rec_t *last_acct_parent = NULL;
 	slurmdb_hierarchical_rec_t *last_parent = NULL;
 	slurmdb_hierarchical_rec_t *arch_rec = NULL;
 	slurmdb_association_rec_t *assoc = NULL;
@@ -963,22 +963,26 @@ extern List slurmdb_get_acct_hierarchical_rec_list(List assoc_list)
 		else
 			arch_rec->sort_name = assoc->acct;
 
-		if(last_parent && assoc->parent_id == last_parent->assoc->id) {
+		if(last_parent && assoc->parent_id == last_parent->assoc->id
+		   && !strcmp(assoc->cluster, last_parent->assoc->cluster)) {
 			par_arch_rec = last_parent;
-		} else if(last_slurmdb_parent
+		} else if(last_acct_parent
 			  && (assoc->parent_id ==
-			      last_slurmdb_parent->assoc->id)) {
-			par_arch_rec = last_slurmdb_parent;
+			      last_acct_parent->assoc->id)
+			  && !strcmp(assoc->cluster,
+				     last_acct_parent->assoc->cluster)) {
+			par_arch_rec = last_acct_parent;
 		} else {
 			list_iterator_reset(itr2);
 			while((par_arch_rec = list_next(itr2))) {
-				if(assoc->parent_id
-				   == par_arch_rec->assoc->id) {
+				if(assoc->parent_id == par_arch_rec->assoc->id
+				   && !strcmp(assoc->cluster,
+					      par_arch_rec->assoc->cluster)) {
 					if(assoc->user)
 						last_parent = par_arch_rec;
 					else
 						last_parent
-							= last_slurmdb_parent
+							= last_acct_parent
 							= par_arch_rec;
 					break;
 				}
@@ -987,7 +991,7 @@ extern List slurmdb_get_acct_hierarchical_rec_list(List assoc_list)
 
 		if(!par_arch_rec) {
 			list_append(arch_rec_list, arch_rec);
-			last_parent = last_slurmdb_parent = arch_rec;
+			last_parent = last_acct_parent = arch_rec;
 		} else
 			list_append(par_arch_rec->childern, arch_rec);
 
-- 
GitLab