Project

General

Profile

Actions

Architecture #4778

closed

Optimize promise generation algorithm: Rudder variables lookup

Added by François ARMAND over 10 years ago. Updated over 10 years ago.

Status:
Released
Priority:
1 (highest)
Category:
Performance and scalability
Target version:
Effort required:
Name check:
Fix check:
Regression:

Description

We have the possibility to use Rudder variables in directives in the form of ${rudder.XXXX}, see: http://www.rudder-project.org/foswiki/Development/ContextedVariables

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 ${rudder.common.target.nodeid}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 over 10 years ago

  • Status changed from 13 to 12
Actions #2

Updated by François ARMAND over 10 years ago

  • Status changed from 12 to Pending release
Actions #3

Updated by Vincent MEMBRÉ over 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.

Actions

Also available in: Atom PDF