Skip to content

Commit d20281f

Browse files
committed
file-reader: Use the already presented io job working flag to detect an in progress work item
Signed-off-by: Hofi <[email protected]>
1 parent 9e32406 commit d20281f

File tree

3 files changed

+13
-9
lines changed

3 files changed

+13
-9
lines changed

lib/logreader.c

+11-5
Original file line numberDiff line numberDiff line change
@@ -352,18 +352,24 @@ log_reader_update_watches(LogReader *self)
352352
static inline gboolean
353353
log_reader_work_in_progress(LogReader *self)
354354
{
355-
return g_atomic_counter_get(&self->io_work_in_progress);
355+
main_loop_assert_main_thread();
356+
357+
return self->io_job.working;
356358
}
357359

358360
static inline void
359361
log_reader_set_work_in_progress(LogReader *self, gboolean state)
360362
{
361-
g_atomic_counter_set(&self->io_work_in_progress, state);
363+
if ((self->options->flags & LR_THREADED) == 0)
364+
{
365+
main_loop_assert_main_thread();
366+
self->io_job.working = state;
367+
}
362368
}
363369

364370
/* NOTE: See file-reader, file_reader_notify_method() why this is needed */
365371
inline void
366-
log_reader_trigger_one_read(LogReader *self)
372+
log_reader_trigger_one_check(LogReader *self)
367373
{
368374
if (FALSE == log_reader_work_in_progress(self))
369375
log_reader_force_check_in_next_poll(self);
@@ -388,6 +394,8 @@ log_reader_work_finished(void *s, gpointer arg)
388394
{
389395
LogReader *self = (LogReader *) s;
390396

397+
log_reader_set_work_in_progress(self, FALSE);
398+
391399
if (self->pending_close)
392400
{
393401
/* pending proto is only set in the main thread, so no need to
@@ -425,8 +433,6 @@ log_reader_work_finished(void *s, gpointer arg)
425433
log_proto_server_reset_error(self->proto);
426434
log_reader_update_watches(self);
427435
}
428-
429-
log_reader_set_work_in_progress(self, FALSE);
430436
}
431437

432438
/*****************************************************************************

lib/logreader.h

+1-3
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,6 @@ struct _LogReader
7979
guint watches_running:1, suspended:1, realloc_window_after_fetch:1;
8080
gint notify_code;
8181

82-
GAtomicCounter io_work_in_progress;
83-
8482
/* proto & poll_events pending to be applied. As long as the previous
8583
* processing is being done, we can't replace these in self->proto and
8684
* self->poll_events, they get applied to the production ones as soon as
@@ -100,7 +98,7 @@ void log_reader_set_peer_addr(LogReader *s, GSockAddr *peer_addr);
10098
void log_reader_set_local_addr(LogReader *s, GSockAddr *local_addr);
10199
void log_reader_set_immediate_check(LogReader *s);
102100
void log_reader_disable_bookmark_saving(LogReader *s);
103-
void log_reader_trigger_one_read(LogReader *s);
101+
void log_reader_trigger_one_check(LogReader *s);
104102
gboolean log_reader_is_opened(LogReader *s);
105103
void log_reader_open(LogReader *s, LogProtoServer *proto, PollEvents *poll_events);
106104
void log_reader_close_proto(LogReader *s);

modules/affile/file-reader.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -342,7 +342,7 @@ _on_file_deleted(FileReader *self)
342342
* an io-operation in progress!
343343
*/
344344
if (poll_events_system_polled(self->reader->poll_events))
345-
log_reader_trigger_one_read(self->reader);
345+
log_reader_trigger_one_check(self->reader);
346346
}
347347

348348
static void

0 commit comments

Comments
 (0)