sf_binlog_writer_init support call_fsync parameter

pull/6/head
YuQing 2023-06-27 18:19:36 +08:00
parent 6e071410dc
commit d006954ceb
6 changed files with 28 additions and 21 deletions

View File

@ -443,19 +443,19 @@ static void binlog_wbuffer_destroy_func(void *element, void *args)
int sf_binlog_writer_init_normal_ex(SFBinlogWriterInfo *writer, int sf_binlog_writer_init_normal_ex(SFBinlogWriterInfo *writer,
const char *data_path, const char *subdir_name, const char *data_path, const char *subdir_name,
const char *file_prefix, const int buffer_size, const char *file_prefix, const int buffer_size,
const int64_t file_rotate_size) const int64_t file_rotate_size, const bool call_fsync)
{ {
memset(writer, 0, sizeof(*writer)); memset(writer, 0, sizeof(*writer));
writer->order_by = SF_BINLOG_WRITER_TYPE_ORDER_BY_NONE; writer->order_by = SF_BINLOG_WRITER_TYPE_ORDER_BY_NONE;
return sf_file_writer_init(&writer->fw, data_path, subdir_name, return sf_file_writer_init(&writer->fw, data_path, subdir_name,
file_prefix, buffer_size, file_rotate_size); file_prefix, buffer_size, file_rotate_size, call_fsync);
} }
int sf_binlog_writer_init_by_version_ex(SFBinlogWriterInfo *writer, int sf_binlog_writer_init_by_version_ex(SFBinlogWriterInfo *writer,
const char *data_path, const char *subdir_name, const char *data_path, const char *subdir_name,
const char *file_prefix, const uint64_t next_version, const char *file_prefix, const uint64_t next_version,
const int buffer_size, const int ring_size, const int buffer_size, const int ring_size,
const int64_t file_rotate_size) const int64_t file_rotate_size, const bool call_fsync)
{ {
int bytes; int bytes;
@ -474,7 +474,7 @@ int sf_binlog_writer_init_by_version_ex(SFBinlogWriterInfo *writer,
binlog_writer_set_next_version(writer, next_version); binlog_writer_set_next_version(writer, next_version);
writer->flush.in_queue = false; writer->flush.in_queue = false;
return sf_file_writer_init(&writer->fw, data_path, subdir_name, return sf_file_writer_init(&writer->fw, data_path, subdir_name,
file_prefix, buffer_size, file_rotate_size); file_prefix, buffer_size, file_rotate_size, call_fsync);
} }
int sf_binlog_writer_init_thread_ex(SFBinlogWriterThread *thread, int sf_binlog_writer_init_thread_ex(SFBinlogWriterThread *thread,

View File

@ -113,13 +113,13 @@ extern "C" {
int sf_binlog_writer_init_normal_ex(SFBinlogWriterInfo *writer, int sf_binlog_writer_init_normal_ex(SFBinlogWriterInfo *writer,
const char *data_path, const char *subdir_name, const char *data_path, const char *subdir_name,
const char *file_prefix, const int buffer_size, const char *file_prefix, const int buffer_size,
const int64_t file_rotate_size); const int64_t file_rotate_size, const bool call_fsync);
int sf_binlog_writer_init_by_version_ex(SFBinlogWriterInfo *writer, int sf_binlog_writer_init_by_version_ex(SFBinlogWriterInfo *writer,
const char *data_path, const char *subdir_name, const char *data_path, const char *subdir_name,
const char *file_prefix, const uint64_t next_version, const char *file_prefix, const uint64_t next_version,
const int buffer_size, const int ring_size, const int buffer_size, const int ring_size,
const int64_t file_rotate_size); const int64_t file_rotate_size, const bool call_fsync);
int sf_binlog_writer_init_thread_ex(SFBinlogWriterThread *thread, int sf_binlog_writer_init_thread_ex(SFBinlogWriterThread *thread,
const char *name, SFBinlogWriterInfo *writer, const short order_mode, const char *name, SFBinlogWriterInfo *writer, const short order_mode,
@ -129,13 +129,14 @@ int sf_binlog_writer_init_thread_ex(SFBinlogWriterThread *thread,
#define sf_binlog_writer_init_normal(writer, \ #define sf_binlog_writer_init_normal(writer, \
data_path, subdir_name, buffer_size) \ data_path, subdir_name, buffer_size) \
sf_binlog_writer_init_normal_ex(writer, data_path, subdir_name, \ sf_binlog_writer_init_normal_ex(writer, data_path, subdir_name, \
SF_BINLOG_FILE_PREFIX, buffer_size, SF_BINLOG_DEFAULT_ROTATE_SIZE) SF_BINLOG_FILE_PREFIX, buffer_size, \
SF_BINLOG_DEFAULT_ROTATE_SIZE, true)
#define sf_binlog_writer_init_by_version(writer, data_path, \ #define sf_binlog_writer_init_by_version(writer, data_path, \
subdir_name, next_version, buffer_size, ring_size) \ subdir_name, next_version, buffer_size, ring_size) \
sf_binlog_writer_init_by_version_ex(writer, data_path, subdir_name, \ sf_binlog_writer_init_by_version_ex(writer, data_path, subdir_name, \
SF_BINLOG_FILE_PREFIX, next_version, buffer_size, \ SF_BINLOG_FILE_PREFIX, next_version, buffer_size, \
ring_size, SF_BINLOG_DEFAULT_ROTATE_SIZE) ring_size, SF_BINLOG_DEFAULT_ROTATE_SIZE, true)
#define sf_binlog_writer_init_thread(thread, name, \ #define sf_binlog_writer_init_thread(thread, name, \
writer, max_delay, max_record_size) \ writer, max_delay, max_record_size) \
@ -146,12 +147,13 @@ int sf_binlog_writer_init_thread_ex(SFBinlogWriterThread *thread,
static inline int sf_binlog_writer_init_ex(SFBinlogWriterContext *context, static inline int sf_binlog_writer_init_ex(SFBinlogWriterContext *context,
const char *data_path, const char *subdir_name, const char *data_path, const char *subdir_name,
const char *file_prefix, const int buffer_size, const char *file_prefix, const int buffer_size,
const int max_delay, const int max_record_size) const int max_delay, const int max_record_size,
const bool call_fsync)
{ {
int result; int result;
if ((result=sf_binlog_writer_init_normal_ex(&context->writer, if ((result=sf_binlog_writer_init_normal_ex(&context->writer,
data_path, subdir_name, file_prefix, buffer_size, data_path, subdir_name, file_prefix, buffer_size,
SF_BINLOG_DEFAULT_ROTATE_SIZE)) != 0) SF_BINLOG_DEFAULT_ROTATE_SIZE, call_fsync)) != 0)
{ {
return result; return result;
} }
@ -162,8 +164,9 @@ static inline int sf_binlog_writer_init_ex(SFBinlogWriterContext *context,
#define sf_binlog_writer_init(context, data_path, subdir_name, \ #define sf_binlog_writer_init(context, data_path, subdir_name, \
buffer_size, max_delay, max_record_size) \ buffer_size, max_delay, max_record_size) \
sf_binlog_writer_init_ex(context, data_path, subdir_name, \ sf_binlog_writer_init_ex(context, data_path, subdir_name, \
SF_BINLOG_FILE_PREFIX, buffer_size, max_delay, max_record_size) SF_BINLOG_FILE_PREFIX, buffer_size, max_delay, \
max_record_size, true)
void sf_binlog_writer_finish(SFBinlogWriterInfo *writer); void sf_binlog_writer_finish(SFBinlogWriterInfo *writer);

View File

@ -367,7 +367,8 @@ int sf_file_writer_deal_versioned_buffer(SFFileWriterInfo *writer,
int sf_file_writer_init(SFFileWriterInfo *writer, const char *data_path, int sf_file_writer_init(SFFileWriterInfo *writer, const char *data_path,
const char *subdir_name, const char *file_prefix, const char *subdir_name, const char *file_prefix,
const int buffer_size, const int64_t file_rotate_size) const int buffer_size, const int64_t file_rotate_size,
const bool call_fsync)
{ {
int result; int result;
int path_len; int path_len;
@ -384,7 +385,7 @@ int sf_file_writer_init(SFFileWriterInfo *writer, const char *data_path,
return result; return result;
} }
writer->cfg.call_fsync = true; writer->cfg.call_fsync = call_fsync;
writer->cfg.file_rotate_size = file_rotate_size; writer->cfg.file_rotate_size = file_rotate_size;
writer->cfg.data_path = data_path; writer->cfg.data_path = data_path;
path_len = snprintf(filepath, sizeof(filepath), path_len = snprintf(filepath, sizeof(filepath),

View File

@ -71,7 +71,8 @@ extern "C" {
int sf_file_writer_init(SFFileWriterInfo *writer, const char *data_path, int sf_file_writer_init(SFFileWriterInfo *writer, const char *data_path,
const char *subdir_name, const char *file_prefix, const char *subdir_name, const char *file_prefix,
const int buffer_size, const int64_t file_rotate_size); const int buffer_size, const int64_t file_rotate_size,
const bool call_fsync);
void sf_file_writer_destroy(SFFileWriterInfo *writer); void sf_file_writer_destroy(SFFileWriterInfo *writer);

View File

@ -237,12 +237,13 @@ static int sf_ordered_writer_init_thread(SFOrderedWriterContext *context,
int sf_ordered_writer_init_ex(SFOrderedWriterContext *context, int sf_ordered_writer_init_ex(SFOrderedWriterContext *context,
const char *data_path, const char *subdir_name, const char *data_path, const char *subdir_name,
const char *file_prefix, const int buffer_size, const char *file_prefix, const int buffer_size,
const int max_record_size, const int64_t file_rotate_size) const int max_record_size, const int64_t file_rotate_size,
const bool call_fsync)
{ {
int result; int result;
if ((result=sf_file_writer_init(&context->writer.fw, if ((result=sf_file_writer_init(&context->writer.fw, data_path,
data_path, subdir_name, file_prefix, subdir_name, file_prefix, buffer_size,
buffer_size, file_rotate_size)) != 0) file_rotate_size, call_fsync)) != 0)
{ {
return result; return result;
} }

View File

@ -65,13 +65,14 @@ extern "C" {
int sf_ordered_writer_init_ex(SFOrderedWriterContext *context, int sf_ordered_writer_init_ex(SFOrderedWriterContext *context,
const char *data_path, const char *subdir_name, const char *data_path, const char *subdir_name,
const char *file_prefix, const int buffer_size, const char *file_prefix, const int buffer_size,
const int max_record_size, const int64_t file_rotate_size); const int max_record_size, const int64_t file_rotate_size,
const bool call_fsync);
#define sf_ordered_writer_init(context, data_path, \ #define sf_ordered_writer_init(context, data_path, \
subdir_name, buffer_size, max_record_size) \ subdir_name, buffer_size, max_record_size) \
sf_ordered_writer_init_ex(context, data_path, subdir_name, \ sf_ordered_writer_init_ex(context, data_path, subdir_name, \
SF_BINLOG_FILE_PREFIX, buffer_size, max_record_size, \ SF_BINLOG_FILE_PREFIX, buffer_size, max_record_size, \
SF_BINLOG_DEFAULT_ROTATE_SIZE) SF_BINLOG_DEFAULT_ROTATE_SIZE, true)
#define sf_ordered_writer_set_flags(ctx, flags) \ #define sf_ordered_writer_set_flags(ctx, flags) \
sf_file_writer_set_flags(&(ctx)->writer.fw, flags) sf_file_writer_set_flags(&(ctx)->writer.fw, flags)