Architecture #4778


Optimize promise generation algorithm: Rudder variables lookup

Added by François ARMAND about 10 years ago. Updated almost 10 years ago.

Performance and scalability
Target version:
Effort required:
Name check:
Fix check:


We have the possibility to use Rudder variables in directives in the form of ${rudder.XXXX}, see:

Today, everything around these variables lookup is ad-hoc and inefficient, or even not sound.
So the whole variable analisys and lookup is higly inefficient and error prone (and so, we added even more inefficiencies to managed the error proness).

The main points are:

- there is dead code or code that serve the same goal duplicated in several points (typical example: CLIENTSLIST and MANAGED_NODE_HOSTS are two variables with the same content, calculated in two different ways)
- variable parsing is higly ineficient: it's done by regex for EACH node, for EACH directive, in place of having a one-time parsing, and only lookup for each node/directive
- the ${rudder.ruleID....} kind of variable make no sense today (complexity, efficiency), can even arms future Rudder evolution (authorizations), and is only used internally (in 2 or 3 places): remove that variable kind and replace its internal use with ad-hoc, efficient implementations.

Subtasks 4 (0 open4 closed)

Architecture #4779: Remove CLIENTSLIST system variable (Scala code)ReleasedNicolas CHARLES2014-04-29Actions
Architecture #4780: Remove CLIENTSLIST system variable (technique)ReleasedNicolas CHARLES2014-04-29Actions
Architecture #4781: Remove rule variable kind: {rudder.ruleid.XXX} ReleasedNicolas CHARLES2014-04-29Actions
Architecture #4782: Split rudder variable parsing and variable bindingReleasedNicolas CHARLES2014-04-29Actions

Related issues 3 (0 open3 closed)

Related to Rudder - User story #4786: Remove CLIENTSLIST system variable (Scala code - cf-clerk)ReleasedNicolas CHARLES2014-04-29Actions
Is duplicate of Rudder - Architecture #4585: Remove Rule-dependant parameters like ${}Rejected2014-03-11Actions
Is duplicate of Rudder - Bug #4584: Building node configuration in the promise generation process takes a lot of timeRejected2014-03-11Actions
Actions #1

Updated by François ARMAND about 10 years ago

  • Status changed from 13 to 12
Actions #2

Updated by François ARMAND about 10 years ago

  • Status changed from 12 to Pending release
Actions #3

Updated by Vincent MEMBRÉ almost 10 years ago

  • Status changed from Pending release to Released

This bug has been fixed in Rudder 2.11.0~beta1 that was released yesterday.


Also available in: Atom PDF