diff --git a/perl-xCAT/xCAT/NodeRange.pm b/perl-xCAT/xCAT/NodeRange.pm index 334d6f724..a4c1a75b7 100644 --- a/perl-xCAT/xCAT/NodeRange.pm +++ b/perl-xCAT/xCAT/NodeRange.pm @@ -397,6 +397,12 @@ sub expandatom { #TODO: implement table selection as an atom (nodetype.os==rhels sub retain_cache { #A semi private operation to be used *ONLY* in the interesting Table<->NodeRange module interactions. $retaincache=shift; + unless ($retaincache) { #take a call to retain_cache(0) to also mean that any existing + #cache must be zapped + if ($nodelist) { $nodelist->_clear_cache(); } + undef $nodelist; + @allnodeset=(); + } } sub extnoderange { #An extended noderange function. Needed as the more straightforward function return format too simple for this. my $range = shift; diff --git a/perl-xCAT/xCAT/Table.pm b/perl-xCAT/xCAT/Table.pm index 453e174f9..68858ea89 100644 --- a/perl-xCAT/xCAT/Table.pm +++ b/perl-xCAT/xCAT/Table.pm @@ -1949,6 +1949,8 @@ sub getAllNodeAttribs xCAT::NodeRange::retain_cache(1); $self->{_use_cache} = 0; $self->{nodelist}->{_use_cache}=0; + $self->_clear_cache(); + $self->{nodelist}->_clear_cache(); $self->_build_cache($attribq); $self->{nodelist}->_build_cache(['node','groups']); $self->{_use_cache} = 1;