wyf027 opened a new pull request, #3494: URL: https://github.com/apache/dubbo-go/pull/3494
Fixes #3248 ## Summary - clone exported and subscribed URLs on ingress and return detached URL snapshots from public getters - keep each stored service and its exported-URL index on the same owned URL while isolating caller mutations - deep-copy ServiceInfo params and URL containers without initializing lazy keys on the source - use read locking for service snapshots now that copy operations are read-only - cover add/replace/getter ownership, nested URL state, shallow attribute-value boundaries, lazy fields, and concurrent mutation ## Scope This PR makes URL containers, params, methods, nested URLs, and attribute maps structurally independent. Arbitrary mutable attribute values retain the shallow-copy behavior defined by common.URL.Clone. ## Testing - `go test ./metadata/info -count=20` - `go test -race ./metadata/info -count=10` - `go test ./metadata/... -count=1` - `go test -race ./metadata/... -count=1` - `go test ./registry/servicediscovery -run 'TestServiceDiscoveryRegistryUnRegister(ServicePartialFailSyncsMetadata|WithoutTrackedInstancesReconcilesMetadata)$' -count=20` - `go test -race ./registry/servicediscovery -run 'TestServiceDiscoveryRegistryUnRegister(ServicePartialFailSyncsMetadata|WithoutTrackedInstancesReconcilesMetadata)$' -count=10` - `go test ./registry/servicediscovery -count=1` - `go vet ./metadata/...` - `golangci-lint run ./metadata/... ./registry/servicediscovery --timeout=10m` - `make check-fmt` - `make test` ## Checklist - [x] Target branch is `develop` - [x] New behavior is covered by tests - [x] Formatting, lint, race, and full test suites pass locally - [x] Commit includes a Signed-off-by trailer -- 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] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
