yfsn666 opened a new pull request, #12207:
URL: https://github.com/apache/inlong/pull/12207
<!-- Prepare a Pull Request
Change the title of pull request refer to the following example:
[INLONG-XYZ][Component] Title of the pull request
-->
<!-- Specify the issue this pull request going to fix.
The following *XYZ* should be replaced by the actual [GitHub
Issue](https://github.com/apache/inlong/issues) number)-->
Fixes #12200
### Motivation
In the Dataproxy Go SDK, if an OnEndpointUpdate handler calls back into
AddEventHandler/DelEventHandler/GetEndpoints from within the Manager-based or
DNS discoverer's lookup, the same goroutine re-enters the discoverer's RWMutex
and deadlocks.
### Modifications
In both the Manager-based discoverer (`dataproxy/discoverer.go`) and the DNS
discoverer (`discoverer/dns.go`), copy the handler list while holding the read
lock, release the lock, and only then invoke the `OnEndpointUpdate` callbacks.
### Verifying this change
*(Please pick either of the following options)*
- [x] This change is a trivial rework/code cleanup without any test coverage.
- [ ] This change is already covered by existing tests, such as:
*(please describe tests)*
- [ ] This change added tests and can be verified as follows:
*(example:)*
- *Added integration tests for end-to-end deployment with large payloads
(10MB)*
- *Extended integration test for recovery after broker failure*
### Documentation
- Does this pull request introduce a new feature? no
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]