@@ -106,14 +106,26 @@ impl HotTierManager {
106
106
stream : & str ,
107
107
size : & str ,
108
108
) -> 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
+
109
121
let ( total_disk_space, available_disk_space, used_disk_space) = get_disk_usage ( ) ;
110
122
111
123
if let ( Some ( total_disk_space) , Some ( available_disk_space) , Some ( used_disk_space) ) =
112
124
( total_disk_space, available_disk_space, used_disk_space)
113
125
{
114
126
let stream_hot_tier_size = human_size_to_bytes ( size) . unwrap ( ) ;
115
127
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;
117
129
118
130
let usage_percentage = ( projected_disk_usage as f64 / total_disk_space as f64 ) * 100.0 ;
119
131
@@ -130,12 +142,6 @@ impl HotTierManager {
130
142
}
131
143
}
132
144
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
-
139
145
Ok ( ( ) )
140
146
}
141
147
0 commit comments