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

Spike: Investigate if we can send data concurrently #2542

Open
tippmar-nr opened this issue Jun 11, 2024 · 1 comment
Open

Spike: Investigate if we can send data concurrently #2542

tippmar-nr opened this issue Jun 11, 2024 · 1 comment

Comments

@tippmar-nr
Copy link
Member

Describe the story, please be clear on scope of the story.

Currently, ConnectionManager uses a primitive synchronization object to control access to the connect / disconnect / reconnect / send data methods. This has the side effect of only allowing a single call to SendDataRequest() at a time, even though there may be multiple event harvests occurring simultaneously.

This spike is to investigate whether a different locking mechanism (such as ReaderWriterLockSlim) could be used to allow multiple SendDataRequest() invocations in parallel, while still blocking send data when a connect / disconnect / reconnect operation is occurring.

There is a poc branch at https://github.com/newrelic/newrelic-dotnet-agent/tree/chore/connection-manager-locking-refactor that has an initial implementation, but questions came up as to how we could properly handle the case of (for example) a reconnect being required as the result of one SendDataRequest() invocation while another invocation was also in progress. Would there be a potential for sending duplicate data to NR or would the second request also possibly initiate a reconnect that we would need to handle if a reconnect was already in progress? There is also a question as to whether other language agents are sending data in parallel or not - if none are, there's probably a good reason for it.

Acceptance Criteria

Spike document that either shows that this idea is infeasible, or a milestone document to lay out how the feature could be implemented.

Estimates

Please provide initial t-shirt size
M

@workato-integration
Copy link

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

1 participant