@@ -75,90 +75,65 @@ func (l *localityInfo) IsSet(param uint32) bool {
75
75
}
76
76
77
77
type LocalityCache struct {
78
- mutex sync.RWMutex
79
- localityInfo localityInfo
80
- isLocalityInfoSet bool
81
- workloadWaitQueue map [string ]struct {} // workload.GetUid()
78
+ mutex sync.RWMutex
79
+ LocalityInfo * localityInfo
82
80
}
83
81
84
82
func NewLocalityCache () LocalityCache {
85
83
return LocalityCache {
86
- localityInfo : localityInfo {},
87
- isLocalityInfoSet : false ,
88
- workloadWaitQueue : make (map [string ]struct {}),
84
+ LocalityInfo : nil ,
89
85
}
90
86
}
91
87
92
88
func (l * LocalityCache ) SetLocality (nodeName , clusterId , network string , locality * workloadapi.Locality ) {
93
- // notice: nodeName should set by processor or os.Getenv("NODE_NAME"),
94
- l .localityInfo .Set (nodeName , NODENAME )
95
- l .localityInfo .Set (locality .GetRegion (), REGION )
96
- l .localityInfo .Set (locality .GetSubzone (), SUBZONE )
97
- l .localityInfo .Set (locality .GetZone (), ZONE )
98
- l .localityInfo .Set (clusterId , CLUSTERID )
99
- l .localityInfo .Set (network , NETWORK )
100
-
101
- l .isLocalityInfoSet = true
102
- }
89
+ if l .LocalityInfo == nil {
90
+ l .LocalityInfo = & localityInfo {}
91
+ }
103
92
104
- func (l * LocalityCache ) IsLocalityInfoSet () bool {
105
- log .Debugf ("isLocalityInfoSet: %#v" , l .isLocalityInfoSet )
106
- return l .isLocalityInfoSet
93
+ // notice: nodeName should set by processor or os.Getenv("NODE_NAME"),
94
+ l .LocalityInfo .Set (nodeName , NODENAME )
95
+ l .LocalityInfo .Set (locality .GetRegion (), REGION )
96
+ l .LocalityInfo .Set (locality .GetSubzone (), SUBZONE )
97
+ l .LocalityInfo .Set (locality .GetZone (), ZONE )
98
+ l .LocalityInfo .Set (clusterId , CLUSTERID )
99
+ l .LocalityInfo .Set (network , NETWORK )
107
100
}
108
101
109
- func (l * LocalityCache ) CalcuLocalityLBPrio (wl * workloadapi.Workload , rp []workloadapi.LoadBalancing_Scope ) uint32 {
102
+ func (l * LocalityCache ) CalcLocalityLBPrio (wl * workloadapi.Workload , rp []workloadapi.LoadBalancing_Scope ) uint32 {
110
103
var rank uint32 = 0
111
104
for _ , scope := range rp {
112
105
switch scope {
113
106
case workloadapi .LoadBalancing_REGION :
114
- log .Debugf ("l.localityInfo.IsSet(REGION) %#v, Valid(wl.GetLocality().GetRegion()) %#v, l.localityInfo. region %#v, wl.GetLocality().GetRegion() %#v" , l .localityInfo . IsSet ( REGION ), Valid ( wl . GetLocality (). GetRegion ()), l . localityInfo .region , wl .GetLocality ().GetRegion ())
115
- if l .localityInfo . IsSet ( REGION ) && Valid ( wl . GetLocality (). GetRegion ()) && l . localityInfo .region == wl .GetLocality ().GetRegion () {
107
+ log .Debugf ("l.LocalityInfo. region %#v, wl.GetLocality().GetRegion() %#v" , l .LocalityInfo .region , wl .GetLocality ().GetRegion ())
108
+ if l .LocalityInfo .region == wl .GetLocality ().GetRegion () {
116
109
rank ++
117
110
}
118
111
case workloadapi .LoadBalancing_ZONE :
119
- log .Debugf ("l.localityInfo.IsSet(ZONE) %#v, Valid(wl.GetLocality().GetZone()) %#v, l.localityInfo. zone %#v, wl.GetLocality().GetZone() %#v" , l .localityInfo . IsSet ( ZONE ), Valid ( wl . GetLocality (). GetZone ()), l . localityInfo .zone , wl .GetLocality ().GetZone ())
120
- if l .localityInfo . IsSet ( ZONE ) && Valid ( wl . GetLocality (). GetZone ()) && l . localityInfo .zone == wl .GetLocality ().GetZone () {
112
+ log .Debugf ("l.LocalityInfo. zone %#v, wl.GetLocality().GetZone() %#v" , l .LocalityInfo .zone , wl .GetLocality ().GetZone ())
113
+ if l .LocalityInfo .zone == wl .GetLocality ().GetZone () {
121
114
rank ++
122
115
}
123
116
case workloadapi .LoadBalancing_SUBZONE :
124
- log .Debugf ("l.localityInfo.IsSet(SUBZONE) %#v, Valid(wl.GetLocality().GetSubzone()) %#v, l.localityInfo. subZone %#v, wl.GetLocality().GetSubzone() %#v" , l .localityInfo . IsSet ( SUBZONE ), Valid ( wl . GetLocality (). GetSubzone ()), l . localityInfo .subZone , wl .GetLocality ().GetSubzone ())
125
- if l .localityInfo . IsSet ( SUBZONE ) && Valid ( wl . GetLocality (). GetSubzone ()) && l . localityInfo .subZone == wl .GetLocality ().GetSubzone () {
117
+ log .Debugf ("l.LocalityInfo. subZone %#v, wl.GetLocality().GetSubzone() %#v" , l .LocalityInfo .subZone , wl .GetLocality ().GetSubzone ())
118
+ if l .LocalityInfo .subZone == wl .GetLocality ().GetSubzone () {
126
119
rank ++
127
120
}
128
121
case workloadapi .LoadBalancing_NODE :
129
- log .Debugf ("l.localityInfo.IsSet(NODENAME) %#v, Valid(wl.GetNode()) %#v, l.localityInfo. nodeName %#v, wl.GetNode() %#v" , l .localityInfo . IsSet ( NODENAME ), Valid ( wl . GetNode ()), l . localityInfo .nodeName , wl .GetNode ())
130
- if l .localityInfo . IsSet ( NODENAME ) && Valid ( wl . GetNode ()) && l . localityInfo .nodeName == wl .GetNode () {
122
+ log .Debugf ("l.LocalityInfo. nodeName %#v, wl.GetNode() %#v" , l .LocalityInfo .nodeName , wl .GetNode ())
123
+ if l .LocalityInfo .nodeName == wl .GetNode () {
131
124
rank ++
132
125
}
133
126
case workloadapi .LoadBalancing_NETWORK :
134
- log .Debugf ("l.localityInfo.IsSet(NETWORK) %#v, Valid(wl.GetNetwork()) %#v, l.localityInfo. network %#v, wl.GetNetwork() %#v" , l .localityInfo . IsSet ( NETWORK ), Valid ( wl . GetNetwork ()), l . localityInfo .network , wl .GetNetwork ())
135
- if l .localityInfo . IsSet ( NETWORK ) && Valid ( wl . GetNetwork ()) && l . localityInfo .network == wl .GetNetwork () {
127
+ log .Debugf ("l.LocalityInfo. network %#v, wl.GetNetwork() %#v" , l .LocalityInfo .network , wl .GetNetwork ())
128
+ if l .LocalityInfo .network == wl .GetNetwork () {
136
129
rank ++
137
130
}
138
131
case workloadapi .LoadBalancing_CLUSTER :
139
- log .Debugf ("l.localityInfo.IsSet(CLUSTERID) %#v, Valid(wl.GetClusterId()) %#v, l.localityInfo. clusterId %#v, wl.GetClusterId() %#v" , l .localityInfo . IsSet ( CLUSTERID ), Valid ( wl . GetClusterId ()), l . localityInfo .clusterId , wl .GetClusterId ())
140
- if l .localityInfo . IsSet ( CLUSTERID ) && Valid ( wl . GetClusterId ()) && l . localityInfo .clusterId == wl .GetClusterId () {
132
+ log .Debugf ("l.LocalityInfo. clusterId %#v, wl.GetClusterId() %#v" , l .LocalityInfo .clusterId , wl .GetClusterId ())
133
+ if l .LocalityInfo .clusterId == wl .GetClusterId () {
141
134
rank ++
142
135
}
143
136
}
144
137
}
145
138
return uint32 (len (rp )) - rank
146
139
}
147
-
148
- func (l * LocalityCache ) SaveToWaitQueue (wl * workloadapi.Workload ) {
149
- l .mutex .Lock ()
150
- defer l .mutex .Unlock ()
151
- l .workloadWaitQueue [wl .Uid ] = struct {}{}
152
- }
153
-
154
- func (l * LocalityCache ) DelWorkloadFromWaitQueue (wl * workloadapi.Workload ) {
155
- l .mutex .Lock ()
156
- defer l .mutex .Unlock ()
157
- delete (l .workloadWaitQueue , wl .Uid )
158
- }
159
-
160
- func (l * LocalityCache ) GetFromWaitQueue () map [string ]struct {} {
161
- l .mutex .Lock ()
162
- defer l .mutex .Unlock ()
163
- return l .workloadWaitQueue
164
- }
0 commit comments