@@ -1115,16 +1115,18 @@ func (s *Server) graphiteTagDelSeries(ctx *middleware.Context, request models.Gr
1115
1115
}
1116
1116
1117
1117
data := models.IndexTagDelSeries {OrgId : ctx .OrgId , Paths : request .Paths }
1118
- responses , err := s .peerQuery (ctx .Req .Context (), data , "clusterTagDelSeries," , "/index/tags/delSeries" )
1119
- if err != nil {
1118
+ responses , errors := s .peerQuery (ctx .Req .Context (), data , "clusterTagDelSeries," , "/index/tags/delSeries" )
1119
+
1120
+ // if there are any errors, write one of them and return
1121
+ for _ , err := range errors {
1120
1122
response .Write (ctx , response .WrapErrorForTagDB (err ))
1121
1123
return
1122
1124
}
1123
1125
1124
1126
res .Peers = make (map [string ]int , len (responses ))
1125
1127
peerResp := models.IndexTagDelSeriesResp {}
1126
1128
for peer , resp := range responses {
1127
- _ , err = peerResp .UnmarshalMsg (resp .buf )
1129
+ _ , err : = peerResp .UnmarshalMsg (resp .buf )
1128
1130
if err != nil {
1129
1131
response .Write (ctx , response .WrapErrorForTagDB (err ))
1130
1132
return
@@ -1191,16 +1193,71 @@ func (s *Server) getMetaTagRecord(ctx *middleware.Context) {
1191
1193
response .Write (ctx , response .NewJson (200 , metaTagRecords , "" ))
1192
1194
}
1193
1195
1194
- func (s * Server ) metaTagRecordUpsert (ctx * middleware.Context , metaTagRecord models.MetaTagRecord ) {
1196
+ func (s * Server ) metaTagRecordUpsert (ctx * middleware.Context , upsertRequest models.MetaTagRecordUpsert ) {
1195
1197
record := idx.MetaTagRecord {
1196
- MetaTags : metaTagRecord .MetaTags ,
1197
- Queries : metaTagRecord . TagQueries ,
1198
+ MetaTags : upsertRequest .MetaTags ,
1199
+ Queries : upsertRequest . Queries ,
1198
1200
}
1199
1201
1200
- result , err := s .MetricIndex .MetaTagRecordUpsert (ctx .OrgId , record )
1201
- if err != nil {
1202
- response .Write (ctx , response .NewError (http .StatusBadRequest , err .Error ()))
1202
+ var localResult idx.MetaTagRecord
1203
+ var created bool
1204
+ if s .MetricIndex != nil {
1205
+ var err error
1206
+ localResult , created , err = s .MetricIndex .MetaTagRecordUpsert (ctx .OrgId , record )
1207
+ if err != nil {
1208
+ response .Write (ctx , response .NewError (http .StatusBadRequest , err .Error ()))
1209
+ return
1210
+ }
1211
+
1212
+ if ! upsertRequest .Propagate {
1213
+ response .Write (ctx , response .NewJson (200 , models.MetaTagRecordUpsertResult {
1214
+ MetaTags : localResult .MetaTags ,
1215
+ Queries : localResult .Queries ,
1216
+ ID : localResult .ID ,
1217
+ Created : created ,
1218
+ }, "" ))
1219
+ return
1220
+ }
1221
+ } else if ! upsertRequest .Propagate {
1222
+ return
1203
1223
}
1204
1224
1205
- response .Write (ctx , response .NewJson (200 , result , "" ))
1225
+ indexUpsertRequest := models.IndexMetaTagRecordUpsert {
1226
+ OrgId : ctx .OrgId ,
1227
+ MetaTags : upsertRequest .MetaTags ,
1228
+ Queries : upsertRequest .Queries ,
1229
+ }
1230
+
1231
+ results , errors := s .peerQuery (ctx .Req .Context (), indexUpsertRequest , "metaTagRecordUpsert" , "/index/metaTags/upsert" )
1232
+
1233
+ res := models.MetaTagRecordUpsertResultByNode {
1234
+ Local : models.MetaTagRecordUpsertResult {
1235
+ MetaTags : localResult .MetaTags ,
1236
+ Queries : localResult .Queries ,
1237
+ ID : localResult .ID ,
1238
+ Created : created ,
1239
+ },
1240
+ }
1241
+
1242
+ if len (errors ) > 0 {
1243
+ res .PeerErrors = make (map [string ]string , len (errors ))
1244
+ for peer , err := range errors {
1245
+ res .PeerErrors [peer ] = err .Error ()
1246
+ }
1247
+ }
1248
+
1249
+ if len (results ) > 0 {
1250
+ res .PeerResults = make (map [string ]models.MetaTagRecordUpsertResult , len (results ))
1251
+ for peer , resp := range results {
1252
+ peerResp := models.MetaTagRecordUpsertResult {}
1253
+ _ , err := peerResp .UnmarshalMsg (resp .buf )
1254
+ if err != nil {
1255
+ res .PeerErrors [peer ] = fmt .Sprintf ("Error when unmarshaling response: %s" , err .Error ())
1256
+ continue
1257
+ }
1258
+ res .PeerResults [peer ] = peerResp
1259
+ }
1260
+ }
1261
+
1262
+ response .Write (ctx , response .NewJson (200 , res , "" ))
1206
1263
}
0 commit comments