@@ -52,7 +52,7 @@ func newLabel(org *common.ORG, ln *labelName, lv *labelValue) *label {
5252
5353func (l * label ) store (item * metadbmodel.PrometheusLabel ) {
5454 nameID , ok1 := l .labelName .getID (item .Name )
55- valueID , ok2 := l .labelValue .getID (item .Value )
55+ valueID , ok2 := l .labelValue .getIDSafe (item .Value )
5656 if ! ok1 || ! ok2 {
5757 return
5858 }
@@ -107,7 +107,7 @@ func (l *label) refresh(args ...interface{}) error {
107107 return scanErr
108108 }
109109 nameID , ok1 := l .labelName .getID (name )
110- valueID , ok2 := l .labelValue .getID (value )
110+ valueID , ok2 := l .labelValue .getIDSafe (value )
111111 if ok1 && ok2 {
112112 newMap [cache.IDLabelKey {NameID : nameID , ValueID : valueID }] = id
113113 }
@@ -129,15 +129,13 @@ func (l *label) refresh(args ...interface{}) error {
129129
130130func (l * label ) encode (toAdd []* controller.PrometheusLabelRequest ) ([]* controller.PrometheusLabel , error ) {
131131 l .lock .Lock ()
132- defer l .lock .Unlock ()
133-
134132 resp := make ([]* controller.PrometheusLabel , 0 )
135133 var dbToAdd []* metadbmodel.PrometheusLabel
136134 for _ , item := range toAdd {
137135 n := item .GetName ()
138136 v := item .GetValue ()
139137 nameID , ok1 := l .labelName .getID (n )
140- valueID , ok2 := l .labelValue .getID (v )
138+ valueID , ok2 := l .labelValue .getIDSafe (v )
141139 if ok1 && ok2 {
142140 if id , ok := l .getID (cache.IDLabelKey {NameID : nameID , ValueID : valueID }); ok {
143141 resp = append (resp , & controller.PrometheusLabel {
@@ -153,20 +151,27 @@ func (l *label) encode(toAdd []*controller.PrometheusLabelRequest) ([]*controlle
153151 Value : v ,
154152 })
155153 }
154+ l .lock .Unlock ()
155+
156+ if len (dbToAdd ) == 0 {
157+ return resp , nil
158+ }
156159
157160 err := addBatch (l .org .DB , dbToAdd , l .resourceType )
158161 if err != nil {
159162 log .Errorf ("add %s error: %s" , l .resourceType , err .Error (), l .org .LogPrefix )
160163 return nil , err
161164 }
165+
166+ l .lock .Lock ()
162167 for _ , item := range dbToAdd {
163168 l .store (item )
164169 resp = append (resp , & controller.PrometheusLabel {
165170 Name : & item .Name ,
166171 Value : & item .Value ,
167172 Id : proto .Uint32 (uint32 (item .ID )),
168173 })
169-
170174 }
175+ l .lock .Unlock ()
171176 return resp , nil
172177}
0 commit comments