Skip to content

Commit 5647069

Browse files
authored
input_chunk: get real chunk size when calculating fs_chunks_size (#3054)
Signed-off-by: Jeff Luo <jeffluoo@google.com>
1 parent 1f0918b commit 5647069

File tree

1 file changed

+17
-6
lines changed

1 file changed

+17
-6
lines changed

src/flb_input_chunk.c

+17-6
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,17 @@ ssize_t flb_input_chunk_get_size(struct flb_input_chunk *ic)
4646
return cio_chunk_get_content_size(ic->chunk);
4747
}
4848

49+
/*
50+
* When chunk is set to DOWN from memory, data_size is set to 0 and
51+
* cio_chunk_get_content_size(1) returns the data_size. fs_chunks_size
52+
* is used to track the size of chunks in filesystem so we need to call
53+
* cio_chunk_get_real_size to return the original size in the file system
54+
*/
55+
ssize_t flb_input_chunk_get_real_size(struct flb_input_chunk *ic)
56+
{
57+
return cio_chunk_get_real_size(ic->chunk);
58+
}
59+
4960
int flb_input_chunk_write(void *data, const char *buf, size_t len)
5061
{
5162
int ret;
@@ -137,7 +148,7 @@ int flb_intput_chunk_count_dropped_chunks(struct flb_input_chunk *ic,
137148
continue;
138149
}
139150

140-
bytes_remained += flb_input_chunk_get_size(old_ic);
151+
bytes_remained += flb_input_chunk_get_real_size(old_ic);
141152
count++;
142153
if (bytes_remained >= chunk_size) {
143154
enough_space = FLB_TRUE;
@@ -217,7 +228,8 @@ int flb_input_chunk_find_space_new_data(struct flb_input_chunk *ic,
217228
continue;
218229
}
219230

220-
old_ic_bytes = flb_input_chunk_get_size(old_ic);
231+
old_ic_bytes = flb_input_chunk_get_real_size(old_ic);
232+
221233
/* drop chunk by adjusting the routes_mask */
222234
flb_routes_mask_clear_bit(old_ic->routes_mask, o_ins->id);
223235
o_ins->fs_chunks_size -= old_ic_bytes;
@@ -279,7 +291,7 @@ int flb_input_chunk_has_overlimit_routes(struct flb_input_chunk *ic,
279291
flb_input_chunk_get_name(ic), chunk_size,
280292
o_ins->total_limit_size - o_ins->fs_chunks_size,
281293
o_ins->name);
282-
294+
283295
if (o_ins->fs_chunks_size + chunk_size > o_ins->total_limit_size) {
284296
overlimit = 1;
285297
}
@@ -360,7 +372,7 @@ struct flb_input_chunk *flb_input_chunk_map(struct flb_input_instance *in,
360372
flb_input_chunk_get_name(ic));
361373
}
362374

363-
bytes = flb_input_chunk_get_size(ic);
375+
bytes = flb_input_chunk_get_real_size(ic);
364376
flb_input_chunk_update_output_instances(ic, bytes);
365377

366378
return ic;
@@ -474,7 +486,7 @@ int flb_input_chunk_destroy(struct flb_input_chunk *ic, int del)
474486
continue;
475487
}
476488

477-
bytes = flb_input_chunk_get_size(ic);
489+
bytes = flb_input_chunk_get_real_size(ic);
478490
if (flb_routes_mask_get_bit(ic->routes_mask, o_ins->id) != 0) {
479491
o_ins->fs_chunks_size -= bytes;
480492
}
@@ -607,7 +619,6 @@ size_t flb_input_chunk_set_limits(struct flb_input_instance *in)
607619

608620
/* Gather total number of enqueued bytes */
609621
total = flb_input_chunk_total_size(in);
610-
611622
/* Register the total into the context variable */
612623
in->mem_chunks_size = total;
613624

0 commit comments

Comments
 (0)