Skip to content

ENT-14194 2. Reset classes and variables between "then" bundle runs in cf-reactor - #6375

Open
victormlg wants to merge 1 commit into
cfengine:masterfrom
victormlg:cf-reactor.ResetVarClasses
Open

victormlg wants to merge 1 commit into
cfengine:masterfrom
victormlg:cf-reactor.ResetVarClasses

Conversation

@victormlg

@victormlg victormlg commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

Classes that are defined inside a then bundle can stay defined between runs, even though the condition is not true anymore:

Exemple:

body when file_deleted(filename)
{
  file_deleted => "$(filename)";
}

bundle agent check_marker(file)
{
  classes:
    "marker_exists" expression => fileexists("/tmp/marker"), scope => "namespace";

  files:
    "$(file)" create => "true";

  reports:
    marker_exists::
      "marker exists";
    !marker_exists::
      "marker does not exist";
}

bundle reactor event_handler
{
  vars:
    "Z" string => "/tmp/a";

  events:
    "Watch /tmp/a"
      when => file_deleted("$(Z)"),
      then => check_marker("$(Z)");
}
  • 1st event: /tmp/marker exists, marker_exists is defined
  • delete /tmp/marker
  • 2nd event: /tmp/marker doesn't exists, marker_exists is still defined

Persistent classes should not be deleted

Comment thread cf-agent/agent_operations.c Fixed
Comment thread cf-reactor/reactor_transform.c Fixed
@victormlg
victormlg marked this pull request as draft October 5, 2026 12:07
The issue is that classes and variables declared once will stay declared until the next policy
reload. So a class can stay defined between runs, when the state it checks changed.
Instead, the state of all vars and classes is saved in a snapshot before every event, and restored
once the event is handled. Persistent classes are left out and loaded from the state database at
every event, so they stay defined across runs until they expire, as in cf-agent.

Signed-off-by: Victor Moene <victor.moene@northern.tech>
@victormlg
victormlg force-pushed the cf-reactor.ResetVarClasses branch from 67bd500 to 323b383 Compare October 7, 2026 14:37
@victormlg
victormlg marked this pull request as ready for review October 7, 2026 14:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants