@@ -40,13 +40,26 @@ func NewChAPPLabel() *ChAPPLabel {
4040
4141func (l * ChAPPLabel ) generateNewData (db * metadb.DB ) (map [PrometheusAPPLabelKey ]metadbmodel.ChAPPLabel , bool ) {
4242 log .Infof ("generate data for %s" , l .resourceTypeName , db .LogPrefixORGID )
43- var prometheusLabels []metadbmodel.PrometheusLabel
44- err := db .Unscoped ().Find (& prometheusLabels ).Error
45-
43+ labelRows , err := db .Unscoped ().Model (& metadbmodel.PrometheusLabel {}).Select ("id" , "name_id" , "value_id" ).Rows ()
4644 if err != nil {
4745 log .Errorf (dbQueryResourceFailed (l .resourceTypeName , err ), db .LogPrefixORGID )
4846 return nil , false
4947 }
48+ defer labelRows .Close ()
49+
50+ var prometheusLabels []metadbmodel.PrometheusLabel
51+ for labelRows .Next () {
52+ var item metadbmodel.PrometheusLabel
53+ if scanErr := labelRows .Scan (& item .ID , & item .NameID , & item .ValueID ); scanErr != nil {
54+ log .Errorf ("stream scan %s prometheus_label interrupted: %v" , l .resourceTypeName , scanErr , db .LogPrefixORGID )
55+ return nil , false
56+ }
57+ prometheusLabels = append (prometheusLabels , item )
58+ }
59+ if err := labelRows .Err (); err != nil {
60+ log .Errorf ("stream read %s prometheus_label error: %v" , l .resourceTypeName , err , db .LogPrefixORGID )
61+ return nil , false
62+ }
5063
5164 _ , ok := l .generateAPPLabelData (db )
5265
@@ -111,29 +124,44 @@ func (l *ChAPPLabel) generateAPPLabelData(db *metadb.DB) ([]string, bool) {
111124func (l * ChAPPLabel ) generateNameIDData (db * metadb.DB ) (map [string ]int , map [string ]int , bool ) {
112125 labelNameIDMap := make (map [string ]int )
113126 valueNameIDMap := make (map [string ]int )
114- var prometheusLabelNames []metadbmodel.PrometheusLabelName
115- var prometheusLabelValues []metadbmodel.PrometheusLabelValue
116-
117- err := db .Unscoped ().Find (& prometheusLabelNames ).Error
118-
127+ nameRows , err := db .Unscoped ().Model (& metadbmodel.PrometheusLabelName {}).Select ("id" , "name" ).Rows ()
119128 if err != nil {
120129 log .Errorf (dbQueryResourceFailed (l .resourceTypeName , err ), db .LogPrefixORGID )
121130 return nil , nil , false
122131 }
132+ defer nameRows .Close ()
133+ for nameRows .Next () {
134+ var id int
135+ var name string
136+ if scanErr := nameRows .Scan (& id , & name ); scanErr != nil {
137+ log .Errorf ("stream scan %s prometheus_label_name interrupted: %v" , l .resourceTypeName , scanErr , db .LogPrefixORGID )
138+ return nil , nil , false
139+ }
140+ labelNameIDMap [name ] = id
141+ }
142+ if err := nameRows .Err (); err != nil {
143+ log .Errorf ("stream read %s prometheus_label_name error: %v" , l .resourceTypeName , err , db .LogPrefixORGID )
144+ return nil , nil , false
145+ }
123146
124- err = db .Unscoped ().Find (& prometheusLabelValues ).Error
125-
147+ valueRows , err := db .Unscoped ().Model (& metadbmodel.PrometheusLabelValue {}).Select ("id" , "value" ).Rows ()
126148 if err != nil {
127149 log .Errorf (dbQueryResourceFailed (l .resourceTypeName , err ), db .LogPrefixORGID )
128150 return nil , nil , false
129151 }
130-
131- for _ , prometheusLabelName := range prometheusLabelNames {
132- labelNameIDMap [prometheusLabelName .Name ] = prometheusLabelName .ID
152+ defer valueRows .Close ()
153+ for valueRows .Next () {
154+ var id int
155+ var value string
156+ if scanErr := valueRows .Scan (& id , & value ); scanErr != nil {
157+ log .Errorf ("stream scan %s prometheus_label_value interrupted: %v" , l .resourceTypeName , scanErr , db .LogPrefixORGID )
158+ return nil , nil , false
159+ }
160+ valueNameIDMap [value ] = id
133161 }
134-
135- for _ , prometheusLabelValue := range prometheusLabelValues {
136- valueNameIDMap [ prometheusLabelValue . Value ] = prometheusLabelValue . ID
162+ if err := valueRows . Err (); err != nil {
163+ log . Errorf ( "stream read %s prometheus_label_value error: %v" , l . resourceTypeName , err , db . LogPrefixORGID )
164+ return nil , nil , false
137165 }
138166 return labelNameIDMap , valueNameIDMap , true
139167}
0 commit comments