Cut v2.30.2 (#9426)
* Don't error on overlapping m-mapped chunks during WAL replay (#9381) Signed-off-by: Ganesh Vernekar <ganeshvern@gmail.com> * Reduce log level during WAL replay on overlapping m-map chunks (#9425) Signed-off-by: Ganesh Vernekar <ganeshvern@gmail.com> * Cut v2.30.2 Signed-off-by: Ganesh Vernekar <ganeshvern@gmail.com>
This commit is contained in:
		
							parent
							
								
									fafb309d40
								
							
						
					
					
						commit
						b30db03f35
					
				|  | @ -1,3 +1,7 @@ | |||
| ## 2.30.2 / 2021-10-01 | ||||
| 
 | ||||
| * [BUGFIX] TSDB: Don't error on overlapping m-mapped chunks during WAL replay. #9381 | ||||
| 
 | ||||
| ## 2.30.1 / 2021-09-28 | ||||
| 
 | ||||
| * [ENHANCEMENT] Remote Write: Redact remote write URL when used for metric label. #9383 | ||||
|  |  | |||
|  | @ -46,6 +46,8 @@ func (h *Head) loadWAL(r *wal.Reader, multiRef map[uint64]uint64, mmappedChunks | |||
| 	// for error reporting.
 | ||||
| 	var unknownRefs atomic.Uint64 | ||||
| 	var unknownExemplarRefs atomic.Uint64 | ||||
| 	// Track number of series records that had overlapping m-map chunks.
 | ||||
| 	var mmapOverlappingChunks uint64 | ||||
| 
 | ||||
| 	// Start workers that each process samples for a partition of the series ID space.
 | ||||
| 	// They are connected through a ring of channels which ensures that all sample batches
 | ||||
|  | @ -241,8 +243,6 @@ Outer: | |||
| 				} | ||||
| 
 | ||||
| 				// Checking if the new m-mapped chunks overlap with the already existing ones.
 | ||||
| 				// This should never happen, but we have a check anyway to detect any
 | ||||
| 				// edge cases that we might have missed.
 | ||||
| 				if len(mSeries.mmappedChunks) > 0 && len(mmc) > 0 { | ||||
| 					if overlapsClosedInterval( | ||||
| 						mSeries.mmappedChunks[0].minTime, | ||||
|  | @ -250,9 +250,17 @@ Outer: | |||
| 						mmc[0].minTime, | ||||
| 						mmc[len(mmc)-1].maxTime, | ||||
| 					) { | ||||
| 						// The m-map chunks for the new series ref overlaps with old m-map chunks.
 | ||||
| 						seriesCreationErr = errors.Errorf("overlapping m-mapped chunks for series %s", mSeries.lset.String()) | ||||
| 						break Outer | ||||
| 						mmapOverlappingChunks++ | ||||
| 						level.Debug(h.logger).Log( | ||||
| 							"msg", "M-mapped chunks overlap on a duplicate series record", | ||||
| 							"series", mSeries.lset.String(), | ||||
| 							"oldref", mSeries.ref, | ||||
| 							"oldmint", mSeries.mmappedChunks[0].minTime, | ||||
| 							"oldmaxt", mSeries.mmappedChunks[len(mSeries.mmappedChunks)-1].maxTime, | ||||
| 							"newref", walSeries.Ref, | ||||
| 							"newmint", mmc[0].minTime, | ||||
| 							"newmaxt", mmc[len(mmc)-1].maxTime, | ||||
| 						) | ||||
| 					} | ||||
| 				} | ||||
| 
 | ||||
|  | @ -351,6 +359,9 @@ Outer: | |||
| 	if unknownRefs.Load() > 0 || unknownExemplarRefs.Load() > 0 { | ||||
| 		level.Warn(h.logger).Log("msg", "Unknown series references", "samples", unknownRefs.Load(), "exemplars", unknownExemplarRefs.Load()) | ||||
| 	} | ||||
| 	if mmapOverlappingChunks > 0 { | ||||
| 		level.Info(h.logger).Log("msg", "Overlapping m-map chunks on duplicate series records", "count", mmapOverlappingChunks) | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue