Architecture #4585


Remove Rule-dependant parameters like ${}

Added by François ARMAND about 9 years ago. Updated about 9 years ago.

Performance and scalability
Target version:
Effort required:


We have a mostly unknown and unused feature in the parameter expansion allowing to refer a rule ID and then some of its property as a parameter.

That feature was only used for the common system technique, to allow to use technique section and variable to be used to build the list of children node id of a policy server. But we didn't had all the needed information to be able to implement relay server, and so we chose to use a system variable.

Moreover, the feature is quite complex:

- from an user point of view, because it breaks the natural ordering of Rudder configuration object between rules, groups and directives. In particular, when using it, it's quite easy to introduce cycle leading to unsoundness or to completly unwanted side-effects when modifying something that seems complettly independant, but has an hidden dependency
- from a code point of wiew, because it makes impossible to build static dependency graph between directives and rules, and so forbid a whole class of optimization in the promise generation process (and of course, the code to support that feature is quite hairy and impose in itself both a maintenance penalty for dev and a processing time penalty for users).
- from an evolution point of view, it makes any kind of autorization scheme almost impossible to build efficiently (or at all).

So, now that #4573 is merged and no technique use that feature anymore, we should also remove that "feature".

Remain the question of the removing timeframe. We should deprecate it for one revision before removing it, and so only mark it "deprecated" in 2.10, even if I'm pretty sure that nobody use that feature (even the available documentation at is not correct about it...)

Related issues 2 (0 open2 closed)

Related to Rudder - Bug #4584: Building node configuration in the promise generation process takes a lot of timeRejected2014-03-11Actions
Has duplicate Rudder - Architecture #4778: Optimize promise generation algorithm: Rudder variables lookupReleasedFrançois ARMAND2014-04-29Actions
Actions #1

Updated by François ARMAND about 9 years ago

  • Description updated (diff)

We will have to be very careful of the use of that notation directly in some system vars code. As of 2.10, there seems to have some strange things like that in SystemVariableServiceImpl (see:

Actions #2

Updated by Vincent MEMBRÉ about 9 years ago

  • Target version changed from 2.10.0~beta1 to 2.10.0
Actions #3

Updated by Nicolas CHARLES about 9 years ago

indeed, we will need to change this. fortunately, with the allNodeInfos, we already have everything handy, and we could drop the target selector

Actions #4

Updated by Vincent MEMBRÉ about 9 years ago

  • Target version changed from 2.10.0 to 2.11.0~beta1
Actions #5

Updated by François ARMAND about 9 years ago

  • Status changed from New to Rejected

Duplicated by #4778


Also available in: Atom PDF