Skip to content

Commit 8a5b30f

Browse files
committed
keyspace: return copied meta service groups
Signed-off-by: bufferflies <1045931706@qq.com>
1 parent 28bb6b0 commit 8a5b30f

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

pkg/keyspace/meta_service_group.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,11 @@ func (m *MetaServiceGroupManager) AttachEndpoints(keyspaceConfig map[string]stri
158158
func (m *MetaServiceGroupManager) GetGroups() map[string]string {
159159
m.RLock()
160160
defer m.RUnlock()
161-
return m.metaServiceGroups
161+
groups := make(map[string]string, len(m.metaServiceGroups))
162+
for id, endpoints := range m.metaServiceGroups {
163+
groups[id] = endpoints
164+
}
165+
return groups
162166
}
163167

164168
// updateGroups updates currently available meta-service groups.

pkg/keyspace/meta_service_group_test.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,17 @@ func (suite *metaServiceGroupTestSuite) TestUpdateEndpoints() {
156156
re.Equal("foo.bar.local", config[MetaServiceGroupAddressesKey], "should read from updated metaServiceGroups map")
157157
}
158158

159+
func (suite *metaServiceGroupTestSuite) TestGetGroupsReturnsCopy() {
160+
re := suite.Require()
161+
groups := suite.manager.GetGroups()
162+
groups["etcd-group-0"] = "mutated"
163+
delete(groups, "etcd-group-1")
164+
165+
currentGroups := suite.manager.GetGroups()
166+
re.Equal(mockMetaServiceGroups()["etcd-group-0"], currentGroups["etcd-group-0"])
167+
re.Equal(mockMetaServiceGroups()["etcd-group-1"], currentGroups["etcd-group-1"])
168+
}
169+
159170
func (suite *metaServiceGroupTestSuite) TestUpdateEndpointsAndUpdateAssignment() {
160171
re := suite.Require()
161172
// Assign to some existing group

0 commit comments

Comments
 (0)