Skip to content

fix: use pointer receivers for piped protobuf models - #7174

Open
srinivasr wants to merge 2 commits into
pipe-cd:masterfrom
srinivasr:fix/copylock-piped
Open

fix: use pointer receivers for piped protobuf models#7174
srinivasr wants to merge 2 commits into
pipe-cd:masterfrom
srinivasr:fix/copylock-piped

Conversation

@srinivasr

Copy link
Copy Markdown

What this PR does:
generated protobuf structs like applicationsyncstate embed a sync.mutex. because their methods were using value receivers, the lock state was being copied every time they were called or passed around (flagged by go vet).

fix:

  • change methods on applicationsyncstate and applicationlivestateversion to use pointer receivers
  • update all caller sites in driftdetector and livestatestore to pass pointers
  • convert range loops in tests to index loops to avoid copying test structs

Why we need it:
passing mutexes by value creates silent data races under concurrent execution because the copies do not block each other.

Which issue(s) this PR fixes:

Fixes # N/A

Does this PR introduce a user-facing change?:

  • How are users affected by this change: no user-facing change.
  • Is this breaking change: no.
  • How to migrate (if breaking change): n/a

generated protobuf structs like applicationsyncstate embed a sync.mutex.
because their methods were using value receivers, the lock state was
being copied every time they were called or passed around.

fix:
- change methods on applicationsyncstate and applicationlivestateversion
  to use pointer receivers
- update all caller sites in driftdetector and livestatestore to pass pointers
- convert range loops in tests to index loops to avoid copying test structs

Signed-off-by: srinivasr <sriniv4sreddy@gmail.com>
@srinivasr
srinivasr requested a review from a team as a code owner August 13, 2026 18:06
@github-actions

Copy link
Copy Markdown
Contributor

👋 Hi @srinivasr, welcome to PipeCD and thanks for opening your first pull request!

We’re really happy to have you here

Before your PR gets merged, please check a few important things below.


Helpful resources


DCO Sign-off

All commits must include a Signed-off-by line to comply with the Developer Certificate of Origin (DCO).

In case you forget to sign-off your commit(s), follow these steps:

For the last commit:

git commit --amend --signoff
git push --force-with-lease

For multiple commits:

git rebase --signoff origin/master
git push --force-with-lease

Run checks locally

Before pushing updates, please run:

make check

This runs the same checks as CI and helps catch issues early.


💬 Need help?

If anything is unclear, feel free to ask in this PR or join us on the CNCF Slack in the #pipecd channel.
You can get your Slack invite from: https://communityinviter.com/apps/cloud-native/cncf

Thanks for contributing to PipeCD! ❤️

@netlify

netlify Bot commented Aug 15, 2026

Copy link
Copy Markdown

Deploy Preview for pipecd-site canceled.

Name Link
🔨 Latest commit da190c9
🔍 Latest deploy log https://app.netlify.com/projects/pipecd-site/deploys/6a7fdea1fe7c0100083cdb3f

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant