Commit 3096ecd7 authored by Li Wei's avatar Li Wei Committed by Willem Thiart
Browse files

DAOS-333 log: Pass correct indices to log_offer and log_poll



log_offer and log_poll should get log entry index rather than internal
array index. That would match the callback comment in raft.h and would
also match the log_pop case.
Signed-off-by: default avatarLi Wei <wei.g.li@intel.com>
parent 854a06d2
......@@ -106,6 +106,7 @@ void log_clear(log_t* me_)
int log_append_entry(log_t* me_, raft_entry_t* c)
{
log_private_t* me = (log_private_t*)me_;
int idx = me->base + me->count + 1;
int e;
e = __ensurecapacity(me);
......@@ -117,8 +118,8 @@ int log_append_entry(log_t* me_, raft_entry_t* c)
if (me->cb && me->cb->log_offer)
{
void* ud = raft_get_udata(me->raft);
e = me->cb->log_offer(me->raft, ud, &me->entries[me->back], me->back);
raft_offer_log(me->raft, &me->entries[me->back], me->back);
e = me->cb->log_offer(me->raft, ud, &me->entries[me->back], idx);
raft_offer_log(me->raft, &me->entries[me->back], idx);
if (e == RAFT_ERR_SHUTDOWN)
return e;
}
......@@ -192,10 +193,11 @@ void log_delete(log_t* me_, int idx)
for (end = log_count(me_); idx < end; idx++)
{
int idx_tmp = me->base + me->count;
if (me->cb && me->cb->log_pop)
me->cb->log_pop(me->raft, raft_get_udata(me->raft),
&me->entries[me->back - 1], me->back);
raft_pop_log(me->raft, &me->entries[me->back - 1], me->back);
&me->entries[me->back - 1], idx_tmp);
raft_pop_log(me->raft, &me->entries[me->back - 1], idx_tmp);
me->back--;
me->count--;
}
......@@ -204,6 +206,7 @@ void log_delete(log_t* me_, int idx)
void *log_poll(log_t * me_)
{
log_private_t* me = (log_private_t*)me_;
int idx = me->base + 1;
if (0 == log_count(me_))
return NULL;
......@@ -211,7 +214,7 @@ void *log_poll(log_t * me_)
const void *elem = &me->entries[me->front];
if (me->cb && me->cb->log_poll)
me->cb->log_poll(me->raft, raft_get_udata(me->raft),
&me->entries[me->front], me->front);
&me->entries[me->front], idx);
me->front++;
me->count--;
me->base++;
......
......@@ -20,6 +20,17 @@ void TestLog_new_is_empty(CuTest * tc)
CuAssertTrue(tc, 0 == log_count(l));
}
static int __log_offer(
raft_server_t* raft,
void *user_data,
raft_entry_t *entry,
int entry_idx
)
{
CuAssertIntEquals((CuTest*)raft, 1, entry_idx);
return 0;
}
void TestLog_append_is_not_empty(CuTest * tc)
{
void *l;
......@@ -28,6 +39,10 @@ void TestLog_append_is_not_empty(CuTest * tc)
e.id = 1;
l = log_new();
raft_cbs_t funcs = {
.log_offer = __log_offer
};
log_set_callbacks(l, &funcs, tc);
CuAssertTrue(tc, 0 == log_append_entry(l, &e));
CuAssertTrue(tc, 1 == log_count(l));
}
......
......@@ -270,7 +270,7 @@ static int __raft_logentry_offer(
int ety_idx
)
{
CuAssertIntEquals(udata, ety_idx, 0);
CuAssertIntEquals(udata, ety_idx, 1);
ety->data.buf = udata;
return 0;
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment