Skip to content

Commit 567e284

Browse files
committedDec 28, 2012
bug fix debug_level, and add free_handle to allow POOL_ALLOC free resource
1 parent 9ff7212 commit 567e284

File tree

6 files changed

+38
-18
lines changed

6 files changed

+38
-18
lines changed
 

‎etc/slave.cf

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ log /tmp/rs_slave.log
1717
log.level 3
1818

1919
# debug level
20-
debug.level BINLOG
20+
debug.level BINLOG|ALLOC
2121

2222
[slave]
2323
# listen addr

‎src/core/rs_log.c

+5-4
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,8 @@ static rs_str_t rs_debug_levels[] = {
2020
rs_null_string
2121
};
2222

23-
2423
char *rs_log_path = "./rs.log";
2524
int rs_log_fd = STDOUT_FILENO;
26-
2725
uint32_t rs_log_level = RS_LOG_INFO;
2826
uint32_t rs_debug_level = 0;
2927

@@ -48,8 +46,11 @@ int rs_log_set_levels(char *debug_level)
4846

4947
for(p = debug_level; p != NULL; p = rs_strchr(p, '|')) {
5048

51-
i = 0;
52-
for(t = rs_debug_levels[i]; t.len > 0 && t.data != NULL;
49+
if(p != debug_level) {
50+
p++;
51+
}
52+
53+
for(i = 0, t = rs_debug_levels[i]; t.len > 0 && t.data != NULL;
5354
t = rs_debug_levels[++i])
5455
{
5556
if(rs_strncmp(t.data, p, t.len) == 0) {

‎src/slave/rs_binlog_row.c

+8-4
Original file line numberDiff line numberDiff line change
@@ -385,6 +385,7 @@ int rs_dm_binlog_row(rs_slave_info_t *si, void *data, uint32_t len, char type,
385385
rs_binlog_dm_func before_update_handle,
386386
rs_binlog_dm_func update_handle,
387387
rs_binlog_dm_func delete_handle,
388+
rs_binlog_dm_func free_handle,
388389
rs_dm_pos_alloc_t *pas_arr, void *obj)
389390
{
390391
char *p, *ubp, *dp;
@@ -463,6 +464,7 @@ int rs_dm_binlog_row(rs_slave_info_t *si, void *data, uint32_t len, char type,
463464
ubp = use_bits_after;
464465
}
465466

467+
/* before parse struct handle */
466468
if(before_parse_handle != NULL) {
467469
before_parse_handle(obj);
468470
}
@@ -546,11 +548,11 @@ int rs_dm_binlog_row(rs_slave_info_t *si, void *data, uint32_t len, char type,
546548
cmp += meta->meta_len;
547549
}
548550

551+
/* after parse struct handle */
549552
if(after_parse_handle != NULL) {
550553
after_parse_handle(obj);
551554
}
552555

553-
/* append cmd */
554556
if(type == RS_WRITE_ROWS_EVENT) {
555557
handle = write_handle;
556558
} else if(type == RS_UPDATE_ROWS_EVENT) {
@@ -566,11 +568,13 @@ int rs_dm_binlog_row(rs_slave_info_t *si, void *data, uint32_t len, char type,
566568
return RS_ERR;
567569
}
568570

569-
if(handle == NULL) {
570-
continue;
571+
/* dm handle */
572+
if(handle != NULL && handle(si, obj) == RS_ERR) {
573+
return RS_ERR;
571574
}
572575

573-
if(handle(si, obj) == RS_ERR) {
576+
/* free resource handle */
577+
if(free_handle != NULL && free_handle(si, obj) == RS_ERR) {
574578
return RS_ERR;
575579
}
576580
}

‎src/slave/rs_binlog_row.h

+1
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ int rs_dm_binlog_row(rs_slave_info_t *si, void *data, uint32_t len, char type,
7474
rs_binlog_dm_func before_update_handle,
7575
rs_binlog_dm_func update_handle,
7676
rs_binlog_dm_func delete_handle,
77+
rs_binlog_dm_func free_handle,
7778
rs_dm_pos_alloc_t *pas_arr, void *obj);
7879

7980
#endif

‎src/slave/rs_io_thread.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -105,10 +105,10 @@ void *rs_start_io_thread(void *data)
105105
rs_log_error(RS_LOG_ERR, 0, "close failed()");
106106
}
107107
si->svr_fd = -1;
108+
rs_log_error(RS_LOG_ERR, 0, "retry connect to master");
108109
sleep(RS_RETRY_CONNECT_SLEEP_SEC);
109110
}
110111

111-
112112
free:;
113113

114114
pthread_cleanup_pop(1);

‎src/slave/rs_mysql_test_test.c

+22-8
Original file line numberDiff line numberDiff line change
@@ -19,24 +19,25 @@ rs_dm_pos_alloc_t rs_mysql_test_pas[] = {
1919
rs_pstr_t_init(&(test->col))
2020

2121

22-
void rs_init_test_test(void *obj);
23-
void rs_print_test_test(void *obj);
22+
static void rs_init_test_test(void *obj);
23+
static void rs_print_test_test(void *obj);
2424

2525
static int rs_insert_test_test(rs_slave_info_t *si, void *obj);
2626
static int rs_before_update_test_test(rs_slave_info_t *si, void *obj);
2727
static int rs_update_test_test(rs_slave_info_t *si, void *obj);
2828
static int rs_delete_test_test(rs_slave_info_t *si, void *obj);
29+
static int rs_free_test_test(rs_slave_info_t *si, void *obj);
2930

3031
/* test */
31-
void rs_init_test_test(void *obj)
32+
static void rs_init_test_test(void *obj)
3233
{
3334
rs_mysql_test_t *test;
3435
test = (rs_mysql_test_t *) obj;
3536

3637
rs_mysql_test_t_init(test);
3738
}
3839

39-
void rs_print_test_test(void *obj)
40+
static void rs_print_test_test(void *obj)
4041
{
4142
rs_mysql_test_t *test;
4243

@@ -55,7 +56,7 @@ void rs_print_test_test(void *obj)
5556
);
5657
}
5758

58-
int rs_insert_test_test(rs_slave_info_t *si, void *obj)
59+
static int rs_insert_test_test(rs_slave_info_t *si, void *obj)
5960
{
6061
rs_mysql_test_t *test;
6162

@@ -70,21 +71,33 @@ int rs_insert_test_test(rs_slave_info_t *si, void *obj)
7071
return RS_OK;
7172
}
7273

73-
int rs_before_update_test_test(rs_slave_info_t *si, void *obj)
74+
static int rs_before_update_test_test(rs_slave_info_t *si, void *obj)
7475
{
7576
return RS_OK;
7677
}
7778

78-
int rs_update_test_test(rs_slave_info_t *si, void *obj)
79+
static int rs_update_test_test(rs_slave_info_t *si, void *obj)
7980
{
8081
return rs_insert_test_test(si, obj);
8182
}
8283

83-
int rs_delete_test_test(rs_slave_info_t *si, void *obj)
84+
static int rs_delete_test_test(rs_slave_info_t *si, void *obj)
8485
{
8586
return RS_OK;
8687
}
8788

89+
static int rs_free_test_test(rs_slave_info_t *si, void *obj)
90+
{
91+
rs_mysql_test_t *test;
92+
93+
test = (rs_mysql_test_t *) obj;
94+
95+
if(test->col.data != NULL) {
96+
rs_pfree(si->dpool, test->col.data, test->col.id);
97+
}
98+
99+
return RS_OK;
100+
}
88101

89102
int rs_dm_test_test(rs_slave_info_t *si, char *r, uint32_t rl, char t) {
90103
/* test.test */
@@ -98,6 +111,7 @@ int rs_dm_test_test(rs_slave_info_t *si, char *r, uint32_t rl, char t) {
98111
rs_before_update_test_test,
99112
rs_update_test_test,
100113
rs_delete_test_test,
114+
rs_free_test_test,
101115
rs_mysql_test_pas, &test);
102116

103117
return err;

0 commit comments

Comments
 (0)
Please sign in to comment.