github.com/weaviate/weaviate@v1.24.6/usecases/monitoring/shards.go (about)

     1  //                           _       _
     2  // __      _____  __ ___   ___  __ _| |_ ___
     3  // \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \
     4  //  \ V  V /  __/ (_| |\ V /| | (_| | ||  __/
     5  //   \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___|
     6  //
     7  //  Copyright © 2016 - 2024 Weaviate B.V. All rights reserved.
     8  //
     9  //  CONTACT: hello@weaviate.io
    10  //
    11  
    12  package monitoring
    13  
    14  import (
    15  	"github.com/prometheus/client_golang/prometheus"
    16  )
    17  
    18  // Move the shard from unloaded to in progress
    19  func (pm *PrometheusMetrics) StartLoadingShard(className string) error {
    20  	if pm == nil {
    21  		return nil
    22  	}
    23  
    24  	labels := prometheus.Labels{
    25  		"class_name": className,
    26  	}
    27  	suld, err := pm.ShardsUnloaded.GetMetricWith(labels)
    28  	if err != nil {
    29  		return err
    30  	}
    31  	suld.Dec()
    32  
    33  	slding, err := pm.ShardsLoading.GetMetricWith(labels)
    34  	if err != nil {
    35  		return err
    36  	}
    37  
    38  	slding.Inc()
    39  	return nil
    40  }
    41  
    42  // Move the shard from in progress to loaded
    43  func (pm *PrometheusMetrics) FinishLoadingShard(className string) error {
    44  	if pm == nil {
    45  		return nil
    46  	}
    47  
    48  	labels := prometheus.Labels{
    49  		"class_name": className,
    50  	}
    51  
    52  	slding, err := pm.ShardsLoading.GetMetricWith(labels)
    53  	if err != nil {
    54  		return err
    55  	}
    56  
    57  	slding.Dec()
    58  
    59  	sldd, err := pm.ShardsLoaded.GetMetricWith(labels)
    60  	if err != nil {
    61  		return err
    62  	}
    63  
    64  	sldd.Inc()
    65  	return nil
    66  }
    67  
    68  // Move the shard from loaded to in progress
    69  func (pm *PrometheusMetrics) StartUnloadingShard(className string) error {
    70  	if pm == nil {
    71  		return nil
    72  	}
    73  
    74  	labels := prometheus.Labels{
    75  		"class_name": className,
    76  	}
    77  
    78  	sldd, err := pm.ShardsLoaded.GetMetricWith(labels)
    79  	if err != nil {
    80  		return err
    81  	}
    82  
    83  	sldd.Dec()
    84  
    85  	suld, err := pm.ShardsUnloaded.GetMetricWith(labels)
    86  	if err != nil {
    87  		return err
    88  	}
    89  
    90  	suld.Inc()
    91  	return nil
    92  }
    93  
    94  // Move the shard from in progress to unloaded
    95  func (pm *PrometheusMetrics) FinishUnloadingShard(className string) error {
    96  	if pm == nil {
    97  		return nil
    98  	}
    99  
   100  	labels := prometheus.Labels{
   101  		"class_name": className,
   102  	}
   103  
   104  	sulding, err := pm.ShardsUnloading.GetMetricWith(labels)
   105  	if err != nil {
   106  		return err
   107  	}
   108  
   109  	sulding.Dec()
   110  
   111  	suld, err := pm.ShardsUnloaded.GetMetricWith(labels)
   112  	if err != nil {
   113  		return err
   114  	}
   115  
   116  	suld.Inc()
   117  
   118  	return nil
   119  }
   120  
   121  // Register a new, unloaded shard
   122  func (pm *PrometheusMetrics) NewUnloadedshard(className string) error {
   123  	if pm == nil {
   124  		return nil
   125  	}
   126  
   127  	labels := prometheus.Labels{
   128  		"class_name": className,
   129  	}
   130  
   131  	suld, err := pm.ShardsUnloaded.GetMetricWith(labels)
   132  	if err != nil {
   133  		return err
   134  	}
   135  
   136  	suld.Inc()
   137  	return nil
   138  }