1414 * limitations under the License.
1515 */
1616
17- #include " paimon/core/mergetree /writer_memory_manager.h"
17+ #include " paimon/core/memory /writer_memory_manager.h"
1818
1919#include < algorithm>
2020#include < memory>
@@ -35,8 +35,8 @@ namespace {
3535
3636class FakeBatchWriter : public BatchWriter {
3737 public:
38- explicit FakeBatchWriter (std::string name, std::vector<std::string>* flush_history = nullptr )
39- : name_(std::move( name) ), flush_history_(flush_history) {}
38+ FakeBatchWriter (const std::string& name, std::vector<std::string>* flush_history)
39+ : name_(name), flush_history_(flush_history) {}
4040
4141 void SetMemoryUsage (uint64_t memory_usage) {
4242 memory_usage_ = memory_usage;
@@ -52,7 +52,7 @@ class FakeBatchWriter : public BatchWriter {
5252
5353 Status FlushMemory () override {
5454 uint64_t reduction = memory_usage_;
55- if (flush_calls_ < static_cast <int >(flush_reductions_.size ())) {
55+ if (flush_calls_ < static_cast <int32_t >(flush_reductions_.size ())) {
5656 reduction = flush_reductions_[flush_calls_];
5757 }
5858 reduction = std::min (reduction, memory_usage_);
@@ -103,13 +103,13 @@ class FakeBatchWriter : public BatchWriter {
103103 std::vector<std::string>* flush_history_;
104104 std::vector<uint64_t > flush_reductions_;
105105 uint64_t memory_usage_ = 0 ;
106- int flush_calls_ = 0 ;
106+ int32_t flush_calls_ = 0 ;
107107};
108108
109109} // namespace
110110
111111TEST (WriterMemoryManagerTest, DoesNotFlushWhenMemoryIsBelowLimit) {
112- WriterMemoryManager manager (/* max_memory =*/ 100 );
112+ WriterMemoryManager manager (/* memory_limit =*/ 100 );
113113 std::vector<std::string> flush_history;
114114 FakeBatchWriter writer (" writer" , &flush_history);
115115 manager.RegisterWriter (&writer);
@@ -120,7 +120,7 @@ TEST(WriterMemoryManagerTest, DoesNotFlushWhenMemoryIsBelowLimit) {
120120}
121121
122122TEST (WriterMemoryManagerTest, UnregisterWriterRemovesMemoryFromLedger) {
123- WriterMemoryManager manager (/* max_memory =*/ 100 );
123+ WriterMemoryManager manager (/* memory_limit =*/ 100 );
124124 std::vector<std::string> flush_history;
125125 FakeBatchWriter writer_a (" writer_a" , &flush_history);
126126 manager.RegisterWriter (&writer_a);
@@ -137,7 +137,7 @@ TEST(WriterMemoryManagerTest, UnregisterWriterRemovesMemoryFromLedger) {
137137}
138138
139139TEST (WriterMemoryManagerTest, RefreshWriterMemoryUpdatesLedgerWithoutFlushing) {
140- WriterMemoryManager manager (/* max_memory =*/ 80 );
140+ WriterMemoryManager manager (/* memory_limit =*/ 80 );
141141 std::vector<std::string> flush_history;
142142 FakeBatchWriter writer_a (" writer_a" , &flush_history);
143143 manager.RegisterWriter (&writer_a);
@@ -155,7 +155,7 @@ TEST(WriterMemoryManagerTest, RefreshWriterMemoryUpdatesLedgerWithoutFlushing) {
155155}
156156
157157TEST (WriterMemoryManagerTest, FlushWriterMemoryWithMultipleWriters) {
158- WriterMemoryManager manager (/* max_memory =*/ 100 );
158+ WriterMemoryManager manager (/* memory_limit =*/ 100 );
159159 std::vector<std::string> flush_history;
160160 FakeBatchWriter writer_a (" writer_a" , &flush_history);
161161 manager.RegisterWriter (&writer_a);
@@ -182,7 +182,7 @@ TEST(WriterMemoryManagerTest, FlushWriterMemoryWithMultipleWriters) {
182182}
183183
184184TEST (WriterMemoryManagerTest, ReclaimsCallerWhenCallerIsLargestWriter) {
185- WriterMemoryManager manager (/* max_memory =*/ 100 );
185+ WriterMemoryManager manager (/* memory_limit =*/ 100 );
186186 std::vector<std::string> flush_history;
187187 FakeBatchWriter writer_a (" writer_a" , &flush_history);
188188 manager.RegisterWriter (&writer_a);
@@ -193,7 +193,6 @@ TEST(WriterMemoryManagerTest, ReclaimsCallerWhenCallerIsLargestWriter) {
193193 manager.RefreshWriterMemory (&writer_a);
194194
195195 writer_b.SetMemoryUsage (90 );
196- writer_b.SetFlushReductions ({90 });
197196 ASSERT_OK (manager.OnWriteCompleted (&writer_b));
198197
199198 ASSERT_EQ (flush_history, std::vector<std::string>({" writer_b" }));
@@ -202,7 +201,7 @@ TEST(WriterMemoryManagerTest, ReclaimsCallerWhenCallerIsLargestWriter) {
202201}
203202
204203TEST (WriterMemoryManagerTest, ContinuesReclaimingUntilBelowGlobalLimit) {
205- WriterMemoryManager manager (/* max_memory =*/ 61 );
204+ WriterMemoryManager manager (/* memory_limit =*/ 61 );
206205 std::vector<std::string> flush_history;
207206 FakeBatchWriter writer_a (" writer_a" , &flush_history);
208207 manager.RegisterWriter (&writer_a);
@@ -224,22 +223,23 @@ TEST(WriterMemoryManagerTest, ContinuesReclaimingUntilBelowGlobalLimit) {
224223}
225224
226225TEST (WriterMemoryManagerTest, ReturnsConfigurationErrorWhenNoWriterCanReleaseEnoughMemory) {
227- WriterMemoryManager manager (/* max_memory =*/ 100 );
226+ WriterMemoryManager manager (/* memory_limit =*/ 100 );
228227 std::vector<std::string> flush_history;
229228 FakeBatchWriter writer_a (" writer_a" , &flush_history);
230229 manager.RegisterWriter (&writer_a);
231230 FakeBatchWriter writer_b (" writer_b" , &flush_history);
232231 manager.RegisterWriter (&writer_b);
233232
234233 writer_b.SetMemoryUsage (20 );
235- writer_b.SetFlushReductions ({20 });
236234 manager.RefreshWriterMemory (&writer_b);
237235
238236 writer_a.SetMemoryUsage (120 );
239237 writer_a.SetFlushReductions ({10 , 0 });
240- ASSERT_NOK_WITH_MSG (manager.OnWriteCompleted (&writer_a),
241- " Unable to release memory to below the write-buffer-size limit" );
242- ASSERT_EQ (flush_history, std::vector<std::string>({" writer_a" , " writer_b" }));
238+ ASSERT_NOK_WITH_MSG (
239+ manager.OnWriteCompleted (&writer_a),
240+ " Before flushing memory, writer had 110 bytes of memory allocated, After flushing memory, "
241+ " writer still has 110 bytes of memory allocated, this might be a bug." );
242+ ASSERT_EQ (flush_history, std::vector<std::string>({" writer_a" }));
243243}
244244
245245} // namespace paimon::test
0 commit comments