@@ -286,7 +286,7 @@ func runReceive(
286286
287287 level .Debug (logger ).Log ("msg" , "setting up TSDB" )
288288 {
289- if err := startTSDBAndUpload (g , logger , reg , dbs , uploadC , hashringChangedChan , upload , uploadDone , statusProber , bkt , receive .HashringAlgorithm (conf .hashringsAlgorithm )); err != nil {
289+ if err := startTSDBAndUpload (g , logger , reg , dbs , uploadC , hashringChangedChan , upload , uploadDone , statusProber , bkt , receive .HashringAlgorithm (conf .hashringsAlgorithm ), conf . tsdbDisableFlushOnShutdown ); err != nil {
290290 return err
291291 }
292292 }
@@ -578,6 +578,7 @@ func startTSDBAndUpload(g *run.Group,
578578 statusProber prober.Probe ,
579579 bkt objstore.Bucket ,
580580 hashringAlgorithm receive.HashringAlgorithm ,
581+ disableFlushOnShutDown bool ,
581582) error {
582583
583584 log .With (logger , "component" , "storage" )
@@ -603,10 +604,12 @@ func startTSDBAndUpload(g *run.Group,
603604 // Before quitting, ensure the WAL is flushed and the DBs are closed.
604605 defer func () {
605606 level .Info (logger ).Log ("msg" , "shutting down storage" )
606- if err := dbs .Flush (); err != nil {
607- level .Error (logger ).Log ("err" , err , "msg" , "failed to flush storage" )
608- } else {
609- level .Info (logger ).Log ("msg" , "storage is flushed successfully" )
607+ if ! disableFlushOnShutDown {
608+ if err := dbs .Flush (); err != nil {
609+ level .Error (logger ).Log ("err" , err , "msg" , "failed to flush storage" )
610+ } else {
611+ level .Info (logger ).Log ("msg" , "storage is flushed successfully" )
612+ }
610613 }
611614 if err := dbs .Close (); err != nil {
612615 level .Error (logger ).Log ("err" , err , "msg" , "failed to close storage" )
@@ -822,6 +825,7 @@ type receiveConfig struct {
822825 tsdbMaxBytes units.Base2Bytes
823826 tsdbWriteQueueSize int64
824827 tsdbMemorySnapshotOnShutdown bool
828+ tsdbDisableFlushOnShutdown bool
825829 tsdbEnableNativeHistograms bool
826830
827831 walCompression bool
@@ -958,6 +962,10 @@ func (rc *receiveConfig) registerFlag(cmd extkingpin.FlagClause) {
958962 "[EXPERIMENTAL] Enables feature to snapshot in-memory chunks on shutdown for faster restarts." ).
959963 Default ("false" ).Hidden ().BoolVar (& rc .tsdbMemorySnapshotOnShutdown )
960964
965+ cmd .Flag ("tsdb.disable-flush-on-shutdown" ,
966+ "[EXPERIMENTAL] disable flush on receive shutdown for rebuilding mempostings on restart." ).
967+ Default ("false" ).Hidden ().BoolVar (& rc .tsdbDisableFlushOnShutdown )
968+
961969 cmd .Flag ("tsdb.enable-native-histograms" ,
962970 "[EXPERIMENTAL] Enables the ingestion of native histograms." ).
963971 Default ("false" ).Hidden ().BoolVar (& rc .tsdbEnableNativeHistograms )
0 commit comments