mirror of
				https://github.com/minio/minio.git
				synced 2025-10-29 15:55:00 -04:00 
			
		
		
		
	data-usage: Avoid crawling duplicated call (#8843)
This fix will also picks 3 and not 4 disks from a single erasure set.
This commit is contained in:
		
							parent
							
								
									2bb69033e5
								
							
						
					
					
						commit
						017067e11f
					
				| @ -88,7 +88,8 @@ func runDataUsageInfoForXLZones(ctx context.Context, z *xlZones, endCh <-chan st | |||||||
| 			time.Sleep(5 * time.Minute) | 			time.Sleep(5 * time.Minute) | ||||||
| 			continue | 			continue | ||||||
| 		} | 		} | ||||||
| 		// Break without locking | 		// Break without unlocking, this node will acquire | ||||||
|  | 		// data usage calculator role for its lifetime. | ||||||
| 		break | 		break | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -119,15 +119,9 @@ func (s *storageRESTServer) CrawlAndGetDataUsageHandler(w http.ResponseWriter, r | |||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	usageInfo, err := s.storage.CrawlAndGetDataUsage(GlobalServiceDoneCh) |  | ||||||
| 	if err != nil { |  | ||||||
| 		s.writeErrorResponse(w, err) |  | ||||||
| 		return |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	w.Header().Set(xhttp.ContentType, "text/event-stream") | 	w.Header().Set(xhttp.ContentType, "text/event-stream") | ||||||
| 	doneCh := sendWhiteSpaceToHTTPResponse(w) | 	doneCh := sendWhiteSpaceToHTTPResponse(w) | ||||||
| 	usageInfo, err = s.storage.CrawlAndGetDataUsage(GlobalServiceDoneCh) | 	usageInfo, err := s.storage.CrawlAndGetDataUsage(GlobalServiceDoneCh) | ||||||
| 	<-doneCh | 	<-doneCh | ||||||
| 
 | 
 | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
|  | |||||||
| @ -198,16 +198,18 @@ func (xl xlObjects) GetMetrics(ctx context.Context) (*Metrics, error) { | |||||||
| 	return &Metrics{}, NotImplemented{} | 	return &Metrics{}, NotImplemented{} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // crawlAndGetDataUsage picks three random disks to crawl and get data usage | ||||||
| func (xl xlObjects) crawlAndGetDataUsage(ctx context.Context, endCh <-chan struct{}) DataUsageInfo { | func (xl xlObjects) crawlAndGetDataUsage(ctx context.Context, endCh <-chan struct{}) DataUsageInfo { | ||||||
|  | 
 | ||||||
| 	var randomDisks []StorageAPI | 	var randomDisks []StorageAPI | ||||||
| 	for _, d := range xl.getLoadBalancedDisks() { | 	for _, d := range xl.getLoadBalancedDisks() { | ||||||
| 		if d == nil || !d.IsOnline() { | 		if d == nil || !d.IsOnline() { | ||||||
| 			continue | 			continue | ||||||
| 		} | 		} | ||||||
| 		if len(randomDisks) > 3 { | 		randomDisks = append(randomDisks, d) | ||||||
|  | 		if len(randomDisks) >= 3 { | ||||||
| 			break | 			break | ||||||
| 		} | 		} | ||||||
| 		randomDisks = append(randomDisks, d) |  | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	var dataUsageResults = make([]DataUsageInfo, len(randomDisks)) | 	var dataUsageResults = make([]DataUsageInfo, len(randomDisks)) | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user