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

Accept a list of pids from deferred allowance function #7

Merged

Conversation

am-kantox
Copy link
Contributor

@am-kantox am-kantox commented Jul 26, 2024

When working with pools of anonymous workers, one might want to allow all the workers from the whole pool. Again, it mostly makes sense in test environment.

Unfortunately, there is no way to call allow/5 subsequently (as we do with a straightforward, non-deferred calls) because the workers can be resolved as a whole list within the context of the deferred call only.

To satisfy the aforementioned requirement (the contrived use-case might be found here although I understand it’s not the normal way of doing it, but still, pools are widely used and the ability to allow all workers looks natural to me,) this PR proposes the function to lazy resolve the allowances to be permitted to return lists of pids.

-  @spec allow(server(), pid(), pid() | (-> pid()), key()) ::
           :ok | {:error, Error.t()}
+  @spec allow(server(), pid(), pid() | (-> pid()) | (-> [pid()]), key()) ::
           :ok | {:error, Error.t()}

@am-kantox
Copy link
Contributor Author

For coverage, if desired, I might add another test with

fn ->
  [Process.whereis(:lazy_pid_1), :not_a_pid, Process.whereis(:lazy_pid_2)]
end,

@whatyouhide
Copy link
Collaborator

Yeah I can't think of a better way to do this off the top of my head. 👍

lib/nimble_ownership.ex Outdated Show resolved Hide resolved
lib/nimble_ownership.ex Outdated Show resolved Hide resolved
lib/nimble_ownership.ex Outdated Show resolved Hide resolved
lib/nimble_ownership.ex Outdated Show resolved Hide resolved
lib/nimble_ownership.ex Outdated Show resolved Hide resolved
lib/nimble_ownership.ex Outdated Show resolved Hide resolved
@am-kantox
Copy link
Contributor Author

@whatyouhide everything’s applied, coverage fixed; sorry for the mess with multiple commits, squash them or something.

@whatyouhide whatyouhide merged commit 101bae1 into dashbitco:main Jul 29, 2024
3 checks passed
@whatyouhide
Copy link
Collaborator

whatyouhide commented Jul 29, 2024

Thanks @am-kantox 💟

@am-kantox am-kantox deleted the accept-list-of-pids-for-lazy-resolve branch July 30, 2024 07:47
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

Successfully merging this pull request may close these issues.

2 participants