I have 411 records on my palm, database of evolution has just been cleaned up, every time I use Resync to copy all the palm records to evolution, some records will be lost, the number of missing records is randomly, maybe 4 or 10 and even more.
tried the lastest branch_08X cvs version, the same problem.

After some days tracing, the following is the tracing results

--- ---------------------------------------------------------------
--- evo_addr_seqcompl_cb enter, addr_mode=EVO_ADDR_MODE_MODIFIED
--- evo_addr_modify_next enter, conn->modify_no=3
--- evo_addr_modify_next obj->change_type=SYNC_OBJ_ADDED
--- evo_addr_modify_next call e_book_add_vcard, conn->modify_no=4
--- evo_addr_modify_next call e_book_add_vcard finish
--- evo_addr_modify_next leave
--- evo_addr_seqcompl_cb leave
--- evo_addr_seqcompl_cb enter, addr_mode=EVO_ADDR_MODE_GOT_CHANGE
--- evo_addr_seqcompl_cb leave
--- evo_addr_seqcompl_cb enter, addr_mode=EVO_ADDR_MODE_GOT_CHANGE
--- evo_addr_seqcompl_cb leave
--- evo_addr_change enter, change_type=SYNC_OBJ_ADDED addr_mode=EVO_ADDR_MODE_MODIFIED
--- evo_addr_change leave
--- evo_addr_change enter, change_type=SYNC_OBJ_ADDED addr_mode=EVO_ADDR_MODE_WAITING
--- evo_addr_change leave
--- evo_addr_change enter, change_type=SYNC_OBJ_ADDED addr_mode=EVO_ADDR_MODE_WAITING
--- evo_addr_change leave
--- evo_addr_add_cb enter, conn->modify_no=4
--- evo_addr_add_cb leave

>>> above tracing records are right, but the following records seems strange,
>>> the callback function evo_addr_seqcompl_cb of next record was called before evo_addr_add_cb
--- ---------------------------------------------------------------
--- evo_addr_seqcompl_cb enter, addr_mode=EVO_ADDR_MODE_MODIFIED
--- evo_addr_modify_next enter, conn->modify_no=4
--- evo_addr_modify_next obj->change_type=SYNC_OBJ_ADDED
--- evo_addr_modify_next call e_book_add_vcard, conn->modify_no=5
--- evo_addr_modify_next call e_book_add_vcard finish
--- evo_addr_modify_next leave
--- evo_addr_seqcompl_cb leave
--- evo_addr_seqcompl_cb enter, addr_mode=EVO_ADDR_MODE_GOT_CHANGE
--- evo_addr_seqcompl_cb leave
--- evo_addr_seqcompl_cb enter, addr_mode=EVO_ADDR_MODE_GOT_CHANGE
--- evo_addr_seqcompl_cb leave
--- evo_addr_change enter, change_type=SYNC_OBJ_ADDED addr_mode=EVO_ADDR_MODE_MODIFIED
--- evo_addr_change leave
--- evo_addr_change enter, change_type=SYNC_OBJ_ADDED addr_mode=EVO_ADDR_MODE_WAITING
--- evo_addr_change leave
--- evo_addr_change enter, change_type=SYNC_OBJ_ADDED addr_mode=EVO_ADDR_MODE_WAITING
--- evo_addr_change leave
--- ---------------------------------------------------------------
--- evo_addr_seqcompl_cb enter, addr_mode=EVO_ADDR_MODE_MODIFIED
--- evo_addr_modify_next enter, conn->modify_no=5
--- evo_addr_modify_next obj->change_type=SYNC_OBJ_ADDED
--- evo_addr_modify_next call e_book_add_vcard, conn->modify_no=6
--- evo_addr_modify_next call e_book_add_vcard finish
--- evo_addr_modify_next leave
--- evo_addr_seqcompl_cb leave
--- evo_addr_seqcompl_cb enter, addr_mode=EVO_ADDR_MODE_GOT_CHANGE
--- evo_addr_seqcompl_cb leave
--- evo_addr_seqcompl_cb enter, addr_mode=EVO_ADDR_MODE_GOT_CHANGE
--- evo_addr_seqcompl_cb leave
--- evo_addr_add_cb enter, conn->modify_no=6
--- evo_addr_add_cb leave
--- evo_addr_change enter, change_type=SYNC_OBJ_ADDED addr_mode=EVO_ADDR_MODE_MODIFIED
--- evo_addr_change leave
--- evo_addr_change enter, change_type=SYNC_OBJ_ADDED addr_mode=EVO_ADDR_MODE_WAITING
--- evo_addr_change leave
--- evo_addr_change enter, change_type=SYNC_OBJ_ADDED addr_mode=EVO_ADDR_MODE_WAITING
--- evo_addr_change leave
--- evo_addr_add_cb enter, conn->modify_no=6
--- evo_addr_add_cb result->returnuid != NULL
--- evo_addr_add_cb leave

seems that the function e_book_add_vcard will accumulate the call to evo_addr_add_cb.
any ideas ?

Reply via email to