ValidateMetadata returns an err if a metric metadata is invalid.
(validateMetrics *ValidateMetrics, cfg *Limits, userID string, metadata *cortexpb.MetricMetadata)
| 342 | |
| 343 | // ValidateMetadata returns an err if a metric metadata is invalid. |
| 344 | func ValidateMetadata(validateMetrics *ValidateMetrics, cfg *Limits, userID string, metadata *cortexpb.MetricMetadata) error { |
| 345 | if cfg.EnforceMetadataMetricName && metadata.GetMetricFamilyName() == "" { |
| 346 | validateMetrics.DiscardedMetadata.WithLabelValues(missingMetricName, userID).Inc() |
| 347 | return httpgrpc.Errorf(http.StatusBadRequest, errMetadataMissingMetricName) |
| 348 | } |
| 349 | |
| 350 | maxMetadataValueLength := cfg.MaxMetadataLength |
| 351 | var reason string |
| 352 | var cause string |
| 353 | var metadataType string |
| 354 | if len(metadata.GetMetricFamilyName()) > maxMetadataValueLength { |
| 355 | metadataType = typeMetricName |
| 356 | reason = metricNameTooLong |
| 357 | cause = metadata.GetMetricFamilyName() |
| 358 | } else if len(metadata.Help) > maxMetadataValueLength { |
| 359 | metadataType = typeHelp |
| 360 | reason = helpTooLong |
| 361 | cause = metadata.Help |
| 362 | } else if len(metadata.Unit) > maxMetadataValueLength { |
| 363 | metadataType = typeUnit |
| 364 | reason = unitTooLong |
| 365 | cause = metadata.Unit |
| 366 | } |
| 367 | |
| 368 | if reason != "" { |
| 369 | validateMetrics.DiscardedMetadata.WithLabelValues(reason, userID).Inc() |
| 370 | return httpgrpc.Errorf(http.StatusBadRequest, errMetadataTooLong, metadataType, cause, metadata.GetMetricFamilyName()) |
| 371 | } |
| 372 | |
| 373 | return nil |
| 374 | } |
| 375 | |
| 376 | func ValidateNativeHistogram(validateMetrics *ValidateMetrics, limits *Limits, userID string, ls []cortexpb.LabelAdapter, histogramSample cortexpb.Histogram) (cortexpb.Histogram, error) { |
| 377 | // sample size validation for native histogram |