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

req.context values shared between different payload.find*() calls if req gets passed #10250

Open
cbratschi opened this issue Dec 30, 2024 · 2 comments
Assignees

Comments

@cbratschi
Copy link

Describe the Bug

Let me first start with the reproduction case before getting into more details:

  • First start a payload.find() over a collection with several matching documents.
    • Context is empty here.
  • Payload fetches all documents and executes all collection hooks for those documents.
    • In a collection hook we call payload.findById({ context: { value: 5 }, req }). A context value is set and req is passed (using shared transactions for instance).
    • So far so good for the first document of the payload.find() operation but in the hooks for the second and later documents context.value is now 5 right away.

Payload should not use the same context object through all hook operations. Context values passed to sub operations should not influence the context values are previous or still ongoing operations like the payload.find() one.

Link to the code that reproduces this issue

https://github.com/cbratschi/payload

Reproduction Steps

See above.

Which area(s) are affected? (Select all that apply)

area: core

Environment Info

Binaries:
  Node: 22.12.0
  npm: 10.9.0
  Yarn: 1.22.22
  pnpm: N/A
Relevant Packages:
  payload: 3.12.0
Operating System:
  Platform: darwin
  Arch: arm64
  Version: Darwin Kernel Version 24.1.0: Thu Oct 10 21:05:23 PDT 2024; root:xnu-11215.41.3~2/RELEASE_ARM64_T6031
  Available memory (MB): 65536
  Available CPU cores: 16
@cbratschi cbratschi added status: needs-triage Possible bug which hasn't been reproduced yet validate-reproduction labels Dec 30, 2024
@github-actions github-actions bot removed the status: needs-triage Possible bug which hasn't been reproduced yet label Dec 30, 2024
@jmikrut
Copy link
Member

jmikrut commented Dec 30, 2024

On first glance, this makes sense to me. You want the context to follow through explicitly where you passed it, but right now, it's shared across all operations.

We will need to think through this one to make sure that we can change this without any negative repercussions.

@r1tsuu let's think through this a bit!

@cbratschi
Copy link
Author

Could you please also have a look at: #9960

This issue caused me a lot of headache and still need to patch every Payload version. Related to hook handling too and easy to fix.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants