Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Fleet] Update .fleet-agent on policy change ack even without ES output #2119

Merged

Conversation

nchaulet
Copy link
Member

@nchaulet nchaulet commented Nov 24, 2022

Description

Resolve #2105

Fleet server update the .fleet-agent document when an agent ack a policy change, there was a bug introduced where the document was only updated if the agent had one Elasticsearch output, so for agent with only logstash the revision was never updated, and the agent stayed in out of date in the Fleet UI.

That PR fix that.

@elasticmachine
Copy link
Contributor

elasticmachine commented Nov 24, 2022

💚 Build Succeeded

the below badges are clickable and redirect to their specific view in the CI or DOCS
Pipeline View Test View Changes Artifacts preview preview

Expand to view the summary

Build stats

  • Start Time: 2022-12-07T14:05:13.278+0000

  • Duration: 12 min 18 sec

Test stats 🧪

Test Results
Failed 0
Passed 393
Skipped 1
Total 394

💚 Flaky test report

Tests succeeded.

🤖 GitHub comments

Expand to view the GitHub comments

To re-run your PR in the CI, just comment with:

  • /test : Re-trigger the build.

@nchaulet nchaulet force-pushed the fix-2105-update-agent-on-policy-change-ack branch from 7e4ab94 to 6fa4b9e Compare November 24, 2022 17:13
@nchaulet nchaulet self-assigned this Nov 29, 2022
@nchaulet nchaulet marked this pull request as ready for review November 29, 2022 17:56
@nchaulet nchaulet requested review from a team as code owners November 29, 2022 17:56
internal/pkg/api/handleAck.go Outdated Show resolved Hide resolved
Comment on lines 341 to 344
err := ack.updateAgentDoc(ctx, zlog,
agent.Id,
currRev, currCoord,
agent.PolicyID)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Blocker]
I'm wondering if there could be a problem doing it here, before updating the API keys.
Did you test the case when something fails after this call, but before the method returns?

I think it'd be safer to move it to the end of the method to keep the implementation closer to what it was.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not saying you need to change, but I'm not sure if doing it here could be a problem.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

another thing, do you think you could add a test to endure:

  • the document is updated
  • updateAgentDoc is called in the right moment

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it's better to update the agent doc to know which policy it's running even if we fail to invalidate retired API keys, what do you think?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we might run into trouble. The agent document would state policy x+1, but the API keys would have permission for policy x. I cannot access the impact of it, but I don't think it's a good thing regardless of the impact.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let me ask if someone in my team can foresee any issue with either option

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

from what I understand the code here after is invalidating old API keys, I think the worse case scenario will be: The agent document would state policy x+1, with old API keys still valid.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't get any extra input from the team. However I'm still believe it isn't the best idea. It might cause the policy to do not be properly updated later. As the policy will be in the right revision, fleet-server will consider there is nothing to be done, whereas there is.

It'll keep the data more consistent if we have it back where it was

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just updated

@nchaulet nchaulet requested a review from AndersonQ November 30, 2022 16:05
Comment on lines 341 to 344
err := ack.updateAgentDoc(ctx, zlog,
agent.Id,
currRev, currCoord,
agent.PolicyID)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't get any extra input from the team. However I'm still believe it isn't the best idea. It might cause the policy to do not be properly updated later. As the policy will be in the right revision, fleet-server will consider there is nothing to be done, whereas there is.

It'll keep the data more consistent if we have it back where it was

@nchaulet nchaulet requested a review from AndersonQ December 5, 2022 14:28
@sonarqubecloud
Copy link

sonarqubecloud bot commented Dec 7, 2022

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 0 Code Smells

No Coverage information No Coverage information
0.0% 0.0% Duplication

@nchaulet nchaulet merged commit e7fe0a7 into elastic:main Dec 7, 2022
@nchaulet nchaulet deleted the fix-2105-update-agent-on-policy-change-ack branch December 7, 2022 14:26
@AndersonQ AndersonQ added backport-v8.6.0 Automated backport with mergify and removed v8.6.0 labels Jan 11, 2023
mergify bot pushed a commit that referenced this pull request Jan 11, 2023
mergify bot added a commit that referenced this pull request Jan 11, 2023
…ut (#2119) (#2267)

(cherry picked from commit e7fe0a7)

Co-authored-by: Nicolas Chaulet <[email protected]>
@lucabelluccini
Copy link
Contributor

For anyone interested in this - this didn't make it into 8.6.0 - it will be available in 8.6.1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backport-v8.6.0 Automated backport with mergify v8.7.0
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Fleet] policy_revision_idx is not updated on policy change ack for policy without Elasticsearch output
4 participants