@@ -106,14 +106,26 @@ impl HotTierManager {
106106 stream : & str ,
107107 size : & str ,
108108 ) -> Result < ( ) , HotTierError > {
109+ if self . check_stream_hot_tier_exists ( stream) {
110+ //delete existing hot tier if its size is less than the updated hot tier size else return error
111+ let existing_hot_tier = self . get_hot_tier ( stream) . await ?;
112+ if human_size_to_bytes ( size) < human_size_to_bytes ( & existing_hot_tier. size ) {
113+ return Err ( HotTierError :: ObjectStorageError ( ObjectStorageError :: Custom ( format ! (
114+ "The hot tier size for the stream is already set to {} which is greater than the updated hot tier size of {}, reducing the hot tier size is not allowed" ,
115+ existing_hot_tier. size,
116+ size
117+ ) ) ) ) ;
118+ }
119+ }
120+
109121 let ( total_disk_space, available_disk_space, used_disk_space) = get_disk_usage ( ) ;
110122
111123 if let ( Some ( total_disk_space) , Some ( available_disk_space) , Some ( used_disk_space) ) =
112124 ( total_disk_space, available_disk_space, used_disk_space)
113125 {
114126 let stream_hot_tier_size = human_size_to_bytes ( size) . unwrap ( ) ;
115127 let total_hot_tier_size = self . get_hot_tiers_size ( stream) . await ?;
116- let projected_disk_usage = used_disk_space + total_hot_tier_size + stream_hot_tier_size;
128+ let projected_disk_usage = total_hot_tier_size + stream_hot_tier_size;
117129
118130 let usage_percentage = ( projected_disk_usage as f64 / total_disk_space as f64 ) * 100.0 ;
119131
@@ -130,12 +142,6 @@ impl HotTierManager {
130142 }
131143 }
132144
133- if self . check_stream_hot_tier_exists ( stream) {
134- let available_date_list = self . fetch_hot_tier_dates ( stream) . await ?;
135- self . delete_files_from_hot_tier ( stream, & available_date_list)
136- . await ?;
137- }
138-
139145 Ok ( ( ) )
140146 }
141147
0 commit comments