Skip to content

Commit

Permalink
fix: preallocate maps
Browse files Browse the repository at this point in the history
  • Loading branch information
cristaloleg committed Nov 19, 2017
1 parent cb482f0 commit 1e0b4f8
Showing 1 changed file with 8 additions and 8 deletions.
16 changes: 8 additions & 8 deletions sharding/sharding.go
Expand Up @@ -22,14 +22,14 @@ type RingFactory struct {
}

func (rf RingFactory) uniqBackends(regionCfg shardingconfig.RegionConfig) ([]url.URL, error) {
allBackendsSet := make(map[shardingconfig.YAMLUrl]bool)
allBackendsSet := make(map[shardingconfig.YAMLUrl]struct{})
for _, clusterConfig := range regionCfg.Clusters {
clientCluster, err := rf.storages.GetCluster(clusterConfig.Cluster)
if err != nil {
return nil, err
}
for _, backendURL := range clientCluster.Backends {
allBackendsSet[backendURL] = true
allBackendsSet[backendURL] = struct{}{}
}
}
var uniqBackendsSlice []url.URL
Expand All @@ -40,7 +40,7 @@ func (rf RingFactory) uniqBackends(regionCfg shardingconfig.RegionConfig) ([]url
}

func (rf RingFactory) getRegionClusters(regionCfg shardingconfig.RegionConfig) map[string]int {
res := make(map[string]int)
res := make(map[string]int, len(regionCfg.Clusters))
for _, clusterConfig := range regionCfg.Clusters {
res[clusterConfig.Cluster] = int(math.Floor(clusterConfig.Weight * 100))
}
Expand All @@ -60,7 +60,7 @@ func (rf RingFactory) makeClusterMap(clientClusters map[string]int) (map[string]
}

func (rf RingFactory) createRegressionMap(regionConfig shardingconfig.RegionConfig) (map[string]storages.Cluster, error) {
regressionMap := make(map[string]storages.Cluster)
regressionMap := make(map[string]storages.Cluster, len(regionConfig.Clusters))
var previousCluster storages.Cluster
for i, cluster := range regionConfig.Clusters {
clientCluster, err := rf.storages.GetCluster(cluster.Cluster)
Expand Down Expand Up @@ -90,15 +90,15 @@ func (rf RingFactory) RegionRing(regionCfg shardingconfig.RegionConfig) (ShardsR

respHandler := httphandler.LateResponseHandler(rf.conf)

regressionMap, err := rf.createRegressionMap(regionCfg)
if err != nil {
return ShardsRing{}, nil
}
allBackendsRoundTripper := transport.NewMultiTransport(
rf.transport,
allBackendsSlice,
respHandler,
rf.conf.MaintainedBackends)
regressionMap, err := rf.createRegressionMap(regionCfg)
if err != nil {
return ShardsRing{}, nil
}
return ShardsRing{
cHashMap,
shardClusterMap,
Expand Down

0 comments on commit 1e0b4f8

Please sign in to comment.